Merge pull request #9978 from ahoppen/pdm-remove-implicit-conversion

Remove implicit conversion from DeclBaseName to Identifier
diff --git a/.gitignore b/.gitignore
index 6b9ce48..74aa31b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,3 +51,5 @@
 8
 4
 SortedCFDatabase.def
+htmlcov
+.coverage
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c7650aa..26f4590 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -252,6 +252,10 @@
     "Check if incremental compilation works when compiling the Swift libraries"
     FALSE)
 
+option(SWIFT_REPORT_STATISTICS
+    "Create json files which contain internal compilation statistics"
+    FALSE)
+
 #
 # User-configurable experimental options.  Do not use in production builds.
 #
@@ -273,10 +277,6 @@
     "Build the standard libraries and overlays with resilience enabled; see docs/LibraryEvolution.rst"
     FALSE)
 
-option(SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
-    "Build the runtime with a copy-on-write implementation for opaque existentials"
-    TRUE)
-
 option(SWIFT_STDLIB_USE_NONATOMIC_RC
     "Build the standard libraries and overlays with nonatomic reference count operations enabled"
     FALSE)
diff --git a/README.md b/README.md
index a29b10e..062adf0 100644
--- a/README.md
+++ b/README.md
@@ -54,11 +54,11 @@
 macOS, Ubuntu Linux LTS, and the latest Ubuntu Linux release are the current
 supported host development operating systems.
 
-For macOS, you need [Xcode 8.3.2](https://developer.apple.com/xcode/downloads/).
+For macOS, you need [Xcode 9.0 beta 1](https://developer.apple.com/xcode/downloads/).
 
 For Ubuntu, you'll need the following development dependencies:
 
-    sudo apt-get install git cmake ninja-build clang python uuid-dev libicu-dev icu-devtools libbsd-dev libedit-dev libxml2-dev libsqlite3-dev swig libpython-dev libncurses5-dev pkg-config libblocksruntime-dev libcurl4-openssl-dev autoconf libtool systemtap-sdt-dev
+    sudo apt-get install git cmake ninja-build clang python uuid-dev libicu-dev icu-devtools libbsd-dev libedit-dev libxml2-dev libsqlite3-dev swig libpython-dev libncurses5-dev pkg-config libblocksruntime-dev libcurl4-openssl-dev autoconf libtool systemtap-sdt-dev tzdata
 
 **Note:** LLDB currently requires at least `swig-1.3.40` but will successfully build
 with version 2 shipped with Ubuntu.
diff --git a/apinotes/Accelerate.apinotes b/apinotes/Accelerate.apinotes
new file mode 100644
index 0000000..12e48ef
--- /dev/null
+++ b/apinotes/Accelerate.apinotes
@@ -0,0 +1,61 @@
+Name: Accelerate
+Enumerators:
+- Name: BNNSDataTypeFloatBit
+  Availability: nonswift
+- Name: BNNSDataTypeIntBit
+  Availability: nonswift
+- Name: BNNSDataTypeUIntBit
+  Availability: nonswift
+- Name: BNNSDataTypeIndexedBit
+  Availability: nonswift
+- Name: BNNSDataTypeFloat16
+  SwiftPrivate: true
+- Name: BNNSDataTypeFloat32
+  SwiftPrivate: true
+- Name: BNNSDataTypeInt8
+  SwiftPrivate: true
+- Name: BNNSDataTypeInt16
+  SwiftPrivate: true
+- Name: BNNSDataTypeInt32
+  SwiftPrivate: true
+- Name: BNNSDataTypeUInt8
+  SwiftPrivate: true
+- Name: BNNSDataTypeUInt16
+  SwiftPrivate: true
+- Name: BNNSDataTypeUInt32
+  SwiftPrivate: true
+- Name: BNNSDataTypeIndexed8
+  SwiftPrivate: true
+
+- Name: BNNSPoolingFunctionMax
+  SwiftPrivate: true
+- Name: BNNSPoolingFunctionAverage
+  SwiftPrivate: true
+
+- Name: BNNSActivationFunctionIdentity
+  SwiftPrivate: true
+- Name: BNNSActivationFunctionRectifiedLinear
+  SwiftPrivate: true
+- Name: BNNSActivationFunctionLeakyRectifiedLinear
+  SwiftPrivate: true
+- Name: BNNSActivationFunctionSigmoid
+  SwiftPrivate: true
+- Name: BNNSActivationFunctionTanh
+  SwiftPrivate: true
+- Name: BNNSActivationFunctionScaledTanh
+  SwiftPrivate: true
+- Name: BNNSActivationFunctionAbs
+  SwiftPrivate: true
+- Name: BNNSActivationFunctionLinear
+  SwiftPrivate: true
+- Name: BNNSActivationFunctionClamp
+  SwiftPrivate: true
+- Name: BNNSActivationFunctionIntegerLinearSaturate
+  SwiftPrivate: true
+- Name: BNNSActivationFunctionIntegerLinearSaturatePerChannel
+  SwiftPrivate: true
+- Name: BNNSActivationFunctionSoftmax
+  SwiftPrivate: true
+
+- Name: BNNSFlagsUseClientPtr
+  SwiftPrivate: true
diff --git a/apinotes/CMakeLists.txt b/apinotes/CMakeLists.txt
index 5fe73a7..907b835 100644
--- a/apinotes/CMakeLists.txt
+++ b/apinotes/CMakeLists.txt
@@ -1,4 +1,5 @@
 set(SWIFT_API_NOTES_INPUTS
+  Accelerate
   AVFoundation
   AVKit
   AppKit
diff --git a/apinotes/Dispatch.apinotes b/apinotes/Dispatch.apinotes
index 6bcf59c..50aa61f 100644
--- a/apinotes/Dispatch.apinotes
+++ b/apinotes/Dispatch.apinotes
@@ -91,6 +91,8 @@
   SwiftName: DispatchSourceUserDataOr
 - Name: OS_dispatch_source_data_add
   SwiftName: DispatchSourceUserDataAdd
+- Name: OS_dispatch_source_data_replace
+  SwiftName: DispatchSourceUserDataReplace
 - Name: OS_dispatch_source_vnode
   SwiftName: DispatchSourceFileSystemObject
 - Name: OS_dispatch_source_write
diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt
index d612937..2d97f02 100644
--- a/benchmark/CMakeLists.txt
+++ b/benchmark/CMakeLists.txt
@@ -40,6 +40,7 @@
     single-source/DictTest2
     single-source/DictTest3
     single-source/DictionaryBridge
+    single-source/DictionaryGroup
     single-source/DictionaryLiteral
     single-source/DictionaryRemove
     single-source/DictionarySwap
diff --git a/benchmark/README.md b/benchmark/README.md
index 31d88e5..cd5b462 100644
--- a/benchmark/README.md
+++ b/benchmark/README.md
@@ -90,9 +90,17 @@
 
 ### Examples
 
-1. `$ ./Benchmark_O --num-iters=1 --num-samples=1`
-2. `$ ./Benchmark_Onone --list`
-3. `$ ./Benchmark_Ounchecked Ackermann`
+* `$ ./Benchmark_O --num-iters=1 --num-samples=1`
+* `$ ./Benchmark_Onone --list`
+* `$ ./Benchmark_Ounchecked Ackermann`
+
+### Note
+As a shortcut, you can also refer to benchmarks by their ordinal numbers.
+The regular `--list` option does not provide these, but you can run:
+* `$ ./Benchmark_O --list --run-all | tail -n +2 | nl`
+You can use ordinal numbers instead of test names like this:
+* `$ ./Benchmark_O 1 42`
+* `$ ./Benchmark_Driver run 1 42`
 
 Using the Harness Generator
 ---------------------------
diff --git a/benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake b/benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake
index 68dd2f6..969994d 100644
--- a/benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake
+++ b/benchmark/cmake/modules/AddSwiftBenchmarkSuite.cmake
@@ -48,7 +48,6 @@
       "-target" "${target}"
       "-F" "${sdk}/../../../Developer/Library/Frameworks"
       "-${BENCH_COMPILE_ARCHOPTS_OPT}"
-      "-D" "INTERNAL_CHECKS_ENABLED"
       "-no-link-objc-runtime"
       "-I" "${srcdir}/utils/ObjectiveCTests")
 
@@ -63,7 +62,6 @@
       "-target" "${target}"
       "-F" "${sdk}/../../../Developer/Library/Frameworks"
       "-${driver_opt}"
-      "-D" "INTERNAL_CHECKS_ENABLED"
       "-no-link-objc-runtime")
 
   set(bench_library_objects)
diff --git a/benchmark/scripts/Benchmark_Driver b/benchmark/scripts/Benchmark_Driver
index f4f8343..55c790e 100755
--- a/benchmark/scripts/Benchmark_Driver
+++ b/benchmark/scripts/Benchmark_Driver
@@ -120,7 +120,11 @@
 
 def get_tests(driver_path, args):
     """Return a list of available performance tests"""
-    tests = subprocess.check_output([driver_path, '--list']).split()[2:]
+    driver = ([driver_path, '--list'])
+    if args.benchmarks or args.filters:
+        driver.append('--run-all')
+    tests = subprocess.check_output(driver).split()[2:]
+    tests.extend(map(str, range(1, len(tests) + 1)))  # ordinal numbers
     if args.filters:
         regexes = [re.compile(pattern) for pattern in args.filters]
         return sorted(list(set([name for pattern in regexes
@@ -285,39 +289,44 @@
     log_dir = args.log_dir
     swift_repo = args.swift_repo
     compare_script = args.compare_script
+    baseline_branch = args.baseline_branch
     current_branch = get_current_git_branch(swift_repo)
     current_branch_dir = os.path.join(log_dir, current_branch)
-    master_branch_dir = os.path.join(log_dir, 'master')
+    baseline_branch_dir = os.path.join(log_dir, baseline_branch)
 
-    if current_branch != 'master' and not os.path.isdir(master_branch_dir):
-        print('Unable to find benchmark logs for master branch. Set a ' +
-              'baseline benchmark log by passing --benchmark to ' +
-              'build-script while on master branch.')
+    if current_branch != baseline_branch and \
+       not os.path.isdir(baseline_branch_dir):
+        print(('Unable to find benchmark logs for {baseline_branch} branch. ' +
+               'Set a baseline benchmark log by passing --benchmark to ' +
+               'build-script while on {baseline_branch} branch.')
+              .format(baseline_branch=baseline_branch))
         return 1
 
     recent_logs = {}
-    for branch_dir in [current_branch_dir, master_branch_dir]:
+    for branch_dir in [current_branch_dir, baseline_branch_dir]:
         for opt in ['O', 'Onone']:
             recent_logs[os.path.basename(branch_dir) + '_' + opt] = sorted(
                 glob.glob(os.path.join(
                     branch_dir, 'Benchmark_' + opt + '-*.log')),
                 key=os.path.getctime, reverse=True)
 
-    if current_branch == 'master':
-        if len(recent_logs['master_O']) > 1 and \
-           len(recent_logs['master_Onone']) > 1:
+    if current_branch == baseline_branch:
+        if len(recent_logs[baseline_branch + '_O']) > 1 and \
+           len(recent_logs[baseline_branch + '_Onone']) > 1:
             compare_logs(compare_script,
-                         recent_logs['master_O'][0],
-                         recent_logs['master_O'][1],
+                         recent_logs[baseline_branch + '_O'][0],
+                         recent_logs[baseline_branch + '_O'][1],
                          log_dir, 'O')
             compare_logs(compare_script,
-                         recent_logs['master_Onone'][0],
-                         recent_logs['master_Onone'][1],
+                         recent_logs[baseline_branch + '_Onone'][0],
+                         recent_logs[baseline_branch + '_Onone'][1],
                          log_dir, 'Onone')
         else:
-            print('master/master comparison skipped: no previous master logs')
+            print(('{baseline_branch}/{baseline_branch} comparison ' +
+                   'skipped: no previous {baseline_branch} logs')
+                  .format(baseline_branch=baseline_branch))
     else:
-        # TODO: Check for outdated master branch log
+        # TODO: Check for outdated baseline branch log
         if len(recent_logs[current_branch + '_O']) == 0 or \
            len(recent_logs[current_branch + '_Onone']) == 0:
             print('branch sanity failure: missing branch logs')
@@ -336,18 +345,20 @@
                          recent_logs[current_branch + '_Onone'][1],
                          log_dir, 'Onone')
 
-        if len(recent_logs['master_O']) == 0 or \
-           len(recent_logs['master_Onone']) == 0:
-            print('branch/master failure: no master logs')
+        if len(recent_logs[baseline_branch + '_O']) == 0 or \
+           len(recent_logs[baseline_branch + '_Onone']) == 0:
+            print(('branch/{baseline_branch} failure: no {baseline_branch} ' +
+                   'logs')
+                  .format(baseline_branch=baseline_branch))
             return 1
         else:
             compare_logs(compare_script,
                          recent_logs[current_branch + '_O'][0],
-                         recent_logs['master_O'][0],
+                         recent_logs[baseline_branch + '_O'][0],
                          log_dir, 'O')
             compare_logs(compare_script,
                          recent_logs[current_branch + '_Onone'][0],
-                         recent_logs['master_Onone'][0],
+                         recent_logs[baseline_branch + '_Onone'][0],
                          log_dir, 'Onone')
 
         # TODO: Fail on large regressions
@@ -443,6 +454,10 @@
     compare_parser.add_argument(
         '--compare-script', required=True,
         help='absolute path to compare script')
+    compare_parser.add_argument(
+        '--baseline-branch', default='master',
+        help='attempt to compare results to baseline results for specified '
+             'branch (default: master)')
     compare_parser.set_defaults(func=compare)
 
     args = parser.parse_args()
diff --git a/benchmark/scripts/compare_perf_tests.py b/benchmark/scripts/compare_perf_tests.py
index 8f63636..d99a6e2 100755
--- a/benchmark/scripts/compare_perf_tests.py
+++ b/benchmark/scripts/compare_perf_tests.py
@@ -21,8 +21,22 @@
 from math import sqrt
 
 
-class PerformanceTestResult:
+class PerformanceTestResult(object):
+    """PerformanceTestResult holds results from executing an individual
+    benchmark from the Swift Benchmark Suite as reported by the test driver
+    (Benchmark_O, Benchmark_Onone, Benchmark_Ounchecked or Benchmark_Driver).
+
+    It depends on the log format emitted by the test driver in the form:
+    #,TEST,SAMPLES,MIN(μs),MAX(μs),MEAN(μs),SD(μs),MEDIAN(μs),MAX_RSS(B)
+
+    The last column, MAX_RSS, is emitted only for runs instrumented by the
+    Benchmark_Driver to measure rough memory use during the execution of the
+    benchmark.
+    """
     def __init__(self, csv_row):
+        """PerformanceTestResult instance is created from an iterable with
+        length of 8 or 9. (Like a row provided by the CSV parser.)
+        """
         # csv_row[0] is just an ordinal number of the test - skip that
         self.name = csv_row[1]          # Name of the performance test
         self.samples = int(csv_row[2])  # Number of measurement samples taken
@@ -36,25 +50,41 @@
         self.median = int(csv_row[7])   # Median runtime (ms)
         self.max_rss = (                # Maximum Resident Set Size (B)
             int(csv_row[8]) if len(csv_row) > 8 else None)
-        # TODO if we really want to compute mean MAX_RSS: self.S_memory
+
+    def __repr__(self):
+        return (
+            '<PerformanceTestResult name:{0.name!r} '
+            'samples:{0.samples!r} min:{0.min!r} max:{0.max!r} '
+            'mean:{0.mean!r} sd:{0.sd!r} median:{0.median!r}>'.format(self))
 
     @property
-    def sd(self):  # Standard Deviation (ms)
+    def sd(self):
+        """Standard Deviation (ms)"""
         return (0 if self.samples < 2 else
                 sqrt(self.S_runtime / (self.samples - 1)))
 
-    # Compute running variance, B. P. Welford's method
-    # See Knuth TAOCP vol 2, 3rd edition, page 232, or
-    # https://www.johndcook.com/blog/standard_deviation/
-    # M is mean, Standard Deviation is defined as sqrt(S/k-1)
     @staticmethod
     def running_mean_variance((k, M_, S_), x):
+        """
+        Compute running variance, B. P. Welford's method
+        See Knuth TAOCP vol 2, 3rd edition, page 232, or
+        https://www.johndcook.com/blog/standard_deviation/
+        M is mean, Standard Deviation is defined as sqrt(S/k-1)
+        """
         k = float(k + 1)
         M = M_ + (x - M_) / k
         S = S_ + (x - M_) * (x - M)
         return (k, M, S)
 
     def merge(self, r):
+        """Merging test results recomputes min and max.
+        It attempts to recompute mean and standard deviation when all_samples
+        are available. There is no correct way to compute these values from
+        test results that are summaries from more than 3 samples.
+
+        The use case here is comparing tests results parsed from concatenated
+        log files from multiple runs of benchmark driver.
+        """
         self.min = min(self.min, r.min)
         self.max = max(self.max, r.max)
         # self.median = None # unclear what to do here
@@ -65,23 +95,31 @@
             (self.samples, self.mean, self.S_runtime) = state
 
         # Merging test results with up to 3 samples is exact
-        # TODO investigate how to best handle merge of higher sample counts
-        values = [r.min, r.max, r.median, r.mean][:min(r.samples, 4)]
+        values = [r.min, r.max, r.median][:min(r.samples, 3)]
         map(push, values)
 
+    # Column labels for header row in results table
     header = ('TEST', 'MIN', 'MAX', 'MEAN', 'MAX_RSS')
 
-    # Tuple of values formatted for display in results table:
-    # (name, min value, max value, mean value, max_rss)
     def values(self):
-        return (self.name, str(self.min), str(self.max), str(int(self.mean)),
-                str(self.max_rss) if self.max_rss else '-')
+        """Values property for display in results table comparisons
+        in format: ('TEST', 'MIN', 'MAX', 'MEAN', 'MAX_RSS').
+        """
+        return (
+            self.name,
+            str(self.min), str(self.max), str(int(self.mean)),
+            str(self.max_rss) if self.max_rss else '—'
+        )
 
 
-class ResultComparison:
+class ResultComparison(object):
+    """ResultComparison compares MINs from new and old PerformanceTestResult.
+    It computes speedup ratio and improvement delta (%).
+    """
     def __init__(self, old, new):
         self.old = old
         self.new = new
+        assert(old.name == new.name)
         self.name = old.name  # Test name, convenience accessor
 
         # Speedup ratio
@@ -91,27 +129,43 @@
         ratio = (new.min + 0.001) / (old.min + 0.001)
         self.delta = ((ratio - 1) * 100)
 
-        self.is_dubious = (  # FIXME this is legacy
+        # Add ' (?)' to the speedup column as indication of dubious changes:
+        # result's MIN falls inside the (MIN, MAX) interval of result they are
+        # being compared with.
+        self.is_dubious = (
             ' (?)' if ((old.min < new.min and new.min < old.max) or
                        (new.min < old.min and old.min < new.max))
             else '')
 
+    # Column labels for header row in results table
     header = ('TEST', 'OLD', 'NEW', 'DELTA', 'SPEEDUP')
 
-    # Tuple of values formatted for display in results table:
-    # (name, old value, new value, delta [%], speedup ratio)
     def values(self):
-        return (self.name, str(self.old.min), str(self.new.min),
+        """Values property for display in results table comparisons
+        in format: ('TEST', 'OLD', 'NEW', 'DELTA', 'SPEEDUP').
+        """
+        return (self.name,
+                str(self.old.min), str(self.new.min),
                 '{0:+.1f}%'.format(self.delta),
                 '{0:.2f}x{1}'.format(self.ratio, self.is_dubious))
 
 
-class TestComparator:
-    def __init__(self, old_file, new_file, delta_threshold, changes_only):
+class TestComparator(object):
+    """TestComparator parses `PerformanceTestResult`s from CSV log files.
+    Then it determines which tests were `added`, `removed` and which can be
+    compared. It then splits the `ResultComparison`s into 3 groups according to
+    the `delta_threshold` by the change in performance: `increased`,
+    `descreased` and `unchanged`.
+
+    The lists of `added`, `removed` and `unchanged` tests are sorted
+    alphabetically. The `increased` and `decreased` lists are sorted in
+    descending order by the amount of change.
+    """
+    def __init__(self, old_file, new_file, delta_threshold):
 
         def load_from_CSV(filename):  # handles output from Benchmark_O and
             def skip_totals(row):     # Benchmark_Driver (added MAX_RSS column)
-                        return len(row) > 7 and row[0].isdigit()
+                return len(row) > 7 and row[0].isdigit()
             tests = map(PerformanceTestResult,
                         filter(skip_totals, csv.reader(open(filename))))
 
@@ -131,9 +185,9 @@
         added_tests = new_tests.difference(old_tests)
         removed_tests = old_tests.difference(new_tests)
 
-        self.added = sorted(map(lambda t: new_results[t], added_tests),
+        self.added = sorted([new_results[t] for t in added_tests],
                             key=lambda r: r.name)
-        self.removed = sorted(map(lambda t: old_results[t], removed_tests),
+        self.removed = sorted([old_results[t] for t in removed_tests],
                               key=lambda r: r.name)
 
         def compare(name):
@@ -144,24 +198,28 @@
         def partition(l, p):
             return reduce(lambda x, y: x[not p(y)].append(y) or x, l, ([], []))
 
-        # TODO take standard deviation (SD) into account
         decreased, not_decreased = partition(
             comparisons, lambda c: c.ratio < (1 - delta_threshold))
         increased, unchanged = partition(
             not_decreased, lambda c: c.ratio > (1 + delta_threshold))
 
         # sorted partitions
-        names = map(lambda c: c.name, comparisons)
+        names = [c.name for c in comparisons]
         comparisons = dict(zip(names, comparisons))
-        self.decreased = map(lambda c: comparisons[c.name],
-                             sorted(decreased, key=lambda c: -c.delta))
-        self.increased = map(lambda c: comparisons[c.name],
-                             sorted(increased, key=lambda c: c.delta))
-        self.unchanged = map(lambda c: comparisons[c.name],
-                             sorted(unchanged, key=lambda c: c.name))
+        self.decreased = [comparisons[c.name]
+                          for c in sorted(decreased, key=lambda c: -c.delta)]
+        self.increased = [comparisons[c.name]
+                          for c in sorted(increased, key=lambda c: c.delta)]
+        self.unchanged = [comparisons[c.name]
+                          for c in sorted(unchanged, key=lambda c: c.name)]
 
 
-class ReportFormatter:
+class ReportFormatter(object):
+    """ReportFormatter formats the `PerformanceTestResult`s and
+    `ResultComparison`s provided by `TestComparator` using their `header` and
+    `values()` into report table. Supported formats are: `markdown` (used for
+    displaying benchmark results on GitHub), `git` and `html`.
+    """
     def __init__(self, comparator, old_branch, new_branch, changes_only):
         self.comparator = comparator
         self.old_branch = old_branch
@@ -178,38 +236,39 @@
 {0} ({1}): {2}"""
 
     def markdown(self):
-        return self.__formatted_text(
+        return self._formatted_text(
             ROW='{0} | {1} | {2} | {3} | {4} \n',
             HEADER_SEPARATOR='---',
             DETAIL=self.MARKDOWN_DETAIL)
 
     def git(self):
-        return self.__formatted_text(
+        return self._formatted_text(
             ROW='{0}   {1}   {2}   {3}   {4} \n',
             HEADER_SEPARATOR='   ',
             DETAIL=self.GIT_DETAIL)
 
-    def __column_widths(self):
+    def _column_widths(self):
         changed = self.comparator.decreased + self.comparator.increased
         comparisons = (changed if self.changes_only else
                        changed + self.comparator.unchanged)
         comparisons += self.comparator.added + self.comparator.removed
 
-        values = map(lambda c: c.values(), comparisons)
-        widths = map(lambda columns: map(len, columns),
-                     [PerformanceTestResult.header, ResultComparison.header] +
-                     values)
+        widths = [
+            map(len, columns) for columns in
+            [PerformanceTestResult.header, ResultComparison.header] +
+            [c.values() for c in comparisons]
+        ]
 
         def max_widths(maximum, widths):
             return tuple(map(max, zip(maximum, widths)))
 
         return reduce(max_widths, widths, tuple([0] * 5))
 
-    def __formatted_text(self, ROW, HEADER_SEPARATOR, DETAIL):
-        widths = self.__column_widths()
+    def _formatted_text(self, ROW, HEADER_SEPARATOR, DETAIL):
+        widths = self._column_widths()
 
         def justify_columns(contents):
-            return tuple(map(lambda (w, c): c.ljust(w), zip(widths, contents)))
+            return tuple([c.ljust(w) for w, c in zip(widths, contents)])
 
         def row(contents):
             return ROW.format(*justify_columns(contents))
@@ -318,8 +377,8 @@
             ]))
 
 
-def main():
-
+def parse_args(args):
+    """Parse command line arguments and set default values."""
     parser = argparse.ArgumentParser(description='Compare Performance tests.')
     parser.add_argument('--old-file',
                         help='Baseline performance test suite (csv file)',
@@ -339,42 +398,29 @@
     parser.add_argument('--old-branch',
                         help='Name of the old branch', default='OLD_MIN')
     parser.add_argument('--delta-threshold',
-                        help='Delta threshold. Default 0.05.', default='0.05')
+                        help='Delta threshold. Default 0.05.',
+                        type=float, default=0.05)
+    return parser.parse_args(args)
 
-    args = parser.parse_args()
+
+def main():
+    args = parse_args(sys.argv[1:])
     comparator = TestComparator(args.old_file, args.new_file,
-                                float(args.delta_threshold), args.changes_only)
+                                args.delta_threshold)
     formatter = ReportFormatter(comparator, args.old_branch, args.new_branch,
                                 args.changes_only)
+    formats = {
+        'markdown': formatter.markdown,
+        'git': formatter.git,
+        'html': formatter.html
+    }
 
-    if args.format:
-        if args.format.lower() != 'markdown':
-            print(formatter.git())
-        else:
-            print(formatter.markdown())
+    report = formats[args.format]()
+    print(report)
 
-    if args.format:
-        if args.format.lower() == 'html':
-            if args.output:
-                write_to_file(args.output, formatter.html())
-            else:
-                print('Error: missing --output flag.')
-                sys.exit(1)
-        elif args.format.lower() == 'markdown':
-            if args.output:
-                write_to_file(args.output, formatter.markdown())
-        elif args.format.lower() != 'git':
-            print('{0} is unknown format.'.format(args.format))
-            sys.exit(1)
-
-
-def write_to_file(file_name, data):
-    """
-    Write data to given file
-    """
-    file = open(file_name, 'w')
-    file.write(data)
-    file.close
+    if args.output:
+        with open(args.output, 'w') as f:
+            f.write(report)
 
 
 if __name__ == '__main__':
diff --git a/benchmark/scripts/test_compare_perf_tests.py b/benchmark/scripts/test_compare_perf_tests.py
new file mode 100644
index 0000000..fc7f4e4
--- /dev/null
+++ b/benchmark/scripts/test_compare_perf_tests.py
@@ -0,0 +1,531 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# ===--- test_compare_perf_tests.py --------------------------------------===//
+#
+#  This source file is part of the Swift.org open source project
+#
+#  Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+#  Licensed under Apache License v2.0 with Runtime Library Exception
+#
+#  See https://swift.org/LICENSE.txt for license information
+#  See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+#
+# ===---------------------------------------------------------------------===//
+
+import os
+import shutil
+import sys
+import tempfile
+import unittest
+
+from StringIO import StringIO
+from contextlib import contextmanager
+
+from compare_perf_tests import PerformanceTestResult
+from compare_perf_tests import ReportFormatter
+from compare_perf_tests import ResultComparison
+from compare_perf_tests import TestComparator
+from compare_perf_tests import main
+from compare_perf_tests import parse_args
+
+
+@contextmanager
+def captured_output():
+    new_out, new_err = StringIO(), StringIO()
+    old_out, old_err = sys.stdout, sys.stderr
+    try:
+        sys.stdout, sys.stderr = new_out, new_err
+        yield sys.stdout, sys.stderr
+    finally:
+        sys.stdout, sys.stderr = old_out, old_err
+
+
+class TestPerformanceTestResult(unittest.TestCase):
+
+    def test_init(self):
+        log_line = '1,AngryPhonebook,20,10664,12933,11035,576,10884'
+        r = PerformanceTestResult(log_line.split(','))
+        self.assertEquals(r.name, 'AngryPhonebook')
+        self.assertEquals((r.samples, r.min, r.max, r.mean, r.sd, r.median),
+                          (20, 10664, 12933, 11035, 576, 10884))
+
+        log_line = '1,AngryPhonebook,1,12045,12045,12045,0,12045,10510336'
+        r = PerformanceTestResult(log_line.split(','))
+        self.assertEquals(r.max_rss, 10510336)
+
+    def test_repr(self):
+        log_line = '1,AngryPhonebook,20,10664,12933,11035,576,10884'
+        r = PerformanceTestResult(log_line.split(','))
+        self.assertEquals(
+            str(r),
+            '<PerformanceTestResult name:\'AngryPhonebook\' samples:20 '
+            'min:10664 max:12933 mean:11035 sd:576.0 median:10884>'
+        )
+
+    def test_header(self):
+        self.assertEquals(PerformanceTestResult.header,
+                          ('TEST', 'MIN', 'MAX', 'MEAN', 'MAX_RSS'))
+
+    def test_values(self):
+        log_line = '1,AngryPhonebook,20,10664,12933,11035,576,10884'
+        r = PerformanceTestResult(log_line.split(','))
+        self.assertEquals(
+            r.values(),
+            ('AngryPhonebook', '10664', '12933', '11035', '—')
+        )
+        log_line = '1,AngryPhonebook,1,12045,12045,12045,0,12045,10510336'
+        r = PerformanceTestResult(log_line.split(','))
+        self.assertEquals(
+            r.values(),
+            ('AngryPhonebook', '12045', '12045', '12045', '10510336')
+        )
+
+    def test_merge(self):
+        tests = """1,AngryPhonebook,1,12045,12045,12045,0,12045,10510336
+1,AngryPhonebook,1,12325,12325,12325,0,12325,10510336
+1,AngryPhonebook,1,11616,11616,11616,0,11616,10502144
+1,AngryPhonebook,1,12270,12270,12270,0,12270,10498048""".split('\n')
+        results = map(PerformanceTestResult,
+                      [line.split(',') for line in tests])
+
+        def as_tuple(r):
+            return (r.min, r.max, round(r.mean, 2), round(r.sd, 2), r.median,
+                    r.max_rss)
+
+        r = results[0]
+        self.assertEquals(as_tuple(r),
+                          (12045, 12045, 12045, 0, 12045, 10510336))
+        r.merge(results[1])
+        self.assertEquals(as_tuple(r),
+                          (12045, 12325, 12185, 197.99, 12045, 10510336))
+        r.merge(results[2])
+        self.assertEquals(as_tuple(r),
+                          (11616, 12325, 11995.33, 357.10, 12045, 10510336))
+        r.merge(results[3])
+        self.assertEquals(as_tuple(r),
+                          (11616, 12325, 12064, 322.29, 12045, 10510336))
+
+
+class TestResultComparison(unittest.TestCase):
+    def setUp(self):
+        self.r0 = PerformanceTestResult(
+            '101,GlobalClass,20,0,0,0,0,0,10185728'.split(','))
+        self.r01 = PerformanceTestResult(
+            '101,GlobalClass,20,20,20,20,0,0,10185728'.split(','))
+        self.r1 = PerformanceTestResult(
+            '1,AngryPhonebook,1,12325,12325,12325,0,12325,10510336'.split(','))
+        self.r2 = PerformanceTestResult(
+            '1,AngryPhonebook,1,11616,11616,11616,0,11616,10502144'.split(','))
+
+    def test_init(self):
+        rc = ResultComparison(self.r1, self.r2)
+        self.assertEquals(rc.name, 'AngryPhonebook')
+        self.assertAlmostEquals(rc.ratio, 12325.0 / 11616.0)
+        self.assertAlmostEquals(rc.delta, (((11616.0 / 12325.0) - 1) * 100),
+                                places=3)
+        # handle test results that sometimes change to zero, when compiler
+        # optimizes out the body of the incorrectly written test
+        rc = ResultComparison(self.r0, self.r0)
+        self.assertEquals(rc.name, 'GlobalClass')
+        self.assertAlmostEquals(rc.ratio, 1)
+        self.assertAlmostEquals(rc.delta, 0, places=3)
+        rc = ResultComparison(self.r0, self.r01)
+        self.assertAlmostEquals(rc.ratio, 0, places=3)
+        self.assertAlmostEquals(rc.delta, 2000000, places=3)
+        rc = ResultComparison(self.r01, self.r0)
+        self.assertAlmostEquals(rc.ratio, 20001)
+        self.assertAlmostEquals(rc.delta, -99.995, places=3)
+        # disallow comparison of different test results
+        self.assertRaises(
+            AssertionError,
+            ResultComparison, self.r0, self.r1
+        )
+
+    def test_header(self):
+        self.assertEquals(ResultComparison.header,
+                          ('TEST', 'OLD', 'NEW', 'DELTA', 'SPEEDUP'))
+
+    def test_values(self):
+        rc = ResultComparison(self.r1, self.r2)
+        self.assertEquals(
+            rc.values(),
+            ('AngryPhonebook', '12325', '11616', '-5.8%', '1.06x')
+        )
+        # other way around
+        rc = ResultComparison(self.r2, self.r1)
+        self.assertEquals(
+            rc.values(),
+            ('AngryPhonebook', '11616', '12325', '+6.1%', '0.94x')
+        )
+
+    def test_values_is_dubious(self):
+        self.r2.max = self.r1.min + 1
+        # new.min < old.min < new.max
+        rc = ResultComparison(self.r1, self.r2)
+        self.assertEquals(rc.values()[4], '1.06x (?)')
+        # other way around: old.min < new.min < old.max
+        rc = ResultComparison(self.r2, self.r1)
+        self.assertEquals(rc.values()[4], '0.94x (?)')
+
+
+class OldAndNewLog(unittest.TestCase):
+    def setUp(self):
+        # Create a temporary directory
+        self.test_dir = tempfile.mkdtemp()
+
+        self.old_log = self.write_temp_file('old.log', """
+1,AngryPhonebook,20,10458,12714,11000,0,11000,10204365
+2,AnyHashableWithAClass,20,247027,319065,259056,0,259056,10250445
+3,Array2D,20,335831,400221,346622,0,346622,28297216
+4,ArrayAppend,20,23641,29000,24990,0,24990,11149926
+34,BitCount,20,3,4,4,0,4,10192896
+35,ByteSwap,20,4,6,4,0,4,10185933
+
+Totals,269,67351871,70727022,68220188,0,0,0
+""")
+        # Log lines are deliberately in descending sort order in order to test
+        # the ordering of the comparison results.
+        # ArrayAppend is included twice to test results merging.
+        self.new_log = self.write_temp_file('new.log', """
+265,TwoSum,20,5006,5679,5111,0,5111
+35,ByteSwap,20,0,0,0,0,0
+34,BitCount,20,9,9,9,0,9
+4,ArrayAppend,20,23641,29000,24990,0,24990
+3,Array2D,20,335831,400221,346622,0,346622
+1,AngryPhonebook,20,10458,12714,11000,0,11000
+
+Totals,269,67351871,70727022,68220188,0,0,0
+4,ArrayAppend,1,20000,20000,20000,0,20000
+
+Totals,1,20000,20000,20000,0,0,0
+""")
+
+    def tearDown(self):
+        # Remove the directory after the test
+        shutil.rmtree(self.test_dir)
+
+    def write_temp_file(self, file_name, data):
+        temp_file_name = os.path.join(self.test_dir, file_name)
+        with open(temp_file_name, 'w') as f:
+            f.write(data)
+        return temp_file_name
+
+    def assert_report_contains(self, texts, report):
+        assert not isinstance(texts, str)
+        for text in texts:
+            self.assertIn(text, report)
+
+
+class TestTestComparator(OldAndNewLog):
+    def test_init(self):
+        old_log, new_log = self.old_log, self.new_log
+
+        def names(tests):
+            return [t.name for t in tests]
+
+        tc = TestComparator(old_log, new_log, 0.05)
+        self.assertEquals(names(tc.unchanged), ['AngryPhonebook', 'Array2D'])
+        self.assertEquals(names(tc.increased), ['ByteSwap', 'ArrayAppend'])
+        self.assertEquals(names(tc.decreased), ['BitCount'])
+        self.assertEquals(names(tc.added), ['TwoSum'])
+        self.assertEquals(names(tc.removed), ['AnyHashableWithAClass'])
+        # other way around
+        tc = TestComparator(new_log, old_log, 0.05)
+        self.assertEquals(names(tc.unchanged), ['AngryPhonebook', 'Array2D'])
+        self.assertEquals(names(tc.increased), ['BitCount'])
+        self.assertEquals(names(tc.decreased), ['ByteSwap', 'ArrayAppend'])
+        self.assertEquals(names(tc.added), ['AnyHashableWithAClass'])
+        self.assertEquals(names(tc.removed), ['TwoSum'])
+        # delta_threshold determines the sorting into change groups;
+        # report only change above 100% (ByteSwap's runtime went to 0):
+        tc = TestComparator(old_log, new_log, 1)
+        self.assertEquals(
+            names(tc.unchanged),
+            ['AngryPhonebook', 'Array2D', 'ArrayAppend', 'BitCount']
+        )
+        self.assertEquals(names(tc.increased), ['ByteSwap'])
+        self.assertEquals(tc.decreased, [])
+
+
+class TestReportFormatter(OldAndNewLog):
+    def setUp(self):
+        super(TestReportFormatter, self).setUp()
+        self.tc = TestComparator(self.old_log, self.new_log, 0.05)
+        self.rf = ReportFormatter(self.tc, '', '', changes_only=False)
+        self.markdown = self.rf.markdown()
+        self.git = self.rf.git()
+        self.html = self.rf.html()
+
+    def assert_markdown_contains(self, texts):
+        self.assert_report_contains(texts, self.markdown)
+
+    def assert_git_contains(self, texts):
+        self.assert_report_contains(texts, self.git)
+
+    def assert_html_contains(self, texts):
+        self.assert_report_contains(texts, self.html)
+
+    def test_justified_columns(self):
+        """Table columns are all formated with same width, defined by the
+        longest value.
+        """
+        self.assert_markdown_contains([
+            'AnyHashableWithAClass | 247027 | 319065 | 259056  | 10250445',
+            'Array2D               | 335831 | 335831 | +0.0%   | 1.00x'])
+        self.assert_git_contains([
+            'AnyHashableWithAClass   247027   319065   259056    10250445',
+            'Array2D                 335831   335831   +0.0%     1.00x'])
+
+    def test_column_headers(self):
+        """Report contains table headers for ResultComparisons and changed
+        PerformanceTestResults.
+        """
+        self.assert_markdown_contains([
+            'TEST                  | OLD    | NEW    | DELTA   | SPEEDUP',
+            '---                   | ---    | ---    | ---     | ---    ',
+            'TEST                  | MIN    | MAX    | MEAN    | MAX_RSS'])
+        self.assert_git_contains([
+            'TEST                    OLD      NEW      DELTA     SPEEDUP',
+            'TEST                    MIN      MAX      MEAN      MAX_RSS'])
+        self.assert_html_contains([
+            """
+                <th align='left'>OLD</th>
+                <th align='left'>NEW</th>
+                <th align='left'>DELTA</th>
+                <th align='left'>SPEEDUP</th>""",
+            """
+                <th align='left'>MIN</th>
+                <th align='left'>MAX</th>
+                <th align='left'>MEAN</th>
+                <th align='left'>MAX_RSS</th>"""])
+
+    def test_emphasize_speedup(self):
+        """Emphasize speedup values for regressions and improvements"""
+        # tests in No Changes don't have emphasized speedup
+        self.assert_markdown_contains([
+            'BitCount              | 3      | 9      | +199.9% | **0.33x**',
+            'ByteSwap              | 4      | 0      | -100.0% | **4001.00x**',
+            'AngryPhonebook        | 10458  | 10458  | +0.0%   | 1.00x ',
+            'ArrayAppend           | 23641  | 20000  | -15.4%  | **1.18x (?)**'
+        ])
+        self.assert_git_contains([
+            'BitCount                3        9        +199.9%   **0.33x**',
+            'ByteSwap                4        0        -100.0%   **4001.00x**',
+            'AngryPhonebook          10458    10458    +0.0%     1.00x',
+            'ArrayAppend             23641    20000    -15.4%    **1.18x (?)**'
+        ])
+        self.assert_html_contains([
+            """
+        <tr>
+                <td align='left'>BitCount</td>
+                <td align='left'>3</td>
+                <td align='left'>9</td>
+                <td align='left'>+199.9%</td>
+                <td align='left'><font color='red'>0.33x</font></td>
+        </tr>""",
+            """
+        <tr>
+                <td align='left'>ByteSwap</td>
+                <td align='left'>4</td>
+                <td align='left'>0</td>
+                <td align='left'>-100.0%</td>
+                <td align='left'><font color='green'>4001.00x</font></td>
+        </tr>""",
+            """
+        <tr>
+                <td align='left'>AngryPhonebook</td>
+                <td align='left'>10458</td>
+                <td align='left'>10458</td>
+                <td align='left'>+0.0%</td>
+                <td align='left'><font color='black'>1.00x</font></td>
+        </tr>"""
+        ])
+
+    def test_sections(self):
+        """Report is divided into sections with summaries."""
+        self.assert_markdown_contains([
+            """<details open>
+  <summary>Regression (1)</summary>""",
+            """<details >
+  <summary>Improvement (2)</summary>""",
+            """<details >
+  <summary>No Changes (2)</summary>""",
+            """<details open>
+  <summary>Added (1)</summary>""",
+            """<details open>
+  <summary>Removed (1)</summary>"""])
+        self.assert_git_contains([
+            'Regression (1): \n',
+            'Improvement (2): \n',
+            'No Changes (2): \n',
+            'Added (1): \n',
+            'Removed (1): \n'])
+        self.assert_html_contains([
+            "<th align='left'>Regression (1)</th>",
+            "<th align='left'>Improvement (2)</th>",
+            "<th align='left'>No Changes (2)</th>",
+            "<th align='left'>Added (1)</th>",
+            "<th align='left'>Removed (1)</th>"])
+
+    def test_report_only_changes(self):
+        """Leave out tests without significant change."""
+        rf = ReportFormatter(self.tc, '', '', changes_only=True)
+        markdown, git, html = rf.markdown(), rf.git(), rf.html()
+        self.assertNotIn('No Changes', markdown)
+        self.assertNotIn('AngryPhonebook', markdown)
+        self.assertNotIn('No Changes', git)
+        self.assertNotIn('AngryPhonebook', git)
+        self.assertNotIn('No Changes', html)
+        self.assertNotIn('AngryPhonebook', html)
+
+
+class Test_parse_args(unittest.TestCase):
+    required = ['--old-file', 'old.log', '--new-file', 'new.log']
+
+    def test_required_input_arguments(self):
+        with captured_output() as (_, err):
+            self.assertRaises(SystemExit, parse_args, [])
+        self.assertIn('usage: compare_perf_tests.py', err.getvalue())
+
+        args = parse_args(self.required)
+        self.assertEquals(args.old_file, 'old.log')
+        self.assertEquals(args.new_file, 'new.log')
+
+    def test_format_argument(self):
+        self.assertEquals(parse_args(self.required).format, 'markdown')
+        self.assertEquals(
+            parse_args(self.required + ['--format', 'markdown']).format,
+            'markdown')
+        self.assertEquals(
+            parse_args(self.required + ['--format', 'git']).format, 'git')
+        self.assertEquals(
+            parse_args(self.required + ['--format', 'html']).format, 'html')
+
+        with captured_output() as (_, err):
+            self.assertRaises(SystemExit, parse_args,
+                              self.required + ['--format', 'bogus'])
+        self.assertIn("error: argument --format: invalid choice: 'bogus' "
+                      "(choose from 'markdown', 'git', 'html')",
+                      err.getvalue())
+
+    def test_delta_threshold_argument(self):
+        # default value
+        args = parse_args(self.required)
+        self.assertEquals(args.delta_threshold, 0.05)
+        # float parsing
+        args = parse_args(self.required + ['--delta-threshold', '0.1'])
+        self.assertEquals(args.delta_threshold, 0.1)
+        args = parse_args(self.required + ['--delta-threshold', '1'])
+        self.assertEquals(args.delta_threshold, 1.0)
+        args = parse_args(self.required + ['--delta-threshold', '.2'])
+        self.assertEquals(args.delta_threshold, 0.2)
+
+        with captured_output() as (_, err):
+            self.assertRaises(SystemExit, parse_args,
+                              self.required + ['--delta-threshold', '2,2'])
+        self.assertIn(" error: argument --delta-threshold: invalid float "
+                      "value: '2,2'",
+                      err.getvalue())
+
+    def test_output_argument(self):
+        self.assertEquals(parse_args(self.required).output, None)
+        self.assertEquals(parse_args(self.required +
+                                     ['--output', 'report.log']).output,
+                          'report.log')
+
+    def test_changes_only_argument(self):
+        self.assertFalse(parse_args(self.required).changes_only)
+        self.assertTrue(parse_args(self.required +
+                                   ['--changes-only']).changes_only)
+
+    def test_branch_arguments(self):
+        # default value
+        args = parse_args(self.required)
+        self.assertEquals(args.new_branch, 'NEW_MIN')
+        self.assertEquals(args.old_branch, 'OLD_MIN')
+        # user specified
+        args = parse_args(
+            self.required + ['--old-branch', 'master',
+                             '--new-branch', 'amazing-optimization'])
+        self.assertEquals(args.old_branch, 'master')
+        self.assertEquals(args.new_branch, 'amazing-optimization')
+
+
+class Test_compare_perf_tests_main(OldAndNewLog):
+    """Integration test that invokes the whole comparison script."""
+    markdown = [
+        '<summary>Regression (1)</summary>',
+        'TEST                  | OLD    | NEW    | DELTA   | SPEEDUP',
+        'BitCount              | 3      | 9      | +199.9% | **0.33x**',
+    ]
+    git = [
+        'Regression (1):',
+        'TEST                    OLD      NEW      DELTA     SPEEDUP',
+        'BitCount                3        9        +199.9%   **0.33x**',
+    ]
+    html = ['<html>', "<td align='left'>BitCount</td>"]
+
+    def execute_main_with_format(self, report_format, test_output=False):
+        report_file = self.test_dir + 'report.log'
+        args = ['compare_perf_tests.py',
+                '--old-file', self.old_log,
+                '--new-file', self.new_log,
+                '--format', report_format]
+
+        sys.argv = (args if not test_output else
+                    args + ['--output', report_file])
+
+        with captured_output() as (out, _):
+            main()
+        report_out = out.getvalue()
+
+        if test_output:
+            with open(report_file, 'r') as f:
+                report = f.read()
+            # because print adds newline, add one here, too:
+            report_file = str(report + '\n')
+        else:
+            report_file = None
+
+        return report_out, report_file
+
+    def test_markdown(self):
+        """Writes Markdown formatted report to stdout"""
+        report_out, _ = self.execute_main_with_format('markdown')
+        self.assert_report_contains(self.markdown, report_out)
+
+    def test_markdown_output(self):
+        """Writes Markdown formatted report to stdout and `--output` file."""
+        report_out, report_file = (
+            self.execute_main_with_format('markdown', test_output=True))
+        self.assertEquals(report_out, report_file)
+        self.assert_report_contains(self.markdown, report_file)
+
+    def test_git(self):
+        """Writes Git formatted report to stdout."""
+        report_out, _ = self.execute_main_with_format('git')
+        self.assert_report_contains(self.git, report_out)
+
+    def test_git_output(self):
+        """Writes Git formatted report to stdout and `--output` file."""
+        report_out, report_file = (
+            self.execute_main_with_format('git', test_output=True))
+        self.assertEquals(report_out, report_file)
+        self.assert_report_contains(self.git, report_file)
+
+    def test_html(self):
+        """Writes HTML formatted report to stdout."""
+        report_out, _ = self.execute_main_with_format('html')
+        self.assert_report_contains(self.html, report_out)
+
+    def test_html_output(self):
+        """Writes HTML formatted report to stdout and `--output` file."""
+        report_out, report_file = (
+            self.execute_main_with_format('html', test_output=True))
+        self.assertEquals(report_out, report_file)
+        self.assert_report_contains(self.html, report_file)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/benchmark/single-source/DictionaryGroup.swift b/benchmark/single-source/DictionaryGroup.swift
new file mode 100644
index 0000000..9ea5393
--- /dev/null
+++ b/benchmark/single-source/DictionaryGroup.swift
@@ -0,0 +1,51 @@
+//===--- DictionaryGroup.swift --------------------------------------------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+import TestsUtils
+
+let count = 10_000
+let result = count / 10
+
+@inline(never)
+public func run_DictionaryGroup(_ N: Int) {
+  for _ in 1...N {
+    let dict = Dictionary(grouping: 0..<count, by: { $0 % 10 })
+    CheckResults(dict.count == 10)
+    CheckResults(dict[0]!.count == result)
+  }
+}
+
+class Box<T : Hashable> : Hashable {
+  var value: T
+
+  init(_ v: T) {
+    value = v
+  }
+
+  var hashValue: Int {
+    return value.hashValue
+  }
+
+  static func ==(lhs: Box, rhs: Box) -> Bool {
+    return lhs.value == rhs.value
+  }
+}
+
+@inline(never)
+public func run_DictionaryGroupOfObjects(_ N: Int) {
+  let objects = (0..<count).map { Box($0) }
+  for _ in 1...N {
+    let dict = Dictionary(grouping: objects, by: { Box($0.value % 10) })
+    CheckResults(dict.count == 10)
+    CheckResults(dict[Box(0)]!.count == result)
+  }
+}
diff --git a/benchmark/single-source/StringWalk.swift b/benchmark/single-source/StringWalk.swift
index c297841..5ae755f 100644
--- a/benchmark/single-source/StringWalk.swift
+++ b/benchmark/single-source/StringWalk.swift
@@ -69,6 +69,7 @@
 let japanese = "今回のアップデートでSwiftに大幅な改良が施され、安定していてしかも直感的に使うことができるAppleプラットフォーム向けプログラミング言語になりました。"
 let chinese = "Swift 是面向 Apple 平台的编程语言,功能强大且直观易用,而本次更新对其进行了全面优化。"
 let korean = "이번 업데이트에서는 강력하면서도 직관적인 Apple 플랫폼용 프로그래밍 언어인 Swift를 완벽히 개선하였습니다."
+let russian = "в чащах юга жил-был цитрус? да, но фальшивый экземпляр"
 
 // A workload that's mostly Latin characters, with occasional emoji
 // interspersed. Common for tweets.
@@ -269,3 +270,33 @@
   }
 }
 
+
+@inline(never)
+public func run_StringWalk_russian_unicodeScalars(_ N: Int) {
+  for _ in 1...unicodeScalarsMultiplier*N {
+    count_unicodeScalars(russian.unicodeScalars)
+  }
+}
+
+@inline(never)
+public func run_StringWalk_russian_unicodeScalars_Backwards(_ N: Int) {
+  for _ in 1...unicodeScalarsMultiplier*N {
+    count_unicodeScalars_rev(russian.unicodeScalars.reversed())
+  }
+}
+
+
+@inline(never)
+public func run_StringWalk_russian_characters(_ N: Int) {
+  for _ in 1...charactersMultiplier*N {
+    count_characters(russian.characters)
+  }
+}
+
+@inline(never)
+public func run_StringWalk_russian_characters_Backwards(_ N: Int) {
+  for _ in 1...charactersMultiplier*N {
+    count_characters_rev(russian.characters.reversed())
+  }
+}
+
diff --git a/benchmark/single-source/StringWalk.swift.gyb b/benchmark/single-source/StringWalk.swift.gyb
index 8386bc2..690d01b 100644
--- a/benchmark/single-source/StringWalk.swift.gyb
+++ b/benchmark/single-source/StringWalk.swift.gyb
@@ -70,6 +70,7 @@
 let japanese = "今回のアップデートでSwiftに大幅な改良が施され、安定していてしかも直感的に使うことができるAppleプラットフォーム向けプログラミング言語になりました。"
 let chinese = "Swift 是面向 Apple 平台的编程语言,功能强大且直观易用,而本次更新对其进行了全面优化。"
 let korean = "이번 업데이트에서는 강력하면서도 직관적인 Apple 플랫폼용 프로그래밍 언어인 Swift를 완벽히 개선하였습니다."
+let russian = "в чащах юга жил-был цитрус? да, но фальшивый экземпляр"
 
 // A workload that's mostly Latin characters, with occasional emoji
 // interspersed. Common for tweets.
@@ -90,7 +91,7 @@
 let unicodeScalarsMultiplier = baseMultiplier
 let charactersMultiplier = baseMultiplier / 5
 
-% for Name in ["ascii", "utf16", "tweet", "japanese", "chinese", "korean"]:
+% for Name in ["ascii", "utf16", "tweet", "japanese", "chinese", "korean", "russian"]:
 %   for Kind in ["unicodeScalars", "characters"]:
 
 @inline(never)
diff --git a/benchmark/single-source/Substring.swift b/benchmark/single-source/Substring.swift
index 011866c..b64715e 100644
--- a/benchmark/single-source/Substring.swift
+++ b/benchmark/single-source/Substring.swift
@@ -180,6 +180,51 @@
   }
 }
 
+@inline(never)
+public func run_SubstringEquatable(_ N: Int) {
+	var string = "pen,pineapple,apple,pen"
+	string += ",✒️,🍍,🍏,✒️"
+	let substrings = string.split(separator: ",")
+	var count = 0
+	for _ in 1...N*500 {
+		for s in substrings {
+			if substrings.contains(s) { count = count &+ 1 }
+		}
+	}
+  CheckResults(count == 8*N*500)
+}
+
+@inline(never)
+public func run_SubstringEqualString(_ N: Int) {
+	var string = "pen,pineapple,apple,pen"
+	string += ",✒️,🍍,🍏,✒️"
+	let substrings = string.split(separator: ",")
+	let pineapple = "pineapple"
+	let apple = "🍏"
+	var count = 0
+	for _ in 1...N*500 {
+		for s in substrings {
+			if s == pineapple || s == apple { count = count &+ 1 }
+		}
+	}
+  CheckResults(count == 2*N*500)
+}
+
+@inline(never)
+public func run_SubstringComparable(_ N: Int) {
+	var string = "pen,pineapple,apple,pen"
+	string += ",✒️,🍍,🍏,✒️"
+	let substrings = string.split(separator: ",")
+	let comparison = substrings + ["PPAP"]
+	var count = 0
+	for _ in 1...N*500 {
+		if substrings.lexicographicallyPrecedes(comparison) {
+			count = count &+ 1
+		}
+	}
+  CheckResults(count == N*500)
+}
+
 /*
 func checkLess<T, U>(_ x: T, _ y: U)
 where T : StringProtocol, U : StringProtocol {
diff --git a/benchmark/utils/DriverUtils.swift b/benchmark/utils/DriverUtils.swift
index c18fa37..fd514f4 100644
--- a/benchmark/utils/DriverUtils.swift
+++ b/benchmark/utils/DriverUtils.swift
@@ -53,13 +53,7 @@
   let name: String
   let index: Int
   let f: (Int) -> ()
-  var run: Bool
-  init(name: String, n: Int, f: @escaping (Int) -> ()) {
-    self.name = name
-    self.index = n
-    self.f = f
-    run = true
-  }
+  let run: Bool
 }
 
 public var precommitTests: [String : (Int) -> ()] = [:]
@@ -117,9 +111,7 @@
     }
     let benchArgs = maybeBenchArgs!
 
-    if let _ = benchArgs.optionalArgsMap["--list"] {
-      return .ListTests
-    }
+    filters = benchArgs.positionalArgs
 
     if let x = benchArgs.optionalArgsMap["--iter-scale"] {
       if x.isEmpty { return .Fail("--iter-scale requires a value") }
@@ -161,34 +153,30 @@
       afterRunSleep = v!
     }
 
-    filters = benchArgs.positionalArgs
+    if let _ = benchArgs.optionalArgsMap["--list"] {
+      return .ListTests
+    }
 
     return .Run
   }
 
   mutating func findTestsToRun() {
-    var i = 1
-    for benchName in precommitTests.keys.sorted() {
-      tests.append(Test(name: benchName, n: i, f: precommitTests[benchName]!))
-      i += 1
-    }
-    for benchName in otherTests.keys.sorted() {
-      tests.append(Test(name: benchName, n: i, f: otherTests[benchName]!))
-      i += 1
-    }
-    for benchName in stringTests.keys.sorted() {
-      tests.append(Test(name: benchName, n: i, f: stringTests[benchName]!))
-      i += 1
-    }
-    for i in 0..<tests.count {
-      if onlyPrecommit && precommitTests[tests[i].name] == nil {
-        tests[i].run = false
-      }
-      if !filters.isEmpty &&
-         !filters.contains(String(tests[i].index)) &&
-         !filters.contains(tests[i].name) {
-        tests[i].run = false
-      }
+    let allTests = [precommitTests, otherTests, stringTests]
+      .map { dictionary -> [(key: String, value: (Int)-> ())] in
+        Array(dictionary).sorted { $0.key < $1.key } } // by name
+      .joined()
+
+    let included =
+      !filters.isEmpty ? Set(filters)
+      : onlyPrecommit ? Set(precommitTests.keys)
+      : Set(allTests.map { $0.key })
+
+    tests = zip(1...allTests.count, allTests).map {
+      t -> Test in
+      let (ordinal, (key: name, value: function)) = t
+      return Test(name: name, index: ordinal, f: function,
+                  run: included.contains(name)
+                    || included.contains(String(ordinal)))
     }
   }
 }
@@ -410,7 +398,7 @@
     case .ListTests:
       config.findTestsToRun()
       print("Enabled Tests:")
-      for t in config.tests {
+      for t in config.tests where t.run == true {
         print("    \(t.name)")
       }
     case .Run:
diff --git a/benchmark/utils/main.swift b/benchmark/utils/main.swift
index 420e753..8e42e7f 100644
--- a/benchmark/utils/main.swift
+++ b/benchmark/utils/main.swift
@@ -45,6 +45,7 @@
 import DictTest2
 import DictTest3
 import DictionaryBridge
+import DictionaryGroup
 import DictionaryLiteral
 import DictionaryRemove
 import DictionarySwap
@@ -181,6 +182,8 @@
 addTo(&precommitTests, "Dictionary3", run_Dictionary3)
 addTo(&precommitTests, "Dictionary3OfObjects", run_Dictionary3OfObjects)
 addTo(&precommitTests, "DictionaryBridge", run_DictionaryBridge)
+addTo(&precommitTests, "DictionaryGroup", run_DictionaryGroup)
+addTo(&precommitTests, "DictionaryGroupOfObjects", run_DictionaryGroupOfObjects)
 addTo(&precommitTests, "DictionaryLiteral", run_DictionaryLiteral)
 addTo(&precommitTests, "DictionaryOfObjects", run_DictionaryOfObjects)
 addTo(&precommitTests, "DictionaryRemove", run_DictionaryRemove)
@@ -386,6 +389,9 @@
 addTo(&precommitTests, "StringUTF16Builder", run_StringUTF16Builder)
 addTo(&precommitTests, "StringWalk", run_StringWalk)
 addTo(&precommitTests, "StringWithCString", run_StringWithCString)
+addTo(&precommitTests, "SubstringComparable", run_SubstringComparable)
+addTo(&precommitTests, "SubstringEqualString", run_SubstringEqualString)
+addTo(&precommitTests, "SubstringEquatable", run_SubstringEquatable)
 addTo(&precommitTests, "SubstringFromLongString", run_SubstringFromLongString)
 addTo(&precommitTests, "SubstringFromLongStringGeneric", run_SubstringFromLongStringGeneric)
 addTo(&precommitTests, "SuffixAnyCollection", run_SuffixAnyCollection)
@@ -531,6 +537,10 @@
 addTo(&stringTests, "StringWalk_korean_characters_Backwards", run_StringWalk_korean_characters_Backwards)
 addTo(&stringTests, "StringWalk_korean_unicodeScalars", run_StringWalk_korean_unicodeScalars)
 addTo(&stringTests, "StringWalk_korean_unicodeScalars_Backwards", run_StringWalk_korean_unicodeScalars_Backwards)
+addTo(&stringTests, "StringWalk_russian_characters", run_StringWalk_russian_characters)
+addTo(&stringTests, "StringWalk_russian_characters_Backwards", run_StringWalk_russian_characters_Backwards)
+addTo(&stringTests, "StringWalk_russian_unicodeScalars", run_StringWalk_russian_unicodeScalars)
+addTo(&stringTests, "StringWalk_russian_unicodeScalars_Backwards", run_StringWalk_russian_unicodeScalars_Backwards)
 addTo(&stringTests, "StringWalk_tweet_characters", run_StringWalk_tweet_characters)
 addTo(&stringTests, "StringWalk_tweet_characters_Backwards", run_StringWalk_tweet_characters_Backwards)
 addTo(&stringTests, "StringWalk_tweet_unicodeScalars", run_StringWalk_tweet_unicodeScalars)
diff --git a/cmake/modules/AddSwift.cmake b/cmake/modules/AddSwift.cmake
index 5dd80da..052213d 100644
--- a/cmake/modules/AddSwift.cmake
+++ b/cmake/modules/AddSwift.cmake
@@ -359,9 +359,10 @@
     endif()
   elseif("${LFLAGS_SDK}" STREQUAL "ANDROID")
     list(APPEND result
-        "-ldl"
+        "-ldl" "-llog" "-latomic" "-licudata" "-licui18n" "-licuuc"
         "${SWIFT_ANDROID_NDK_PATH}/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++_shared.so")
     list(APPEND library_search_directories
+        "${SWIFT_ANDROID_PREBUILT_PATH}/arm-linux-androideabi/lib/armv7-a"
         "${SWIFT_ANDROID_PREBUILT_PATH}/lib/gcc/arm-linux-androideabi/${SWIFT_ANDROID_NDK_GCC_VERSION}.x")
   else()
     # If lto is enabled, we need to add the object path flag so that the LTO code
@@ -638,10 +639,6 @@
     endif()
   endif()
 
-  if(SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS)
-    list(APPEND SWIFTLIB_SINGLE_C_COMPILE_FLAGS "-DSWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS=1")
-  endif()
-
   if (SWIFT_COMPILER_VERSION)
     is_darwin_based_sdk("${SWIFTLIB_SINGLE_SDK}" IS_DARWIN)
     if(IS_DARWIN)
@@ -1504,6 +1501,12 @@
           if("${lib}" STREQUAL "ICU_UC")
             list(APPEND swiftlib_private_link_libraries_targets
                  "${SWIFT_${sdk}_ICU_UC}")
+            # temporary fix for atomic needing to be
+            # after object files for libswiftCore.so
+            if("${sdk}" STREQUAL "ANDROID")
+              list(APPEND swiftlib_private_link_libraries_targets
+                   "-latomic")
+            endif()
           elseif("${lib}" STREQUAL "ICU_I18N")
             list(APPEND swiftlib_private_link_libraries_targets
                  "${SWIFT_${sdk}_ICU_I18N}")
@@ -2121,3 +2124,8 @@
     endif()
   endif()
 endfunction()
+
+macro(add_swift_tool_symlink name dest component)
+  add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE)
+  llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE COMPONENT ${component})
+endmacro()
diff --git a/cmake/modules/DarwinSDKs.cmake b/cmake/modules/DarwinSDKs.cmake
index 8e680e6..d1cf7e8 100644
--- a/cmake/modules/DarwinSDKs.cmake
+++ b/cmake/modules/DarwinSDKs.cmake
@@ -25,7 +25,7 @@
 if(swift_build_ios_simulator)
   configure_sdk_darwin(
       IOS_SIMULATOR "iOS Simulator" "${SWIFT_DARWIN_DEPLOYMENT_VERSION_IOS}"
-      iphonesimulator ios-simulator ios "i386;x86_64")
+      iphonesimulator ios-simulator ios "x86_64")
   configure_target_variant(
       IOS_SIMULATOR-DA "iOS Debug+Asserts"   IOS_SIMULATOR DA "Debug+Asserts")
   configure_target_variant(
diff --git a/cmake/modules/SwiftSource.cmake b/cmake/modules/SwiftSource.cmake
index ca0228b..736cb5a 100644
--- a/cmake/modules/SwiftSource.cmake
+++ b/cmake/modules/SwiftSource.cmake
@@ -243,10 +243,6 @@
     list(APPEND swift_flags "-Xfrontend" "-assume-single-threaded")
   endif()
 
-  if(SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS)
-    list(APPEND swift_flags "-Xfrontend" "-enable-cow-existentials")
-  endif()
-
   if(SWIFT_STDLIB_ENABLE_SIL_OWNERSHIP AND SWIFTFILE_IS_STDLIB)
     list(APPEND swift_flags "-Xfrontend" "-enable-sil-ownership")
   endif()
@@ -394,6 +390,11 @@
     set(swift_compiler_tool "${SWIFT_SOURCE_DIR}/utils/check-incremental" "${swift_compiler_tool}")
   endif()
 
+  if (SWIFT_REPORT_STATISTICS)
+    list(GET obj_dirs 0 first_obj_dir)
+    list(APPEND swift_flags "-stats-output-dir" ${first_obj_dir})
+  endif()
+
   set(standard_outputs ${SWIFTFILE_OUTPUT})
   set(apinotes_outputs ${apinote_files})
   set(module_outputs "${module_file}" "${module_doc_file}")
diff --git a/docs/ABI.rst b/docs/ABI.rst
index a3a3fc6..ce46393 100644
--- a/docs/ABI.rst
+++ b/docs/ABI.rst
@@ -877,8 +877,8 @@
   curry-thunk ::= 'Tc'
 
   // The leading type is the function type
-  entity-spec ::= type 'fC'                  // allocating constructor
-  entity-spec ::= type 'fc'                  // non-allocating constructor
+  entity-spec ::= type file-discriminator? 'fC'      // allocating constructor
+  entity-spec ::= type file-discriminator? 'fc'      // non-allocating constructor
   entity-spec ::= type 'fU' INDEX            // explicit anonymous closure expression
   entity-spec ::= type 'fu' INDEX            // implicit anonymous closure
   entity-spec ::= 'fA' INDEX                 // default argument N+1 generator
@@ -911,14 +911,16 @@
 
   decl-name ::= identifier
   decl-name ::= identifier 'L' INDEX         // locally-discriminated declaration
-  decl-name ::= identifier identifier 'LL'    // file-discriminated declaration
+  decl-name ::= identifier identifier 'LL'   // file-discriminated declaration
 
-The first identifier in a file-discriminated ``<decl-name>>`` is a string that
-represents the file the original declaration came from.
-It should be considered unique within the enclosing module.
-The second identifier is the name of the entity.
-Not all declarations marked ``private`` declarations will use this mangling;
-if the entity's context is enough to uniquely identify the entity, the simple
+  file-discriminator ::= identifier 'Ll'     // anonymous file-discriminated declaration
+
+The identifier in a ``<file-discriminator>`` and the first identifier in a
+file-discriminated ``<decl-name>`` is a string that represents the file the
+original declaration came from. It should be considered unique within the
+enclosing module. The second identifier is the name of the entity. Not all
+declarations marked ``private`` declarations will use this mangling; if the
+entity's context is enough to uniquely identify the entity, the simple
 ``identifier`` form is preferred.
 
 Declaration Contexts
diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt
index 292c69f..75fc706 100644
--- a/docs/CMakeLists.txt
+++ b/docs/CMakeLists.txt
@@ -11,7 +11,7 @@
 
 SET(SPHINX_ARGS
   -W
-  -D latex_paper_size=${SWIFT_SPHINX_PAPER_SIZE}
+  -D latex_elements.papersize=${SWIFT_SPHINX_PAPER_SIZE}
   -d ${CMAKE_BINARY_DIR}/doctrees)
 
 if(SPHINX_EXECUTABLE)
diff --git a/docs/Diagnostics.md b/docs/Diagnostics.md
new file mode 100644
index 0000000..8e6e935
--- /dev/null
+++ b/docs/Diagnostics.md
@@ -0,0 +1,106 @@
+### Background ###
+
+Swift's diagnostic style is inherited from [Clang][], which itself was loosely based on [GCC][]'s. These diagnostics aim to fit a terse but clear description of an issue into a single line, ideally suitable for display both on the command line and in IDEs. Additional information is provided via "notes", which are always attached to a primary diagnostic.
+
+The Clang site has [an older comparison][comparison] between Clang's diagnostics and GCC's that shows where the attention to detail has been in that compiler.
+
+This document describes several *current* guidelines for diagnostics in the Swift compiler and accompanying tools. It does not discuss potential future directions for diagnostics, such as following the examples of the [Elm][] or [Rust][] compilers to provide more information.
+
+  [Clang]: http://clang.llvm.org
+  [GCC]: https://gcc.gnu.org
+  [comparison]: http://clang.llvm.org/diagnostics.html
+  [Elm]: http://elm-lang.org/blog/compiler-errors-for-humans
+  [Rust]: https://blog.rust-lang.org/2016/08/10/Shape-of-errors-to-come.html
+
+
+### Errors vs. Warnings ###
+
+Swift diagnostics are classified into errors, warnings, and notes. Notes are always considered "attached" to the immediately preceding error or warning, so the primary distinction is between errors and warnings. In the Swift compiler, a particular diagnostic should be a warning if the intent of the code is clear *and* it won't immediately result in a crash. This allows users to continue to build during refactoring without having to clean up all issues first.
+
+For a warning, consider whether there might be a legitimate need to write the code in question, even if it's rare. In this case, there should be a way to silence the warning, and a note with a fix-it suggesting this. For example, the "unused function result" warning suggests assigning to `_` to make it clear that this is intentional.
+
+Unlike Clang and many other compilers, Swift compiler warnings cannot be disabled as part of the invocation or through a standard construct in the source. This was a deliberate choice in order to keep the language from fracturing into dialects, but has been controversial throughout Swift's history.
+
+Clang also has a kind of diagnostic called a "remark", which represents information about the build that does not indicate an issue. Swift does not currently have remarks, but there's no reason why it couldn't.
+
+
+### Grammar and Phrasing ###
+
+- Swift diagnostics should be a single phrase or sentence, with no period at the end. If it's important to include a second idea in the diagnostic, use a semicolon to separate the two parts.
+
+- Swift diagnostics are written in a terse abbreviated style similar to English newspaper headlines or recipes. Omit words that make the diagnostic longer without adding information, such as grammatical words like "the".
+
+- *Do* include information that shows that the compiler understands the code. For example, referring to "instance method 'foo(bar:)'" is usually unnecessary, but may increase implicit trust in the compiler and decrease the developer's mental load.
+
+  - *Don't* include information that might show that the compiler *doesn't* understand the code. For example, don't *assume* that this particular value is an instance method when it might be a property with a function type. However, *do* include details that might show how the compiler is *misunderstanding* the code.
+
+- If there is a plausible fix or likely intended meaning, include that in the diagnostic whether or not there's a fix-it.
+
+- When applicable, phrase diagnostics as rules rather than reporting that the compiler failed to do something. Example:
+
+  - Normal: "cannot call 'super.init' outside of an initializer"
+  - Better: "'super.init' cannot be called outside of an initializer"
+
+- When referring to attributes by name, use *either* "the 'foo' attribute" or "'@foo'", rather than "the '@foo' attribute".
+
+- Match the tone and phrasing of other diagnostics. Some common phrases:
+
+  - "\<noun> '\<name>'" (e.g. "type 'Set<Int>'")
+  - "value of type \<type>"
+  - "did you mean...?"
+  - "...to silence this warning"
+  - "...here" (for a purely locational note)
+
+
+### Locations and Highlights ###
+
+- Diagnostics are always emitted at a particular line and column. Try to be specific.
+
+- Use highlights to build on the single location of the diagnostic, but use them sparingly. A diagnostic with *everything* on the line highlighted is no better than a diagnostic with nothing highlighted.
+
+
+### Fix-its ###
+
+- Fix-its can span multiple lines, but may not be displayed in all contexts if they do. (In particular, the command-line display of a diagnostic currently only shows the line the diagnostic is on.)
+
+- Fix-its must be in the same file as the diagnostic they are attached to. (However, a note can be in a different file than the primary error or warning.)
+
+- If a fix-it is placed on an error or warning, it must be the single, obvious, and very likely correct way to fix the issue.
+
+  - Ideally, the compiler or other tool will recover as if the user had applied the fix-it.
+
+- Conversely, if a note has a fix-it, the note should describe the action the fix-it is taking and why.
+
+- If a diagnostic has multiple notes with fix-its, the different notes should be treated as alternatives. In general, the first option should be the safest one. (It's also okay to have additional notes that do not provide fix-its, but don't drown the developer in notes.)
+
+- If a warning or error has a fix-it, its notes should not have fix-its.
+
+- Try to find something better than "add parentheses" to indicate that a warning should be silenced. Parentheses don't have anything to do with the actual problem, and if too many warnings do this the developer may end up silencing more than they meant to.
+
+- Use Xcode-syntax placeholders in fix-its as necessary: `<#placeholder#>`. It's better to offer a fix-it with a placeholder in it than no fix-it at all.
+
+The correct spelling of this feature is "fix-it" rather than "fixit". In [camelcased][] contexts, use "FixIt" or "fixIt".
+
+  [camelcased]: https://en.wikipedia.org/wiki/Camel_case
+
+
+### "Editor Mode" ###
+
+The Swift compiler has a setting (under LangOptions) called `DiagnosticsEditorMode`. When set, diagnostics should be customized for an interactive editor that can display and apply complex fix-its, and worry less about the appearance in build logs and command-line environments.
+
+Most diagnostics have no reason to change behavior under editor mode. An example of an exception is the "protocol requirements not satisfied diagnostic"; on the command line, it may be better to show all unsatisfied requirements, while in an IDE a single multi-line fix-it would be preferred.
+
+
+### Format Specifiers ###
+
+(This section is specific to the Swift compiler's diagnostic engine.)
+
+- `%0`, `%1`, etc - Formats the specified diagnostic argument based on its type.
+
+- `%select{a|b|c}0` - Chooses from a list of alternatives, separated by vertical bars, based on the value of the given argument. In this example, a value of 2 in diagnostic argument 0 would result in "c" being output.
+
+- `%s0` - Produces an "s" if the given argument is anything other than 1, as meant for an English plural. This isn't particularly localizable without a more general `%plural` form, but most diagnostics try to avoid cases where a plural/singular distinction would be necessary in the first place.
+
+- `%error` - Represents a branch in a `%select` that should never be taken. In debug builds of the compiler this produces an assertion failure.
+
+- `%%` - Emits a literal percent sign.
diff --git a/docs/Generics.rst b/docs/Generics.rst
index 0d1f5d7..225bd04 100644
--- a/docs/Generics.rst
+++ b/docs/Generics.rst
@@ -720,7 +720,7 @@
 
   struct S<T> {
     var x: T
-    @_specialize(Int, Float)
+    @_specialize(where T == Int, U == Float)
     mutating func exchangeSecond<U>(_ u: U, _ t: T) -> (U, T) {
       x = t
       return (u, x)
@@ -741,6 +741,40 @@
 exposed as part of a function's API. That would allow direct dispatch
 to specialized code without type checks, even across modules.
 
+The exact syntax of the @_specialize function attribute is defined as: ::
+
+  @_specialize(exported: true, kind: full, where K == Int, V == Int)
+  @_specialize(exported: false, kind: partial, where K: _Trivial64)
+  func dictFunction<K, V>(dict: Dictionary<K, V>) {
+  }
+    
+If 'exported' is set, the corresponding specialization would have a public
+visibility and can be used by clients. If 'exported' is omitted, it's value
+is assumed to be 'false'.
+
+If 'kind' is 'full' it means a full specialization and the compiler will
+produce an error if you forget to specify the type for some of the generic
+parameters in the 'where' clause. If 'kind' is 'partial' it means a partial
+specialization. If 'kind' is omitted, its value is assumed to be 'full.
+
+The requirements in the where clause may be same-type constaints like 'T == Int',
+but they may also specify so-called layout constraints like 'T: _Trivial'.
+
+The following layout constraints are currently supported:
+  * AnyObject - the actual parameter should be an instance of a class
+  * _NativeClass - the actual parameter should be an instance of a Swift native
+    class
+  * _RefCountedObject - the actual parameter should be a reference-counted object
+  * _NativeRefCountedObject - the actual parameter should be a Swift-native
+    reference-counted object
+  * _Trivial - the actual parameter should be of a trivial type, i.e. a type
+    without any reference counted properties.
+  * _Trivial(SizeInBits) - like _Trivial, but the size of the type should be
+    exactly 'SizeInBits' bits.
+  * _TrivialAtMost(SizeInBits) - like _Trivial, but the size of the type should
+    be at most 'SizeInBits' bits.
+  
+
 Existential Types and Generics
 ------------------------------
 
diff --git a/docs/HighLevelSILOptimizations.rst b/docs/HighLevelSILOptimizations.rst
index 54e538f..03a2393 100644
--- a/docs/HighLevelSILOptimizations.rst
+++ b/docs/HighLevelSILOptimizations.rst
@@ -55,7 +55,8 @@
 
 We use the ``@_semantics`` attribute to annotate code in the standard library.
 These annotations can be used by the high-level SIL optimizer to perform
-domain-specific optimizations.
+domain-specific optimizations. The same function may have multiple ``@_semantics``
+attributes.
 
 This is an example of the ``@_semantics`` attribute::
 
@@ -365,6 +366,9 @@
 
    The sil optimizer should never create generic specializations of this function. 
 
+optimize.sil.specialize.generic.partial.never
+
+   The sil optimizer should never create generic partial specializations of this function. 
 
 Availability checks
 ~~~~~~~~~~~~~~~~~~~
diff --git a/docs/Lexicon.rst b/docs/Lexicon.rst
index 5a4f603..07de796 100644
--- a/docs/Lexicon.rst
+++ b/docs/Lexicon.rst
@@ -65,6 +65,9 @@
   bitcode
     Serialized LLVM `IR`.
 
+  build czar
+    Apple term for "the person assigned to watch CI this week".
+
   canonical SIL
     SIL after the
     `mandatory passes <mandatory passes / mandatory optimizations>` have run.
diff --git a/docs/Makefile b/docs/Makefile
index 8998fb1..a3100e6 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -8,8 +8,8 @@
 BUILDDIR      = _build
 
 # Internal variables.
-PAPEROPT_a4     = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
+PAPEROPT_a4     = -D latex_elements.papersize=a4
+PAPEROPT_letter = -D latex_elements.papersize=letter
 ALLSPHINXOPTS   = -W -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
 # the i18n builder cannot share the environment and doctrees with the others
 I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
diff --git a/docs/Testing.rst b/docs/Testing.rst
index b7fd2a5..898b7a7 100644
--- a/docs/Testing.rst
+++ b/docs/Testing.rst
@@ -385,6 +385,9 @@
 * ``%platform-sdk-overlay-dir``: absolute path of the directory where the SDK
   overlay module files for the target platform are stored.
 
+* ``%swift_src_root``: absolute path of the directory where the Swift source
+  code is stored.
+
 * ``%{python}``: run the same Python interpreter that's being used to run the
   current ``lit`` test.
 
@@ -394,6 +397,10 @@
 
 * ``%raw-FileCheck``: the LLVM ``FileCheck`` utility.
 
+* ``%empty-directory(`` *directory-name* ``)``: ensures that the given
+  directory exists and is empty.  Equivalent to
+  ``rm -rf directory-name && mkdir -p directory-name``.
+
 When writing a test where output (or IR, SIL) depends on the bitness of the
 target CPU, use this pattern::
 
diff --git a/docs/conf.py b/docs/conf.py
index 6b71bab..7661ace 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -29,7 +29,7 @@
 extensions = ['sphinx.ext.intersphinx', 'sphinx.ext.todo']
 
 # Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
+templates_path = ['_templates', 'archive']
 
 # The suffix of source filenames.
 source_suffix = '.rst'
@@ -146,7 +146,7 @@
 
 # Additional templates that should be rendered to pages, maps page names to
 # template names.
-html_additional_pages = {'LangRef': 'archive/LangRef.html'}
+html_additional_pages = {'archive/LangRef': 'LangRef.html'}
 
 # If false, no module index is generated.
 # html_domain_indices = True
diff --git a/docs/proposals/InitializerInheritance.rst b/docs/proposals/InitializerInheritance.rst
index 6bd718e..af571a6 100644
--- a/docs/proposals/InitializerInheritance.rst
+++ b/docs/proposals/InitializerInheritance.rst
@@ -135,7 +135,7 @@
 Complete object initializers
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Introduce the notion of a complete object initializer, which is
-written as an initializer with ``Self`` as its return type [#], e.g.::
+written as an initializer with ``Self`` as its return type [#]_, e.g.::
 
   init() -> Self {
     // ...
diff --git a/include/swift/ABI/KeyPath.h b/include/swift/ABI/KeyPath.h
index 3155c11..dd48ae3 100644
--- a/include/swift/ABI/KeyPath.h
+++ b/include/swift/ABI/KeyPath.h
@@ -104,11 +104,11 @@
   }
 
   constexpr static KeyPathComponentHeader
-  forStructComponentWithUnresolvedOffset() {
+  forStructComponentWithUnresolvedFieldOffset() {
     return KeyPathComponentHeader(
       (_SwiftKeyPathComponentHeader_StructTag
       << _SwiftKeyPathComponentHeader_DiscriminatorShift)
-      | _SwiftKeyPathComponentHeader_UnresolvedOffsetPayload);
+      | _SwiftKeyPathComponentHeader_UnresolvedFieldOffsetPayload);
   }
   
   constexpr static KeyPathComponentHeader
@@ -128,11 +128,19 @@
   }
   
   constexpr static KeyPathComponentHeader
-  forClassComponentWithUnresolvedOffset() {
+  forClassComponentWithUnresolvedFieldOffset() {
     return KeyPathComponentHeader(
-      (_SwiftKeyPathComponentHeader_StructTag
+      (_SwiftKeyPathComponentHeader_ClassTag
       << _SwiftKeyPathComponentHeader_DiscriminatorShift)
-      | _SwiftKeyPathComponentHeader_UnresolvedOffsetPayload);
+      | _SwiftKeyPathComponentHeader_UnresolvedFieldOffsetPayload);
+  }
+  
+  constexpr static KeyPathComponentHeader
+  forClassComponentWithUnresolvedIndirectOffset() {
+    return KeyPathComponentHeader(
+      (_SwiftKeyPathComponentHeader_ClassTag
+      << _SwiftKeyPathComponentHeader_DiscriminatorShift)
+      | _SwiftKeyPathComponentHeader_UnresolvedIndirectOffsetPayload);
   }
   
   constexpr static KeyPathComponentHeader
diff --git a/include/swift/ABI/MetadataValues.h b/include/swift/ABI/MetadataValues.h
index 032026e..41737f8 100644
--- a/include/swift/ABI/MetadataValues.h
+++ b/include/swift/ABI/MetadataValues.h
@@ -92,6 +92,9 @@
 
   /// Does this class use Swift 1.0 refcounting?
   UsesSwift1Refcounting = 0x2,
+
+  /// Has this class a custom name, specified with the @objc attribute?
+  HasCustomObjCName = 0x4
 };
 inline bool operator&(ClassFlags a, ClassFlags b) {
   return (uint32_t(a) & uint32_t(b)) != 0;
diff --git a/include/swift/AST/Attr.def b/include/swift/AST/Attr.def
index 22b0dbb..a7b4f7f 100644
--- a/include/swift/AST/Attr.def
+++ b/include/swift/AST/Attr.def
@@ -273,18 +273,15 @@
           | NotSerialized | UserInaccessible,
           /* Not serialized */ 67)
 
-DECL_ATTR(NSKeyedArchiverClassName, NSKeyedArchiverClassName,
-          OnClass | NotSerialized | LongAttribute,
+DECL_ATTR(_objcRuntimeName, ObjCRuntimeName,
+          OnClass | NotSerialized | UserInaccessible | RejectByParser,
           /*Not serialized */ 68)
 
 SIMPLE_DECL_ATTR(_staticInitializeObjCMetadata, StaticInitializeObjCMetadata,
                  OnClass | NotSerialized | LongAttribute | RejectByParser,
                  /*Not serialized */ 69)
 
-SIMPLE_DECL_ATTR(NSKeyedArchiverEncodeNonGenericSubclassesOnly,
-                 NSKeyedArchiverEncodeNonGenericSubclassesOnly,
-                 OnClass | NotSerialized | LongAttribute,
-                 /*Not serialized */ 70)
+// 70 is available; it was not a serialized attribute.
 
 // HACK: Attribute needed to preserve source compatibility by downgrading errors
 // due to an SDK change in Dispatch
diff --git a/include/swift/AST/Attr.h b/include/swift/AST/Attr.h
index dcaa8f9..04ffd62 100644
--- a/include/swift/AST/Attr.h
+++ b/include/swift/AST/Attr.h
@@ -1161,21 +1161,26 @@
   }
 };
 
-/// Defines the @NSKeyedArchiverClassNameAttr attribute.
-class NSKeyedArchiverClassNameAttr : public DeclAttribute {
+/// A limited variant of \c @objc that's used for classes with generic ancestry.
+class ObjCRuntimeNameAttr : public DeclAttribute {
+  static StringRef getSimpleName(const ObjCAttr &Original) {
+    assert(Original.hasName());
+    return Original.getName()->getSimpleName().str();
+  }
 public:
-  NSKeyedArchiverClassNameAttr(StringRef Name, SourceLoc AtLoc, SourceRange Range, bool Implicit)
-    : DeclAttribute(DAK_NSKeyedArchiverClassName, AtLoc, Range, Implicit),
+  ObjCRuntimeNameAttr(StringRef Name, SourceLoc AtLoc, SourceRange Range,
+                      bool Implicit)
+    : DeclAttribute(DAK_ObjCRuntimeName, AtLoc, Range, Implicit),
       Name(Name) {}
 
-  NSKeyedArchiverClassNameAttr(StringRef Name, bool Implicit)
-    : NSKeyedArchiverClassNameAttr(Name, SourceLoc(), SourceRange(), /*Implicit=*/true) {}
+  explicit ObjCRuntimeNameAttr(const ObjCAttr &Original)
+    : ObjCRuntimeNameAttr(getSimpleName(Original), Original.AtLoc,
+                          Original.Range, Original.isImplicit()) {}
 
-  /// The legacy mangled name.
   const StringRef Name;
 
   static bool classof(const DeclAttribute *DA) {
-    return DA->getKind() == DAK_NSKeyedArchiverClassName;
+    return DA->getKind() == DAK_ObjCRuntimeName;
   }
 };
 
diff --git a/include/swift/AST/Decl.h b/include/swift/AST/Decl.h
index 4c30458..988d74e 100644
--- a/include/swift/AST/Decl.h
+++ b/include/swift/AST/Decl.h
@@ -44,6 +44,7 @@
   class GenericEnvironment;
   class ArchetypeType;
   class ASTContext;
+  struct ASTNode;
   class ASTPrinter;
   class ASTWalker;
   class ConstructorDecl;
@@ -2027,34 +2028,33 @@
   }
 };
 
-/// IfConfigDecl - This class represents the declaration-side representation of
-/// #if/#else/#endif blocks. Active and inactive block members are stored
-/// separately, with the intention being that active members will be handed
-/// back to the enclosing declaration.
+/// IfConfigDecl - This class represents #if/#else/#endif blocks.
+/// Active and inactive block members are stored separately, with the intention
+/// being that active members will be handed back to the enclosing context.
 class IfConfigDecl : public Decl {
   /// An array of clauses controlling each of the #if/#elseif/#else conditions.
   /// The array is ASTContext allocated.
-  ArrayRef<IfConfigClause<Decl *>> Clauses;
+  ArrayRef<IfConfigClause> Clauses;
   SourceLoc EndLoc;
 public:
   
-  IfConfigDecl(DeclContext *Parent, ArrayRef<IfConfigClause<Decl *>> Clauses,
+  IfConfigDecl(DeclContext *Parent, ArrayRef<IfConfigClause> Clauses,
                SourceLoc EndLoc, bool HadMissingEnd)
     : Decl(DeclKind::IfConfig, Parent), Clauses(Clauses), EndLoc(EndLoc)
   {
     IfConfigDeclBits.HadMissingEnd = HadMissingEnd;
   }
 
-  ArrayRef<IfConfigClause<Decl *>> getClauses() const { return Clauses; }
+  ArrayRef<IfConfigClause> getClauses() const { return Clauses; }
 
   /// Return the active clause, or null if there is no active one.
-  const IfConfigClause<Decl *> *getActiveClause() const {
+  const IfConfigClause *getActiveClause() const {
     for (auto &Clause : Clauses)
       if (Clause.isActive) return &Clause;
     return nullptr;
   }
 
-  const ArrayRef<Decl*> getActiveMembers() const {
+  const ArrayRef<ASTNode> getActiveClauseElements() const {
     if (auto *Clause = getActiveClause())
       return Clause->Elements;
     return {};
@@ -2162,6 +2162,8 @@
   /// \see getFormalAccess
   Accessibility getFormalAccessImpl(const DeclContext *useDC) const;
 
+  bool isVersionedInternalDecl() const;
+
   /// Returns the access level specified explicitly by the user, or provided by
   /// default according to language rules.
   ///
@@ -2171,9 +2173,16 @@
   /// taken into account.
   ///
   /// \sa getFormalAccessScope
-  Accessibility getFormalAccess(const DeclContext *useDC = nullptr) const {
+  Accessibility getFormalAccess(const DeclContext *useDC = nullptr,
+                                bool respectVersionedAttr = false) const {
     assert(hasAccessibility() && "accessibility not computed yet");
     Accessibility result = TypeAndAccess.getInt().getValue();
+    if (respectVersionedAttr &&
+        result == Accessibility::Internal &&
+        isVersionedInternalDecl()) {
+      assert(!useDC);
+      return Accessibility::Public;
+    }
     if (useDC && (result == Accessibility::Internal ||
                   result == Accessibility::Public))
       return getFormalAccessImpl(useDC);
@@ -2194,7 +2203,8 @@
   /// \sa getFormalAccess
   /// \sa isAccessibleFrom
   AccessScope
-  getFormalAccessScope(const DeclContext *useDC = nullptr) const;
+  getFormalAccessScope(const DeclContext *useDC = nullptr,
+                       bool respectVersionedAttr = false) const;
 
   /// Returns the access level that actually controls how a declaration should
   /// be emitted and may be used.
@@ -2374,6 +2384,9 @@
     return D->getKind() >= DeclKind::First_TypeDecl &&
            D->getKind() <= DeclKind::Last_TypeDecl;
   }
+
+  /// Compute an ordering between two type declarations that is ABI-stable.
+  static int compare(const TypeDecl *type1, const TypeDecl *type2);
 };
 
 /// A type declaration that can have generic parameters attached to it.  Because
diff --git a/include/swift/AST/DeclContext.h b/include/swift/AST/DeclContext.h
index aafc243..b3ba662 100644
--- a/include/swift/AST/DeclContext.h
+++ b/include/swift/AST/DeclContext.h
@@ -494,6 +494,19 @@
                          = nullptr,
                        bool sorted = false) const;
 
+  /// Retrieve the syntactic depth of this declaration context, i.e.,
+  /// the number of non-module-scoped contexts.
+  ///
+  /// For an extension of a nested type, the extension is depth 1.
+  unsigned getSyntacticDepth() const;
+
+  /// Retrieve the semantic depth of this declaration context, i.e.,
+  /// the number of non-module-scoped contexts.
+  ///
+  /// For an extension of a nested type, the depth of the nested type itself
+  /// is also included.
+  unsigned getSemanticDepth() const;
+
   /// \returns true if traversal was aborted, false otherwise.
   bool walkContext(ASTWalker &Walker);
 
diff --git a/include/swift/AST/DiagnosticsDriver.def b/include/swift/AST/DiagnosticsDriver.def
index 46283f2..be06d25 100644
--- a/include/swift/AST/DiagnosticsDriver.def
+++ b/include/swift/AST/DiagnosticsDriver.def
@@ -101,6 +101,8 @@
       "Swift requires a minimum deployment target of %0", (StringRef))
 ERROR(error_sdk_too_old,none,
       "Swift does not support the SDK '%0'", (StringRef))
+ERROR(error_ios_maximum_deployment_32,none,
+      "iOS %0 does not support 32-bit programs", (unsigned))
 
 ERROR(error_two_files_same_name,none,
       "filename \"%0\" used twice: '%1' and '%2'",
diff --git a/include/swift/AST/DiagnosticsFrontend.def b/include/swift/AST/DiagnosticsFrontend.def
index 975053d..f7c0ebd 100644
--- a/include/swift/AST/DiagnosticsFrontend.def
+++ b/include/swift/AST/DiagnosticsFrontend.def
@@ -183,6 +183,14 @@
       "symbol '%0' (%1) is in generated IR file, but not in TBD file",
       (StringRef, StringRef))
 
+ERROR(invalid_conditional_compilation_flag,none,
+      "conditional compilation flags must be valid Swift identifiers (rather than '%0')",
+      (StringRef))
+
+ERROR(cannot_assign_value_to_conditional_compilation_flag,none,
+      "conditional compilation flags do not have values in Swift; they are either present or absent"
+      " (rather than '%0')", (StringRef))
+
 #ifndef DIAG_NO_UNDEF
 # if defined(DIAG)
 #  undef DIAG
diff --git a/include/swift/AST/DiagnosticsParse.def b/include/swift/AST/DiagnosticsParse.def
index f68a37a..0b02cf9 100644
--- a/include/swift/AST/DiagnosticsParse.def
+++ b/include/swift/AST/DiagnosticsParse.def
@@ -1317,6 +1317,11 @@
       "expected ')' after name for @objc", ())
 ERROR(attr_objc_empty_name,none,
       "expected name within parentheses of @objc attribute", ())
+ERROR(attr_nskeyedarchiverclassname_removed, none,
+      "@NSKeyedArchiverClassName has been removed; use @objc instead", ())
+ERROR(attr_nskeyedarchiverencodenongenericsubclassesonly_removed, none,
+      "@NSKeyedArchiverEncodeNonGenericSubclassesOnly is no longer necessary",
+      ())
 
 // opened
 ERROR(opened_attribute_expected_lparen,none,
diff --git a/include/swift/AST/DiagnosticsSIL.def b/include/swift/AST/DiagnosticsSIL.def
index ca048b7..6d5db83 100644
--- a/include/swift/AST/DiagnosticsSIL.def
+++ b/include/swift/AST/DiagnosticsSIL.def
@@ -79,30 +79,35 @@
 NOTE(writebackoverlap_note,none,
       "concurrent writeback occurred here", ())
 
+ERROR(addressonly_type_used_in_multipattern_case,none,
+      "matching %select{type '%1'|a protocol value|a generic value}0 in multiple patterns "
+      "is not yet supported; use separate cases instead",
+      (unsigned, Type))
+
 ERROR(inout_argument_alias,none,
       "inout arguments are not allowed to alias each other", ())
 NOTE(previous_inout_alias,none,
       "previous aliasing argument", ())
 
 WARNING(exclusivity_access_required_swift3,none,
-        "simultaneous accesses to %0 %1, but "
-        "%select{initialization|read|modification|deinitialization}2 requires "
+        "overlapping accesses to %0, but "
+        "%select{initialization|read|modification|deinitialization}1 requires "
         "exclusive access; consider copying to a local variable",
-        (DescriptiveDeclKind, Identifier, unsigned))
+        (StringRef, unsigned))
 
 ERROR(exclusivity_access_required,none,
-      "simultaneous accesses to %0 %1, but "
-      "%select{initialization|read|modification|deinitialization}2 requires "
+      "overlapping accesses to %0, but "
+      "%select{initialization|read|modification|deinitialization}1 requires "
       "exclusive access; consider copying to a local variable",
-      (DescriptiveDeclKind, Identifier, unsigned))
+      (StringRef, unsigned))
 
 ERROR(exclusivity_access_required_unknown_decl,none,
-        "simultaneous accesses, but "
+        "overlapping accesses, but "
         "%select{initialization|read|modification|deinitialization}0 requires "
         "exclusive access; consider copying to a local variable", (unsigned))
 
 WARNING(exclusivity_access_required_unknown_decl_swift3,none,
-        "simultaneous accesses, but "
+        "overlapping accesses, but "
         "%select{initialization|read|modification|deinitialization}0 requires "
 "exclusive access; consider copying to a local variable", (unsigned))
 
diff --git a/include/swift/AST/DiagnosticsSema.def b/include/swift/AST/DiagnosticsSema.def
index 32dc1ab..c524f7c 100644
--- a/include/swift/AST/DiagnosticsSema.def
+++ b/include/swift/AST/DiagnosticsSema.def
@@ -417,7 +417,7 @@
       (DeclName))
 WARNING(expr_keypath_swift3_objc_inference,none,
         "argument of '#keyPath' refers to property %0 in %1 that depends on "
-        "'@objc' attribute inference deprecated in Swift 4",
+        "'@objc' inference deprecated in Swift 4",
         (DeclName, Identifier))
 ERROR(expr_keypath_type_of_property,none,
       "cannot refer to type member %0 within instance of type %1",
@@ -495,7 +495,7 @@
      (DescriptiveDeclKind))
 WARNING(expr_selector_swift3_objc_inference,none,
         "argument of '#selector' refers to %0 %1 in %2 that depends on "
-        "'@objc' attribute inference deprecated in Swift 4",
+        "'@objc' inference deprecated in Swift 4",
         (DescriptiveDeclKind, DeclName, Identifier))
 
 // Selectors-as-string-literals.
@@ -733,8 +733,6 @@
 
 ERROR(tuple_conversion_not_expressible,none,
       "cannot express tuple conversion %0 to %1", (Type, Type))
-ERROR(load_of_explicit_lvalue,none,
-      "%0 variable is not being passed by reference", (Type))
 
 //------------------------------------------------------------------------------
 // Expression Type Checking Errors
@@ -1164,7 +1162,7 @@
      "variadic superclass initializer defined here", ())
 
 WARNING(expr_dynamic_lookup_swift3_objc_inference,none,
-        "reference to %0 %1 of %2 depends on '@objc' attribute inference "
+        "reference to %0 %1 of %2 depends on '@objc' inference "
         "deprecated in Swift 4",
         (DescriptiveDeclKind, DeclName, Identifier))
 
@@ -1196,7 +1194,8 @@
       "%select{%select{variable|constant}0|property}1 "
       "%select{must be declared %select{"
       "%select{private|fileprivate|internal|%error|%error}3|private or fileprivate}4"
-      "|cannot be declared %select{%error|fileprivate|internal|public|open}3}2 "
+      "|cannot be declared "
+      "%select{in this context|fileprivate|internal|public|open}3}2 "
       "because its type uses "
       "%select{a private|a fileprivate|an internal|%error|%error}5 type",
       (bool, bool, bool, Accessibility, bool, Accessibility))
@@ -1211,7 +1210,8 @@
       "%select{%select{variable|constant}0|property}1 "
       "%select{must be declared %select{"
       "%select{private|fileprivate|internal|%error|%error}3|private or fileprivate}4"
-      "|cannot be declared %select{%error|fileprivate|internal|public|open}3}2 "
+      "|cannot be declared "
+      "%select{in this context|fileprivate|internal|public|open}3}2 "
       "because its type %6 uses "
       "%select{a private|a fileprivate|an internal|%error|%error}5 type",
       (bool, bool, bool, Accessibility, bool, Accessibility, Type))
@@ -1228,27 +1228,19 @@
       (unsigned))
 
 ERROR(nscoding_unstable_mangled_name,none,
-      "%select{private|fileprivate|nested|local|generic}0 class %1 has an "
+      "%select{private|fileprivate|nested|local}0 class %1 has an "
       "unstable name when archiving via 'NSCoding'",
       (unsigned, Type))
 WARNING(nscoding_unstable_mangled_name_warn,none,
-        "%select{private|fileprivate|nested|local|generic}0 class %1 has an "
+        "%select{private|fileprivate|nested|local}0 class %1 has an "
         "unstable name when archiving via 'NSCoding'",
         (unsigned, Type))
-NOTE(unstable_mangled_name_add_objc,none,
-     "for new classes, add '@objc' to specify a unique, prefixed Objective-C "
+NOTE(unstable_mangled_name_add_objc_new,none,
+     "for new classes, use '@objc' to specify a unique, prefixed Objective-C "
      "runtime name", ())
-NOTE(unstable_mangled_name_add_NSKeyedArchiverClassName,none,
-     "for compatibility with existing archives, use '@NSKeyedArchiverClassName' "
-     "to record the Swift 3 mangled name", ())
-NOTE(add_NSKeyedArchiverEncodeNonGenericSubclassesOnly_attr,none,
-     "generic class %0 should not be archived directly; "
-     "add @NSKeyedArchiverEncodeNonGenericSubclassesOnly "
-     "and only archive specific subclasses of this class", (Type))
-
-ERROR(attr_NSKeyedArchiverClassName_generic,none,
-      "'@NSKeyedArchiverClassName' cannot be applied to generic class %0",
-      (Type))
+NOTE(unstable_mangled_name_add_objc,none,
+     "for compatibility with existing archives, use '@objc' "
+     "to record the Swift 3 runtime name", ())
 
 // Generic types
 ERROR(unsupported_type_nested_in_generic_function,none,
@@ -1271,14 +1263,16 @@
 ERROR(type_alias_underlying_type_access,none,
       "type alias %select{must be declared %select{"
       "%select{private|fileprivate|internal|%error|%error}2|private or fileprivate}3"
-      "|cannot be declared %select{%error|fileprivate|internal|public|open}1}0 "
+      "|cannot be declared "
+      "%select{in this context|fileprivate|internal|public|open}1}0 "
       "because its underlying type uses "
       "%select{a private|a fileprivate|an internal|%error|%error}2 type",
       (bool, Accessibility, Accessibility, bool))
 WARNING(type_alias_underlying_type_access_warn,none,
         "type alias %select{should be declared "
         "%select{private|fileprivate|internal|%error|%error}2"
-        "|should not be declared %select{%error|fileprivate|internal|public|open}1}0 "
+        "|should not be declared "
+        "%select{in this context|fileprivate|internal|public|open}1}0 "
         "because its underlying type uses "
         "%select{a private|a fileprivate|an internal|%error|%error}2 type",
         (bool, Accessibility, Accessibility, bool))
@@ -1287,7 +1281,8 @@
 ERROR(subscript_type_access,none,
       "subscript %select{must be declared "
       "%select{private|fileprivate|internal|%error|%error}1"
-      "|cannot be declared %select{%error|fileprivate|internal|public|open}1}0 "
+      "|cannot be declared "
+      "%select{in this context|fileprivate|internal|public|open}1}0 "
       "because its %select{index|element type}3 uses "
       "%select{a private|a fileprivate|an internal|%error|%error}2 type",
       (bool, Accessibility, Accessibility, bool))
@@ -1304,7 +1299,8 @@
       "%select{function|method|initializer}4 "
       "%select{must be declared %select{"
       "%select{private|fileprivate|internal|%error|%error}1|private or fileprivate}2"
-      "|cannot be declared %select{%error|fileprivate|internal|public|open}1}0 "
+      "|cannot be declared "
+      "%select{in this context|fileprivate|internal|public|open}1}0 "
       "because its %select{parameter|result}5 uses "
       "%select{a private|a fileprivate|an internal|%error|%error}3 type",
       (bool, Accessibility, bool, Accessibility, unsigned, bool))
@@ -1424,11 +1420,6 @@
       " (in protocol %5) due to same-type requirement involving 'Self'",
       (DescriptiveDeclKind, DeclName, Type, DescriptiveDeclKind,
        DeclName, Type))
-WARNING(witness_self_same_type_warn,none,
-      "%0 %1 in non-final class %2 cannot be used to satisfy requirement %3 %4"
-      " (in protocol %5) due to same-type requirement involving 'Self'",
-      (DescriptiveDeclKind, DeclName, Type, DescriptiveDeclKind,
-       DeclName, Type))
 NOTE(witness_self_weaken_same_type,none,
       "consider weakening the same-type requirement %0 == %1 to a superclass "
       "requirement", (Type, Type))
@@ -1462,8 +1453,9 @@
       "%select{protocol must be declared %select{"
       "%select{private|fileprivate|internal|%error|%error}2"
       "|private or fileprivate}3 because it refines"
-      "|%select{%error|fileprivate|internal|public|%error}1 protocol cannot "
-      "refine}0 %select{a private|a fileprivate|an internal|%error|%error}2 protocol",
+      "|%select{in this context|fileprivate|internal|public|%error}1 "
+      "protocol cannot refine}0 "
+      "%select{a private|a fileprivate|an internal|%error|%error}2 protocol",
       (bool, Accessibility, Accessibility, bool))
 WARNING(protocol_refine_access_warn,none,
         "%select{protocol should be declared "
@@ -1502,7 +1494,8 @@
      (Type, DeclName, Type, Type, bool))
 ERROR(associated_type_access,none,
       "associated type in "
-      "%select{%error|a fileprivate|an internal|a public|%error}0 protocol uses "
+      "%select{a private|a fileprivate|an internal|a public|%error}0 protocol "
+      "uses "
       "%select{a private|a fileprivate|an internal|%error|%error}1 type in its "
       "%select{default definition|requirement}2 ",
       (Accessibility, Accessibility, unsigned))
@@ -1732,7 +1725,8 @@
 ERROR(generic_param_access,none,
       "%0 %select{must be declared %select{"
       "%select{private|fileprivate|internal|%error|%error}3|private or fileprivate}4"
-      "|cannot be declared %select{%error|fileprivate|internal|public|open}2}1 "
+      "|cannot be declared "
+      "%select{in this context|fileprivate|internal|public|open}2}1 "
       "because its generic %select{parameter|requirement}5 uses "
       "%select{a private|a fileprivate|an internal|%error|%error}3 type",
       (DescriptiveDeclKind, bool, Accessibility, Accessibility, bool, bool))
@@ -1954,7 +1948,7 @@
 
 // Enums
 ERROR(enum_case_access,none,
-      "enum case in %select{%error|a fileprivate|an internal|a public|%error}0 enum "
+      "enum case in %select{a private|a fileprivate|an internal|a public|%error}0 enum "
       "uses %select{a private|a fileprivate|an internal|%error|%error}1 type",
       (Accessibility, Accessibility))
 WARNING(enum_case_access_warn,none,
@@ -1985,7 +1979,8 @@
 ERROR(enum_raw_type_access,none,
       "enum %select{must be declared %select{"
       "%select{private|fileprivate|internal|%error|%error}2|private or fileprivate}3"
-      "|cannot be declared %select{%error|fileprivate|internal|public|open}1}0 "
+      "|cannot be declared "
+      "%select{in this context|fileprivate|internal|public|open}1}0 "
       "because its raw type uses "
       "%select{a private|a fileprivate|an internal|%error|%error}2 type",
       (bool, Accessibility, Accessibility, bool))
@@ -2024,6 +2019,8 @@
      "raw value auto-incremented from here",())
 NOTE(enum_raw_value_incrementing_from_zero,none,
      "raw value implicitly auto-incremented from zero",())
+NOTE(construct_raw_representable_from_unwrapped_value,none,
+     "construct %0 from unwrapped %1 value", (Type, Type))
 
 // Derived conformances
 
@@ -2477,6 +2474,8 @@
 ERROR(unicode_scalar_literal_broken_proto,none,
       "protocol 'ExpressibleByUnicodeScalarLiteral' is broken", ())
 
+ERROR(builtin_utf16_extended_grapheme_cluster_literal_broken_proto,none,
+      "protocol '_ExpressibleByBuiltinUTF16ExtendedGraphemeClusterLiteral' is broken", ())
 ERROR(builtin_extended_grapheme_cluster_literal_broken_proto,none,
       "protocol '_ExpressibleByBuiltinExtendedGraphemeClusterLiteral' is broken", ())
 ERROR(extended_grapheme_cluster_literal_broken_proto,none,
@@ -2702,9 +2701,6 @@
 ERROR(invalid_noescape_use,none,
       "non-escaping %select{value|parameter}1 %0 may only be called",
       (Identifier, bool))
-NOTE(noescape_autoclosure,none,
-    "parameter %0 is implicitly non-escaping because it was declared @autoclosure",
-     (Identifier))
 NOTE(noescape_parameter,none,
     "parameter %0 is implicitly non-escaping",
      (Identifier))
@@ -2894,7 +2890,11 @@
 ERROR(unknown_single_tuple_parameter_mismatch,none,
       "single parameter of type %0 is expected in call", (Type))
 
-
+ERROR(enum_element_pattern_assoc_values_mismatch,none,
+      "pattern with associated values does not match enum case %0",
+      (Identifier))
+NOTE(enum_element_pattern_assoc_values_remove,none,
+     "remove associated values to make the pattern match", ())
 ERROR(tuple_pattern_length_mismatch,none,
       "tuple pattern has the wrong length for tuple type %0", (Type))
 ERROR(tuple_pattern_label_mismatch,none,
@@ -3028,7 +3028,8 @@
 ERROR(class_super_access,none,
       "class %select{must be declared %select{"
       "%select{private|fileprivate|internal|%error|%error}2|private or fileprivate}3"
-      "|cannot be declared %select{%error|fileprivate|internal|public|open}1}0 "
+      "|cannot be declared "
+      "%select{in this context|fileprivate|internal|public|open}1}0 "
       "because its superclass is "
       "%select{private|fileprivate|internal|%error|%error}2",
       (bool, Accessibility, Accessibility, bool))
@@ -3166,7 +3167,7 @@
 
 ERROR(objc_for_generic_class,none,
       "generic subclasses of '@objc' classes cannot have an explicit '@objc' "
-      "attribute because they are not directly visible from Objective-C", ())
+      "because they are not directly visible from Objective-C", ())
 ERROR(objc_getter_for_nonobjc_property,none,
       "'@objc' getter for non-'@objc' property", ())
 ERROR(objc_getter_for_nonobjc_subscript,none,
@@ -3270,6 +3271,11 @@
 NOTE(objc_witness_objc_requirement,none,
      "satisfying requirement for %0 %1 in protocol %2",
      (DescriptiveDeclKind, DeclName, DeclName))
+WARNING(witness_swift3_objc_inference,none,
+        "use of %0 %1 to satisfy a requirement of protocol %2 depends on "
+        "'@objc' inference deprecated in Swift 4",
+        (DescriptiveDeclKind, DeclName, Type))
+
 
 ERROR(objc_invalid_on_func_curried,none,
       "method cannot be %" OBJC_ATTR_SELECT "0 because curried functions "
@@ -3594,6 +3600,9 @@
 #undef FRAGILE_FUNC_KIND
 
 NOTE(resilience_decl_declared_here,
+     none, "%0 %1 is not public", (DescriptiveDeclKind, DeclName))
+
+NOTE(resilience_decl_declared_here_versioned,
      none, "%0 %1 is not '@_versioned' or public", (DescriptiveDeclKind, DeclName))
 
 ERROR(designated_init_in_extension_resilient,none,
@@ -3704,6 +3713,9 @@
 WARNING(debug_long_closure_body, none,
         "closure took %0ms to type-check (limit: %1ms)",
         (unsigned, unsigned))
+WARNING(debug_long_expression, none,
+        "expression took %0ms to type-check (limit: %1ms)",
+        (unsigned, unsigned))
 
 //------------------------------------------------------------------------------
 // Pattern match diagnostics
diff --git a/include/swift/AST/Expr.h b/include/swift/AST/Expr.h
index 2482540..4091e0e 100644
--- a/include/swift/AST/Expr.h
+++ b/include/swift/AST/Expr.h
@@ -592,12 +592,12 @@
   /// a base class.
   bool isSuperExpr() const;
 
-  /// Returns true if directly appending a parameter list would be syntactically
-  /// valid.
+  /// Returns false if this expression needs to be wrapped in parens when
+  /// used inside of a any postfix expression, true otherwise.
   ///
-  /// Good examples: foo.bar, baz().
-  /// Bad examples: 
-  bool canAppendCallParentheses() const;
+  /// \param appendingPostfixOperator if the expression being
+  /// appended is a postfix operator like '!' or '?'.
+  bool canAppendPostfixExpression(bool appendingPostfixOperator = false) const;
 
   /// Returns true if this is an infix operator of some sort, including
   /// a builtin operator.
@@ -1076,10 +1076,6 @@
     llvm_unreachable("bad Kind");
   }
 
-  bool isDSOHandle() const {
-    return getKind() == DSOHandle;
-  }
-
   SourceRange getSourceRange() const { return Loc; }
 
   // For a magic identifier that produces a string literal, retrieve the
@@ -3112,6 +3108,51 @@
     return E->getKind() == ExprKind::AnyHashableErasure;
   }
 };
+
+/// ConditionalBridgeFromObjCExpr - Bridge a value from a non-native
+/// representation.
+class ConditionalBridgeFromObjCExpr : public ImplicitConversionExpr {
+  ConcreteDeclRef Conversion;
+
+public:
+  ConditionalBridgeFromObjCExpr(Expr *subExpr, Type type,
+                                ConcreteDeclRef conversion)
+    : ImplicitConversionExpr(ExprKind::ConditionalBridgeFromObjC, subExpr, type),
+      Conversion(conversion) {
+  }
+
+  /// \brief Retrieve the conversion function.
+  ConcreteDeclRef getConversion() const {
+    return Conversion;
+  }
+
+  static bool classof(const Expr *E) {
+    return E->getKind() == ExprKind::ConditionalBridgeFromObjC;
+  }
+};
+
+/// BridgeFromObjCExpr - Bridge a value from a non-native representation.
+class BridgeFromObjCExpr : public ImplicitConversionExpr {
+public:
+  BridgeFromObjCExpr(Expr *subExpr, Type type)
+    : ImplicitConversionExpr(ExprKind::BridgeFromObjC, subExpr, type) {}
+
+  static bool classof(const Expr *E) {
+    return E->getKind() == ExprKind::BridgeFromObjC;
+  }
+};
+
+/// BridgeToObjCExpr - Bridge a value to a non-native representation.
+class BridgeToObjCExpr : public ImplicitConversionExpr {
+public:
+  BridgeToObjCExpr(Expr *subExpr, Type type)
+    : ImplicitConversionExpr(ExprKind::BridgeToObjC, subExpr, type) {}
+
+  static bool classof(const Expr *E) {
+    return E->getKind() == ExprKind::BridgeToObjC;
+  }
+};
+
 /// UnresolvedSpecializeExpr - Represents an explicit specialization using
 /// a type parameter list (e.g. "Vector<Int>") that has not been resolved.
 class UnresolvedSpecializeExpr : public Expr {
@@ -3313,7 +3354,10 @@
   }
 
   /// \brief Retrieve the result type of this closure.
-  Type getResultType() const;
+  Type getResultType(llvm::function_ref<Type(const Expr *)> getType =
+                         [](const Expr *E) -> Type {
+    return E->getType();
+  }) const;
 
   /// \brief Return whether this closure is throwing when fully applied.
   bool isBodyThrowing() const;
diff --git a/include/swift/AST/ExprNodes.def b/include/swift/AST/ExprNodes.def
index 301ecf6..db83e2c 100644
--- a/include/swift/AST/ExprNodes.def
+++ b/include/swift/AST/ExprNodes.def
@@ -138,6 +138,9 @@
   EXPR(CollectionUpcastConversion, ImplicitConversionExpr)
   EXPR(Erasure, ImplicitConversionExpr)
   EXPR(AnyHashableErasure, ImplicitConversionExpr)
+  EXPR(BridgeToObjC, ImplicitConversionExpr)
+  EXPR(BridgeFromObjC, ImplicitConversionExpr)
+  EXPR(ConditionalBridgeFromObjC, ImplicitConversionExpr)
   EXPR(DerivedToBase, ImplicitConversionExpr)
   EXPR(ArchetypeToSuper, ImplicitConversionExpr)
   EXPR(InjectIntoOptional, ImplicitConversionExpr)
diff --git a/include/swift/AST/GenericSignatureBuilder.h b/include/swift/AST/GenericSignatureBuilder.h
index cac90b3..7a57f12 100644
--- a/include/swift/AST/GenericSignatureBuilder.h
+++ b/include/swift/AST/GenericSignatureBuilder.h
@@ -722,6 +722,16 @@
     /// \c TypeRepr.
     Inferred,
 
+    /// A requirement inferred from part of the signature of a declaration
+    /// but for which we don't want to produce warnings, e.g., the result
+    /// type of a generic function:
+    ///
+    /// func f<T>() -> Set<T> { ... } // infers T: Hashable, but don't warn
+    ///
+    /// This is a root requirement source, which can be described by a
+    /// \c TypeRepr.
+    QuietlyInferred,
+
     /// A requirement for the creation of the requirement signature of a
     /// protocol.
     ///
@@ -816,6 +826,7 @@
 
     case Explicit:
     case Inferred:
+    case QuietlyInferred:
     case NestedTypeNameMatch:
     case Superclass:
     case Parent:
@@ -853,6 +864,7 @@
     switch (kind) {
     case Explicit:
     case Inferred:
+    case QuietlyInferred:
     case RequirementSignatureSelf:
     case NestedTypeNameMatch:
       return true;
@@ -949,7 +961,8 @@
   /// inferred from some part of a generic declaration's signature, e.g., the
   /// parameter or result type of a generic function.
   static const RequirementSource *forInferred(PotentialArchetype *root,
-                                              const TypeRepr *typeRepr);
+                                              const TypeRepr *typeRepr,
+                                              bool quietly);
 
   /// Retrieve a requirement source representing the requirement signature
   /// computation for a protocol.
@@ -1021,7 +1034,7 @@
 
   /// Whether the requirement is inferred or derived from an inferred
   /// requirement.
-  bool isInferredRequirement() const;
+  bool isInferredRequirement(bool includeQuietInferred) const;
 
   /// Classify the kind of this source for diagnostic purposes.
   unsigned classifyDiagKind() const;
@@ -1135,6 +1148,8 @@
     Explicit,
     /// An inferred requirement source lacking a root.
     Inferred,
+    /// A quietly inferred requirement source lacking a root.
+    QuietlyInferred,
     /// A requirement source augmented by an abstract protocol requirement
     AbstractProtocol,
     /// A requirement source for a nested-type-name match introduced by
@@ -1180,8 +1195,9 @@
     return { Explicit, requirementRepr };
   }
 
-  static FloatingRequirementSource forInferred(const TypeRepr *typeRepr) {
-    return { Inferred, typeRepr };
+  static FloatingRequirementSource forInferred(const TypeRepr *typeRepr,
+                                               bool quietly) {
+    return { quietly? QuietlyInferred : Inferred, typeRepr };
   }
 
   static FloatingRequirementSource viaProtocolRequirement(
@@ -1248,7 +1264,7 @@
     Identifier name;
 
     /// The associated type or typealias for a resolved nested type.
-    TypeDecl *assocTypeOrAlias;
+    TypeDecl *assocTypeOrConcrete;
 
     /// The generic parameter key for a root.
     GenericParamKey genericParam;
@@ -1256,10 +1272,10 @@
     PAIdentifier(Identifier name) : name(name) { }
 
     PAIdentifier(AssociatedTypeDecl *assocType)
-      : assocTypeOrAlias(assocType) { }
+      : assocTypeOrConcrete(assocType) { }
 
-    PAIdentifier(TypeAliasDecl *typeAlias)
-      : assocTypeOrAlias(typeAlias) { }
+    PAIdentifier(TypeDecl *concreteDecl)
+      : assocTypeOrConcrete(concreteDecl) { }
 
     PAIdentifier(GenericParamKey genericParam) : genericParam(genericParam) { }
   } identifier;
@@ -1342,9 +1358,9 @@
     assert(parent != nullptr && "Not an associated type?");
   }
 
-  /// \brief Construct a new potential archetype for a type alias.
-  PotentialArchetype(PotentialArchetype *parent, TypeAliasDecl *typeAlias)
-    : parentOrBuilder(parent), identifier(typeAlias),
+  /// \brief Construct a new potential archetype for a concrete declaration.
+  PotentialArchetype(PotentialArchetype *parent, TypeDecl *concreteDecl)
+    : parentOrBuilder(parent), identifier(concreteDecl),
       isUnresolvedNestedType(false),
       IsRecursive(false), Invalid(false),
       DiagnosedRename(false)
@@ -1396,16 +1412,19 @@
     if (isUnresolvedNestedType)
       return nullptr;
 
-    return dyn_cast<AssociatedTypeDecl>(identifier.assocTypeOrAlias);
+    return dyn_cast<AssociatedTypeDecl>(identifier.assocTypeOrConcrete);
   }
 
+  /// Determine whether this PA is still unresolved.
+  bool isUnresolved() const { return isUnresolvedNestedType; }
+
   /// Resolve the potential archetype to the given associated type.
   void resolveAssociatedType(AssociatedTypeDecl *assocType,
                              GenericSignatureBuilder &builder);
 
   /// Resolve the potential archetype to the given typealias.
-  void resolveTypeAlias(TypeAliasDecl *typealias,
-                        GenericSignatureBuilder &builder);
+  void resolveConcreteType(TypeDecl *concreteDecl,
+                           GenericSignatureBuilder &builder);
 
   /// Determine whether this is a generic parameter.
   bool isGenericParam() const {
@@ -1436,16 +1455,19 @@
     if (isUnresolvedNestedType)
       return identifier.name;
 
-    return identifier.assocTypeOrAlias->getName();
+    return identifier.assocTypeOrConcrete->getName();
   }
 
-  /// Retrieve the type alias.
-  TypeAliasDecl *getTypeAliasDecl() const {
+  /// Retrieve the concrete type declaration.
+  TypeDecl *getConcreteTypeDecl() const {
     assert(getParent() && "not a nested type");
     if (isUnresolvedNestedType)
       return nullptr;
 
-    return dyn_cast<TypeAliasDecl>(identifier.assocTypeOrAlias);
+    if (isa<AssociatedTypeDecl>(identifier.assocTypeOrConcrete))
+      return nullptr;
+
+    return identifier.assocTypeOrConcrete;
   }
 
   /// Retrieve the set of protocols to which this potential archetype
@@ -1548,8 +1570,9 @@
   PotentialArchetype *getNestedType(AssociatedTypeDecl *assocType,
                                     GenericSignatureBuilder &builder);
 
-  /// \brief Retrieve (or create) a nested type with a known typealias.
-  PotentialArchetype *getNestedType(TypeAliasDecl *typealias,
+  /// \brief Retrieve (or create) a nested type with a known concrete type
+  /// declaration.
+  PotentialArchetype *getNestedType(TypeDecl *concreteDecl,
                                     GenericSignatureBuilder &builder);
 
   /// Describes the kind of update that is performed.
@@ -1581,7 +1604,7 @@
   /// type or typealias of the given protocol, unless the \c kind implies that
   /// a potential archetype should not be created if it's missing.
   PotentialArchetype *updateNestedTypeForConformance(
-                      PointerUnion<AssociatedTypeDecl *, TypeAliasDecl *> type,
+                      PointerUnion<AssociatedTypeDecl *, TypeDecl *> type,
                       NestedTypeUpdate kind);
 
   /// Update the named nested type when we know this type conforms to the given
diff --git a/include/swift/AST/Identifier.h b/include/swift/AST/Identifier.h
index faac839..6dc05aa 100644
--- a/include/swift/AST/Identifier.h
+++ b/include/swift/AST/Identifier.h
@@ -577,6 +577,12 @@
     return Storage.getArgumentNames();
   }
 
+  /// Asserts that this is a nullary selector and returns the single identifier.
+  Identifier getSimpleName() const {
+    assert(Storage.isSimpleName() && "not a nullary selector");
+    return Storage.getBaseIdentifier();
+  }
+
   /// Get a string representation of the selector.
   ///
   /// \param scratch Scratch space to use.
diff --git a/include/swift/AST/IfConfigClause.h b/include/swift/AST/IfConfigClause.h
index 7c8c1cf..a3ce674 100644
--- a/include/swift/AST/IfConfigClause.h
+++ b/include/swift/AST/IfConfigClause.h
@@ -22,11 +22,11 @@
 namespace swift {
   class Expr;
   class SourceLoc;
+  struct ASTNode;
 
 /// This represents one part of a #if block.  If the condition field is
 /// non-null, then this represents a #if or a #elseif, otherwise it represents
 /// an #else block.
-template <typename ElemTy>
 struct IfConfigClause {
   /// The location of the #if, #elseif, or #else keyword.
   SourceLoc Loc;
@@ -36,13 +36,13 @@
   Expr *Cond;
   
   /// Elements inside the clause
-  ArrayRef<ElemTy> Elements;
+  ArrayRef<ASTNode> Elements;
 
   /// True if this is the active clause of the #if block.
   bool isActive;
 
-  IfConfigClause<ElemTy>(SourceLoc Loc, Expr *Cond,
-                         ArrayRef<ElemTy> Elements, bool isActive)
+  IfConfigClause(SourceLoc Loc, Expr *Cond,
+                 ArrayRef<ASTNode> Elements, bool isActive)
     : Loc(Loc), Cond(Cond), Elements(Elements), isActive(isActive) {
   }
 };
diff --git a/include/swift/AST/KnownProtocols.def b/include/swift/AST/KnownProtocols.def
index 9cd0775..d405c79 100644
--- a/include/swift/AST/KnownProtocols.def
+++ b/include/swift/AST/KnownProtocols.def
@@ -85,6 +85,7 @@
 EXPRESSIBLE_BY_LITERAL_PROTOCOL_(ExpressibleByFileReferenceLiteral)
 
 BUILTIN_EXPRESSIBLE_BY_LITERAL_PROTOCOL_(ExpressibleByBuiltinBooleanLiteral)
+BUILTIN_EXPRESSIBLE_BY_LITERAL_PROTOCOL_(ExpressibleByBuiltinUTF16ExtendedGraphemeClusterLiteral)
 BUILTIN_EXPRESSIBLE_BY_LITERAL_PROTOCOL_(ExpressibleByBuiltinExtendedGraphemeClusterLiteral)
 BUILTIN_EXPRESSIBLE_BY_LITERAL_PROTOCOL_(ExpressibleByBuiltinFloatLiteral)
 BUILTIN_EXPRESSIBLE_BY_LITERAL_PROTOCOL_(ExpressibleByBuiltinIntegerLiteral)
diff --git a/include/swift/AST/Module.h b/include/swift/AST/Module.h
index 634419d..3b6b5e3 100644
--- a/include/swift/AST/Module.h
+++ b/include/swift/AST/Module.h
@@ -209,9 +209,6 @@
     unsigned ResilienceStrategy : 2;
   } Flags;
 
-  /// The magic __dso_handle variable.
-  VarDecl *DSOHandle;
-
   ModuleDecl(Identifier name, ASTContext &ctx);
 
 public:
diff --git a/include/swift/AST/PrintOptions.h b/include/swift/AST/PrintOptions.h
index b911706..2d528f4 100644
--- a/include/swift/AST/PrintOptions.h
+++ b/include/swift/AST/PrintOptions.h
@@ -279,7 +279,7 @@
   /// Print all decls that have at least this level of access.
   Accessibility AccessibilityFilter = Accessibility::Private;
 
-  /// Print IfConfigDecls and IfConfigStmts.
+  /// Print IfConfigDecls.
   bool PrintIfConfig = true;
 
   /// Whether we are printing for sil.
diff --git a/include/swift/AST/ProtocolConformance.h b/include/swift/AST/ProtocolConformance.h
index 2b52615..8959548 100644
--- a/include/swift/AST/ProtocolConformance.h
+++ b/include/swift/AST/ProtocolConformance.h
@@ -189,6 +189,11 @@
   ValueDecl *getWitnessDecl(ValueDecl *requirement,
                             LazyResolver *resolver) const;
 
+  /// Retrieve the witness corresponding to the given value requirement.
+  /// TODO: maybe this should return a Witness?
+  ConcreteDeclRef getWitnessDeclRef(ValueDecl *requirement,
+                                    LazyResolver *resolver) const;
+
 private:
   /// Determine whether we have a witness for the given requirement.
   bool hasWitness(ValueDecl *requirement) const;
@@ -234,10 +239,6 @@
   /// is either the default definition or was otherwise deduced.
   bool usesDefaultDefinition(AssociatedTypeDecl *requirement) const;
 
-  /// Returns true if this conformance has a layout that is known to all
-  /// consumers, based on the type/protocol involved in it.
-  bool hasFixedLayout() const;
-
   // Make vanilla new/delete illegal for protocol conformances.
   void *operator new(size_t bytes) = delete;
   void operator delete(void *data) SWIFT_DELETE_OPERATOR_DELETED;
@@ -423,6 +424,8 @@
 
   /// Retrieve the value witness corresponding to the given requirement.
   Witness getWitness(ValueDecl *requirement, LazyResolver *resolver) const;
+  ConcreteDeclRef getWitnessDeclRef(ValueDecl *requirement,
+                                    LazyResolver *resolver) const;
 
   /// Determine whether the protocol conformance has a witness for the given
   /// requirement.
@@ -581,6 +584,10 @@
   getAssociatedConformance(Type assocType, ProtocolDecl *protocol,
                            LazyResolver *resolver = nullptr) const;
 
+  /// Retrieve the witness corresponding to the given value requirement.
+  ConcreteDeclRef getWitnessDeclRef(ValueDecl *requirement,
+                                    LazyResolver *resolver) const;
+
   /// Determine whether the witness for the given requirement
   /// is either the default definition or was otherwise deduced.
   bool usesDefaultDefinition(AssociatedTypeDecl *requirement) const {
@@ -679,6 +686,10 @@
   getAssociatedConformance(Type assocType, ProtocolDecl *protocol,
                            LazyResolver *resolver = nullptr) const;
 
+  /// Retrieve the witness corresponding to the given value requirement.
+  ConcreteDeclRef getWitnessDeclRef(ValueDecl *requirement,
+                                    LazyResolver *resolver) const;
+
   /// Determine whether the witness for the given requirement
   /// is either the default definition or was otherwise deduced.
   bool usesDefaultDefinition(AssociatedTypeDecl *requirement) const {
diff --git a/include/swift/AST/SILOptions.h b/include/swift/AST/SILOptions.h
index 8e92b47..3ca943c 100644
--- a/include/swift/AST/SILOptions.h
+++ b/include/swift/AST/SILOptions.h
@@ -130,13 +130,6 @@
   /// Assume that code will be executed in a single-threaded environment.
   bool AssumeSingleThreaded = false;
 
-  /// Use the copy-on-write implementation for opaque existentials.
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
-  bool UseCOWExistentials = true;
-#else
-  bool UseCOWExistentials = false;
-#endif
-
   /// Indicates which sanitizer is turned on.
   SanitizerKind Sanitize : 2;
 
@@ -144,7 +137,7 @@
   bool EnforceExclusivityStatic = true;
 
   /// Emit checks to trap at run time when the law of exclusivity is violated.
-  bool EnforceExclusivityDynamic = false;
+  bool EnforceExclusivityDynamic = true;
 
   /// Enable the mandatory semantic arc optimizer.
   bool EnableMandatorySemanticARCOpts = false;
@@ -152,6 +145,11 @@
   /// \brief Enable large loadable types IRGen pass.
   bool EnableLargeLoadableTypes = false;
 
+  /// Enables the "fully fragile" resilience strategy.
+  ///
+  /// \see ResilienceStrategy::Fragile
+  bool SILSerializeAll = false;
+
   SILOptions() : Sanitize(SanitizerKind::None) {}
 
   /// Return a hash code of any components from these options that should
diff --git a/include/swift/AST/Stmt.h b/include/swift/AST/Stmt.h
index fe6ca39..afb0d45 100644
--- a/include/swift/AST/Stmt.h
+++ b/include/swift/AST/Stmt.h
@@ -655,46 +655,6 @@
   static bool classof(const Stmt *S) { return S->getKind() == StmtKind::Guard; }
 };
 
-/// IfConfigStmt - This class models the statement-side representation of
-/// #if/#else/#endif blocks.
-class IfConfigStmt : public Stmt {
-  /// An array of clauses controlling each of the #if/#elseif/#else conditions.
-  /// The array is ASTContext allocated.
-  ArrayRef<IfConfigClause<ASTNode>> Clauses;
-  SourceLoc EndLoc;
-  bool HadMissingEnd;
-
-public:
-  IfConfigStmt(ArrayRef<IfConfigClause<ASTNode>> Clauses, SourceLoc EndLoc,
-               bool HadMissingEnd)
-  : Stmt(StmtKind::IfConfig, /*implicit=*/false),
-    Clauses(Clauses), EndLoc(EndLoc), HadMissingEnd(HadMissingEnd) {}
-  
-  SourceLoc getIfLoc() const { return Clauses[0].Loc; }
-
-  SourceLoc getStartLoc() const { return getIfLoc(); }
-  SourceLoc getEndLoc() const { return EndLoc; }
-
-  bool hadMissingEnd() const { return HadMissingEnd; }
-  
-  const ArrayRef<IfConfigClause<ASTNode>> &getClauses() const {
-    return Clauses;
-  }
-
-  ArrayRef<ASTNode> getActiveClauseElements() const {
-    for (auto &Clause : Clauses)
-      if (Clause.isActive)
-        return Clause.Elements;
-    return ArrayRef<ASTNode>();
-  }
-
-  // Implement isa/cast/dyncast/etc.
-  static bool classof(const Stmt *S) {
-    return S->getKind() == StmtKind::IfConfig;
-  }
-};
-
-  
 /// WhileStmt - while statement. After type-checking, the condition is of
 /// type Builtin.Int1.
 class WhileStmt : public LabeledConditionalStmt {
diff --git a/include/swift/AST/StmtNodes.def b/include/swift/AST/StmtNodes.def
index 301f636..6c718ac 100644
--- a/include/swift/AST/StmtNodes.def
+++ b/include/swift/AST/StmtNodes.def
@@ -61,7 +61,6 @@
 STMT(Break, Stmt)
 STMT(Continue, Stmt)
 STMT(Fallthrough, Stmt)
-STMT(IfConfig, Stmt)
 STMT(Fail, Stmt)
 STMT(Throw, Stmt)
 
diff --git a/include/swift/AST/TypeLoc.h b/include/swift/AST/TypeLoc.h
index cc0913f..42601aa 100644
--- a/include/swift/AST/TypeLoc.h
+++ b/include/swift/AST/TypeLoc.h
@@ -54,6 +54,7 @@
 
   /// Get the representative location of this type, for diagnostic
   /// purposes.
+  /// This location is not necessarily the start location of the type repr.
   SourceLoc getLoc() const;
   SourceRange getSourceRange() const;
 
diff --git a/include/swift/AST/Types.h b/include/swift/AST/Types.h
index e192a3d..39ee8e3 100644
--- a/include/swift/AST/Types.h
+++ b/include/swift/AST/Types.h
@@ -45,6 +45,7 @@
   class AssociatedTypeDecl;
   class ASTContext;
   class ClassDecl;
+  class DependentMemberType;
   class GenericTypeParamDecl;
   class GenericTypeParamType;
   class GenericParamList;
@@ -76,12 +77,12 @@
   First_##Id##Type = FirstId, Last_##Id##Type = LastId,
 #include "swift/AST/TypeNodes.def"
   };
-
+  
 /// Various properties of types that are primarily defined recursively
 /// on structural types.
 class RecursiveTypeProperties {
 public:
-  enum { BitWidth = 11 };
+  enum { BitWidth = 10 };
 
   /// A single property.
   ///
@@ -99,31 +100,25 @@
 
     /// This type expression contains an UnresolvedType.
     HasUnresolvedType    = 0x08,
-   
-    /// This type expression contains an InOutType other than as a
-    /// function input.
-    HasInOut             = 0x10,
-
+    
     /// Whether this type expression contains an unbound generic type.
-    HasUnboundGeneric    = 0x20,
+    HasUnboundGeneric    = 0x10,
 
     /// This type expression contains an LValueType other than as a
     /// function input, and can be loaded to convert to an rvalue.
-    IsLValue             = 0x40,
+    IsLValue             = 0x20,
 
     /// This type expression contains an opened existential ArchetypeType.
-    HasOpenedExistential = 0x80,
+    HasOpenedExistential = 0x40,
 
     /// This type expression contains a DynamicSelf type.
-    HasDynamicSelf       = 0x100,
+    HasDynamicSelf       = 0x80,
 
     /// This type contains an Error type.
-    HasError             = 0x200,
+    HasError             = 0x100,
 
     /// This type contains a DependentMemberType.
-    HasDependentMember   = 0x400,
-
-    IsNotMaterializable  = (HasInOut | IsLValue)
+    HasDependentMember   = 0x200,
   };
 
 private:
@@ -150,10 +145,6 @@
 
   /// Does a type with these properties have an unresolved type somewhere in it?
   bool hasUnresolvedType() const { return Bits & HasUnresolvedType; }
-
-  /// Does a type with these properties structurally contain an
-  /// inout, except as the parameter of a function?
-  bool hasInOut() const { return Bits & HasInOut; }
   
   /// Is a type with these properties an lvalue?
   bool isLValue() const { return Bits & IsLValue; }
@@ -165,10 +156,6 @@
   /// non-type parameter base, such as a type variable or concrete type?
   bool hasDependentMember() const { return Bits & HasDependentMember; }
 
-  /// Is a type with these properties materializable: that is, is it a
-  /// first-class value type?
-  bool isMaterializable() const { return !(Bits & IsNotMaterializable); }
-
   /// Does a type with these properties structurally contain an
   /// archetype?
   bool hasOpenedExistential() const { return Bits & HasOpenedExistential; }
@@ -349,6 +336,14 @@
   };
   enum { NumProtocolCompositionTypeBits = NumTypeBaseBits + 1 };
   static_assert(NumProtocolCompositionTypeBits <= 32, "fits in an unsigned");
+  struct TupleTypeBitfields {
+    unsigned : NumTypeBaseBits;
+    
+    /// Whether an element of the tuple is inout.
+    unsigned HasInOutElement : 1;
+  };
+  enum { NumTupleTypeBits = NumTypeBaseBits + 1 };
+  static_assert(NumTupleTypeBits <= 32, "fits in an unsigned");
   
   union {
     TypeBaseBitfields TypeBaseBits;
@@ -359,6 +354,7 @@
     SILFunctionTypeBitfields SILFunctionTypeBits;
     AnyMetatypeTypeBitfields AnyMetatypeTypeBits;
     ProtocolCompositionTypeBitfields ProtocolCompositionTypeBits;
+    TupleTypeBitfields TupleTypeBits;
   };
 
 protected:
@@ -444,13 +440,6 @@
     return RecursiveTypeProperties(TypeBaseBits.Properties);
   }
 
-  /// isMaterializable - Is this type 'materializable' according to
-  /// the rules of the language?  Basically, does it not contain any
-  /// l-value types?
-  bool isMaterializable() const {
-    return getRecursiveProperties().isMaterializable();
-  }
-
   /// hasReferenceSemantics() - Do objects of this type have reference
   /// semantics?
   bool hasReferenceSemantics();
@@ -489,13 +478,7 @@
   bool hasUnresolvedType() const {
     return getRecursiveProperties().hasUnresolvedType();
   }
-
-  /// \brief Determine whether the type involves an inout type, except
-  /// as a function input.
-  bool hasInOut() const {
-    return getRecursiveProperties().hasInOut();
-  }
-
+  
   /// \brief Determine whether the type involves an archetype.
   bool hasArchetype() const {
     return getRecursiveProperties().hasArchetype();
@@ -552,14 +535,24 @@
     return getRecursiveProperties().hasTypeParameter();
   }
 
+  /// Find any unresolved dependent member type within this type.
+  ///
+  /// "Unresolved" dependent member types have no known associated type,
+  /// and are only used transiently in the type checker.
+  const DependentMemberType *findUnresolvedDependentMemberType();
+
   /// Return the root generic parameter of this type parameter type.
   GenericTypeParamType *getRootGenericParam();
 
   /// Determines whether this type is an lvalue. This includes both straight
   /// lvalue types as well as tuples or optionals of lvalues.
-  bool isLValueType() {
+  bool hasLValueType() {
     return getRecursiveProperties().isLValue();
   }
+  
+  /// Is a type with these properties materializable: that is, is it a
+  /// first-class value type?
+  bool isMaterializable();
 
   /// Determine whether the type is dependent on DynamicSelf.
   bool hasDynamicSelfType() const {
@@ -583,7 +576,7 @@
   }
 
   /// \brief Check if this type is a valid type for the LHS of an assignment.
-  /// This mainly means isLValueType(), but empty tuples and tuples of empty
+  /// This mainly means hasLValueType(), but empty tuples and tuples of empty
   /// tuples also qualify.
   bool isAssignableType();
 
@@ -607,6 +600,9 @@
   /// bound.
   bool isClassExistentialType();
 
+  /// Opens an existential instance or meta-type and returns the opened type.
+  Type openAnyExistentialType(ArchetypeType *&opened);
+
   /// Break an existential down into a set of constraints.
   ExistentialLayout getExistentialLayout();
 
@@ -1580,7 +1576,12 @@
   /// varargs element (i.e., if it is "Int...", this returns Int, not [Int]).
   /// Otherwise, this returns Type().
   Type getVarArgsBaseType() const;
-
+  
+  /// Returns true if this tuple has inout elements.
+  bool hasInOutElement() const {
+    return static_cast<bool>(TupleTypeBits.HasInOutElement);
+  }
+  
   // Implement isa/cast/dyncast/etc.
   static bool classof(const TypeBase *T) {
     return T->getKind() == TypeKind::Tuple;
@@ -1594,8 +1595,10 @@
   
 private:
   TupleType(ArrayRef<TupleTypeElt> elements, const ASTContext *CanCtx,
-            RecursiveTypeProperties properties)
+            RecursiveTypeProperties properties,
+            bool hasInOut)
      : TypeBase(TypeKind::Tuple, CanCtx, properties), Elements(elements) {
+     TupleTypeBits.HasInOutElement = hasInOut;
   }
 };
 BEGIN_CAN_TYPE_WRAPPER(TupleType, Type)
@@ -2301,10 +2304,44 @@
 class AnyFunctionType : public TypeBase {
   const Type Input;
   const Type Output;
-
+  const unsigned NumParams;
+  
 public:
   using Representation = FunctionTypeRepresentation;
   
+  class Param {
+  public:
+    explicit Param(Type t) : Ty(t), Label(Identifier()), Flags() {}
+    explicit Param(const TupleTypeElt &tte)
+      : Ty(tte.getType()), Label(tte.getName()),
+        Flags(tte.getParameterFlags()) {}
+    
+  private:
+    /// The type of the parameter. For a variadic parameter, this is the
+    /// element type.
+    Type Ty;
+    
+    // The label associated with the parameter, if any.
+    Identifier Label;
+    
+    /// Parameter specific flags.
+    ParameterTypeFlags Flags = {};
+    
+  public:
+    Type getType() const { return Ty; }
+    
+    Identifier getLabel() const { return Label; }
+    
+    /// Whether the parameter is varargs
+    bool isVariadic() const { return Flags.isVariadic(); }
+    
+    /// Whether the parameter is marked '@autoclosure'
+    bool isAutoClosure() const { return Flags.isAutoClosure(); }
+    
+    /// Whether the parameter is marked '@escaping'
+    bool isEscaping() const { return Flags.isEscaping(); }
+  };
+  
   /// \brief A class which abstracts out some details necessary for
   /// making a call.
   class ExtInfo {
@@ -2446,16 +2483,18 @@
 protected:
   AnyFunctionType(TypeKind Kind, const ASTContext *CanTypeContext,
                   Type Input, Type Output, RecursiveTypeProperties properties,
-                  const ExtInfo &Info)
-  : TypeBase(Kind, CanTypeContext, properties), Input(Input), Output(Output) {
+                  unsigned NumParams, const ExtInfo &Info)
+  : TypeBase(Kind, CanTypeContext, properties), Input(Input), Output(Output),
+    NumParams(NumParams) {
     AnyFunctionTypeBits.ExtInfo = Info.Bits;
   }
 
 public:
-
   Type getInput() const { return Input; }
   Type getResult() const { return Output; }
-
+  ArrayRef<AnyFunctionType::Param> getParams() const;
+  unsigned getNumParams() const { return NumParams; }
+  
   ExtInfo getExtInfo() const {
     return ExtInfo(AnyFunctionTypeBits.ExtInfo);
   }
@@ -2505,7 +2544,10 @@
 ///
 /// For example:
 ///   let x : (Float, Int) -> Int
-class FunctionType : public AnyFunctionType {
+class FunctionType final : public AnyFunctionType,
+    private llvm::TrailingObjects<FunctionType, AnyFunctionType::Param> {
+  friend TrailingObjects;
+      
 public:
   /// 'Constructor' Factory Function
   static FunctionType *get(Type Input, Type Result) {
@@ -2513,14 +2555,21 @@
   }
 
   static FunctionType *get(Type Input, Type Result, const ExtInfo &Info);
-
+      
+      
+  // Retrieve the input parameters of this function type.
+  ArrayRef<AnyFunctionType::Param> getParams() const {
+    return {getTrailingObjects<AnyFunctionType::Param>(), getNumParams()};
+  }
+      
   // Implement isa/cast/dyncast/etc.
   static bool classof(const TypeBase *T) {
     return T->getKind() == TypeKind::Function;
   }
-  
+      
 private:
-  FunctionType(Type Input, Type Result,
+  FunctionType(ArrayRef<AnyFunctionType::Param> params,
+               Type Input, Type Result,
                RecursiveTypeProperties properties,
                const ExtInfo &Info);
 };
@@ -2591,25 +2640,34 @@
 /// on those parameters and dependent member types thereof. The input and
 /// output types of the generic function can be expressed in terms of those
 /// generic parameters.
-class GenericFunctionType : public AnyFunctionType,
-                            public llvm::FoldingSetNode
-{
+class GenericFunctionType final : public AnyFunctionType,
+    public llvm::FoldingSetNode,
+    private llvm::TrailingObjects<GenericFunctionType, AnyFunctionType::Param> {
+  friend TrailingObjects;
+      
   GenericSignature *Signature;
 
   /// Construct a new generic function type.
   GenericFunctionType(GenericSignature *sig,
+                      ArrayRef<AnyFunctionType::Param> params,
                       Type input,
                       Type result,
                       const ExtInfo &info,
                       const ASTContext *ctx,
                       RecursiveTypeProperties properties);
+      
 public:
   /// Create a new generic function type.
   static GenericFunctionType *get(GenericSignature *sig,
                                   Type input,
                                   Type result,
                                   const ExtInfo &info);
-
+      
+  // Retrieve the input parameters of this function type.
+  ArrayRef<AnyFunctionType::Param> getParams() const {
+    return {getTrailingObjects<AnyFunctionType::Param>(), getNumParams()};
+  }
+      
   /// Retrieve the generic signature of this function type.
   GenericSignature *getGenericSignature() const {
     return Signature;
@@ -4391,6 +4449,19 @@
   return false;
 }
 
+inline bool TypeBase::isMaterializable() {
+  if (hasLValueType())
+    return false;
+  
+  if (is<InOutType>())
+    return false;
+  
+  if (auto *TTy = getAs<TupleType>())
+    return !TTy->hasInOutElement();
+  
+  return true;
+}
+
 inline GenericTypeParamType *TypeBase::getRootGenericParam() {
   Type t(this);
 
diff --git a/include/swift/Basic/Diff.h b/include/swift/Basic/Diff.h
new file mode 100644
index 0000000..2c16fc0
--- /dev/null
+++ b/include/swift/Basic/Diff.h
@@ -0,0 +1,2598 @@
+/*
+ * Copyright 2008 Google Inc. All Rights Reserved.
+ * Author: fraser@google.com (Neil Fraser)
+ * Author: mikeslemmer@gmail.com (Mike Slemmer)
+ * Author: snhere@gmail.com (Sergey Nozhenko)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Diff Match and Patch
+ * http://code.google.com/p/google-diff-match-patch/
+ */
+
+#ifndef DIFF_MATCH_PATCH_H
+#define DIFF_MATCH_PATCH_H
+
+#include <limits>
+#include <list>
+#include <map>
+#include <string>
+#include <vector>
+#include <algorithm>
+#include <cstdlib>
+#include <cwchar>
+#include <time.h>
+
+#include "llvm/Support/ErrorHandling.h"
+
+/*
+ * Functions for diff, match and patch.
+ * Computes the difference between two texts to create a patch.
+ * Applies the patch onto another text, allowing for errors.
+ *
+ * @author fraser@google.com (Neil Fraser)
+ *
+ * Qt/C++ port by mikeslemmer@gmail.com (Mike Slemmer)
+ *
+ * STL-only port by snhere@gmail.com (Sergey Nozhenko)
+ * and some tweaks for std::string by leutloff@sundancer.oche.de (Christian Leutloff)
+ *
+ * Here is a trivial sample program:
+ *
+
+ #include "diff_match_patch.h"
+ #include <string>
+ using namespace std;
+ int main(int argc, char **argv) {
+   diff_match_patch<wstring> dmp;
+   wstring str1 = L"First string in diff";
+   wstring str2 = L"Second string in diff";
+
+   wstring strPatch = dmp.patch_toText(dmp.patch_make(str1, str2));
+   pair<wstring, vector<bool> > out
+       = dmp.patch_apply(dmp.patch_fromText(strPatch), str1);
+   wstring strResult = out.first;
+
+   // here, strResult will equal str2 above.
+   return 0;
+ }
+
+ */
+
+// Character type dependencies
+template <class char_t> struct diff_match_patch_traits {};
+
+/**
+ * Class containing the diff, match and patch methods.
+ * Also contains the behaviour settings.
+ */
+template <class stringT, class traits = diff_match_patch_traits<typename stringT::value_type> >
+class diff_match_patch {
+ public:
+  /**
+  * String and character types
+  */
+  typedef stringT string_t;
+  typedef typename string_t::value_type char_t;
+
+  /**-
+  * The data structure representing a diff is a Linked list of Diff objects:
+  * {Diff(Operation.DELETE, "Hello"), Diff(Operation.INSERT, "Goodbye"),
+  *  Diff(Operation.EQUAL, " world.")}
+  * which means: delete "Hello", add "Goodbye" and keep " world."
+  */
+  enum Operation {
+    DELETE, INSERT, EQUAL
+  };
+
+  /**
+  * Class representing one diff operation.
+  */
+  class Diff {
+   public:
+    Operation operation;
+    // One of: INSERT, DELETE or EQUAL.
+
+    string_t text;
+    // The text associated with this diff operation.
+
+    /**
+     * Constructor.  Initializes the diff with the provided values.
+     * @param _operation One of INSERT, DELETE or EQUAL.
+     * @param _text The text being applied.
+     */
+    Diff(Operation _operation, const string_t &_text) : operation(_operation), text(_text) {}
+    Diff() {}
+
+    /**
+     * Display a human-readable version of this Diff.
+     * @return text version.
+     */
+    string_t toString() const {
+      string_t prettyText = text;
+      // Replace linebreaks with Pilcrow signs.
+      for (typename string_t::iterator i = prettyText.begin(); i != prettyText.end(); ++i)
+        if (traits::to_wchar(*i) == L'\n') *i = traits::from_wchar(L'\u00b6');
+      return traits::cs(L"Diff(") + strOperation(operation) + traits::cs(L",\"") + prettyText + traits::cs(L"\")");
+    }
+
+    /**
+     * Is this Diff equivalent to another Diff?
+     * @param d Another Diff to compare against
+     * @return true or false
+     */
+    bool operator==(const Diff &d) const {
+      return (d.operation == this->operation) && (d.text == this->text);
+    }
+    bool operator!=(const Diff &d) const { return !(operator == (d)); }
+
+    static string_t strOperation(Operation op) {
+      switch (op) {
+        case INSERT:
+          return traits::cs(L"INSERT");
+        case DELETE:
+          return traits::cs(L"DELETE");
+        case EQUAL:
+          return traits::cs(L"EQUAL");
+      }
+      llvm_unreachable("Invalid operation.");
+    }
+  };
+
+  typedef std::list<Diff> Diffs;
+
+
+  /**
+  * Class representing one patch operation.
+  */
+  class Patch {
+   public:
+    Diffs diffs;
+    int start1;
+    int start2;
+    int length1;
+    int length2;
+
+    /**
+     * Constructor.  Initializes with an empty list of diffs.
+     */
+    Patch() : start1(0), start2(0), length1(0), length2(0) {}
+
+    bool isNull() const {
+      return start1 == 0 && start2 == 0 && length1 == 0 && length2 == 0 && diffs.size() == 0;
+    }
+
+    /**
+     * Emulate GNU diff's format.
+     * Header: @@ -382,8 +481,9 @@
+     * Indices are printed as 1-based, not 0-based.
+     * @return The GNU diff string
+     */
+    string_t toString() const {
+      string_t coords1, coords2;
+      if (length1 == 0) {
+        coords1 = to_string(start1) + traits::cs(L",0");
+      } else if (length1 == 1) {
+        coords1 = to_string(start1 + 1);
+      } else {
+        coords1 = to_string(start1 + 1) + traits::from_wchar(L',') + to_string(length1);
+      }
+      if (length2 == 0) {
+        coords2 = to_string(start2) + traits::cs(L",0");
+      } else if (length2 == 1) {
+        coords2 = to_string(start2 + 1);
+      } else {
+        coords2 = to_string(start2 + 1) + traits::from_wchar(L',') + to_string(length2);
+      }
+      string_t text(traits::cs(L"@@ -") + coords1 + traits::cs(L" +") + coords2 + traits::cs(L" @@\n"));
+      // Escape the body of the patch with %xx notation.
+      for (typename Diffs::const_iterator cur_diff = diffs.begin(); cur_diff != diffs.end(); ++cur_diff) {
+        switch ((*cur_diff).operation) {
+          case INSERT:
+            text += traits::from_wchar(L'+');
+            break;
+          case DELETE:
+            text += traits::from_wchar(L'-');
+            break;
+          case EQUAL:
+            text += traits::from_wchar(L' ');
+            break;
+        }
+        append_percent_encoded(text, (*cur_diff).text);
+        text += traits::from_wchar(L'\n');
+      }
+
+      return text;
+    }
+  };
+
+  typedef std::list<Patch> Patches;
+
+  friend class diff_match_patch_test;
+
+ public:
+  // Defaults.
+  // Set these on your diff_match_patch instance to override the defaults.
+
+  // Number of seconds to map a diff before giving up (0 for infinity).
+  float Diff_Timeout;
+  // Cost of an empty edit operation in terms of edit characters.
+  short Diff_EditCost;
+  // At what point is no match declared (0.0 = perfection, 1.0 = very loose).
+  float Match_Threshold;
+  // How far to search for a match (0 = exact location, 1000+ = broad match).
+  // A match this many characters away from the expected location will add
+  // 1.0 to the score (0.0 is a perfect match).
+  int Match_Distance;
+  // When deleting a large block of text (over ~64 characters), how close does
+  // the contents have to match the expected contents. (0.0 = perfection,
+  // 1.0 = very loose).  Note that Match_Threshold controls how closely the
+  // end points of a delete need to match.
+  float Patch_DeleteThreshold;
+  // Chunk size for context length.
+  short Patch_Margin;
+
+  // The number of bits in an int.
+  short Match_MaxBits;
+
+
+ public:
+
+  diff_match_patch() :
+    Diff_Timeout(1.0f),
+    Diff_EditCost(4),
+    Match_Threshold(0.5f),
+    Match_Distance(1000),
+    Patch_DeleteThreshold(0.5f),
+    Patch_Margin(4),
+    Match_MaxBits(32) {
+  }
+
+  //  DIFF FUNCTIONS
+
+  /**
+   * Find the differences between two texts.
+   * @param text1 Old string to be diffed.
+   * @param text2 New string to be diffed.
+   * @param checklines Speedup flag.  If false, then don't run a
+   *     line-level diff first to identify the changed areas.
+   *     If true, then run a faster slightly less optimal diff.
+   *     Most of the time checklines is wanted, so default to true.
+   * @return Linked List of Diff objects.
+   */
+  Diffs diff_main(const string_t &text1, const string_t &text2, bool checklines = true) const {
+    // Set a deadline by which time the diff must be complete.
+    clock_t deadline;
+    if (Diff_Timeout <= 0) {
+      deadline = std::numeric_limits<clock_t>::max();
+    } else {
+      deadline = clock() + (clock_t)(Diff_Timeout * CLOCKS_PER_SEC);
+    }
+    Diffs diffs;
+    diff_main(text1, text2, checklines, deadline, diffs);
+    return diffs;
+  }
+
+  /**
+   * Find the differences between two texts.  Simplifies the problem by
+   * stripping any common prefix or suffix off the texts before diffing.
+   * @param text1 Old string to be diffed.
+   * @param text2 New string to be diffed.
+   * @param checklines Speedup flag.  If false, then don't run a
+   *     line-level diff first to identify the changed areas.
+   *     If true, then run a faster slightly less optimal diff.
+   * @param deadline Time when the diff should be complete by.  Used
+   *     internally for recursive calls.  Users should set DiffTimeout instead.
+   * @param diffs Linked List of Diff objects.
+   */
+ private:
+  static void diff_main(const string_t &text1, const string_t &text2, bool checklines, clock_t deadline, Diffs& diffs) {
+    diffs.clear();
+
+    // Check for equality (speedup).
+    if (text1 == text2) {
+      if (!text1.empty()) {
+        diffs.push_back(Diff(EQUAL, text1));
+      }
+    }
+    else {
+      // Trim off common prefix (speedup).
+      int commonlength = diff_commonPrefix(text1, text2);
+      const string_t &commonprefix = text1.substr(0, commonlength);
+      string_t textChopped1 = text1.substr(commonlength);
+      string_t textChopped2 = text2.substr(commonlength);
+
+      // Trim off common suffix (speedup).
+      commonlength = diff_commonSuffix(textChopped1, textChopped2);
+      const string_t &commonsuffix = right(textChopped1, commonlength);
+      textChopped1 = textChopped1.substr(0, textChopped1.length() - commonlength);
+      textChopped2 = textChopped2.substr(0, textChopped2.length() - commonlength);
+
+      // Compute the diff on the middle block.
+      diff_compute(textChopped1, textChopped2, checklines, deadline, diffs);
+
+      // Restore the prefix and suffix.
+      if (!commonprefix.empty()) {
+        diffs.push_front(Diff(EQUAL, commonprefix));
+      }
+      if (!commonsuffix.empty()) {
+        diffs.push_back(Diff(EQUAL, commonsuffix));
+      }
+
+      diff_cleanupMerge(diffs);
+    }
+  }
+
+  /**
+   * Find the differences between two texts.  Assumes that the texts do not
+   * have any common prefix or suffix.
+   * @param text1 Old string to be diffed.
+   * @param text2 New string to be diffed.
+   * @param checklines Speedup flag.  If false, then don't run a
+   *     line-level diff first to identify the changed areas.
+   *     If true, then run a faster slightly less optimal diff.
+   * @param deadline Time when the diff should be complete by.
+   * @param diffs Linked List of Diff objects.
+   */
+ private:
+  static void diff_compute(string_t text1, string_t text2, bool checklines, clock_t deadline, Diffs& diffs) {
+    if (text1.empty()) {
+      // Just add some text (speedup).
+      diffs.push_back(Diff(INSERT, text2));
+      return;
+    }
+
+    if (text2.empty()) {
+      // Just delete some text (speedup).
+      diffs.push_back(Diff(DELETE, text1));
+      return;
+    }
+
+    {
+      const string_t& longtext = text1.length() > text2.length() ? text1 : text2;
+      const string_t& shorttext = text1.length() > text2.length() ? text2 : text1;
+      const size_t i = longtext.find(shorttext);
+      if (i != string_t::npos) {
+        // Shorter text is inside the longer text (speedup).
+        const Operation op = (text1.length() > text2.length()) ? DELETE : INSERT;
+        diffs.push_back(Diff(op, longtext.substr(0, i)));
+        diffs.push_back(Diff(EQUAL, shorttext));
+        diffs.push_back(Diff(op, safeMid(longtext, i + shorttext.length())));
+        return;
+      }
+
+      if (shorttext.length() == 1) {
+        // Single character string.
+        // After the previous speedup, the character can't be an equality.
+        diffs.push_back(Diff(DELETE, text1));
+        diffs.push_back(Diff(INSERT, text2));
+        return;
+      }
+      // Garbage collect longtext and shorttext by scoping out.
+    }
+
+    // Don't risk returning a non-optimal diff if we have unlimited time.
+    if (deadline != std::numeric_limits<clock_t>::max()) {
+      // Check to see if the problem can be split in two.
+      HalfMatchResult hm;
+      if (diff_halfMatch(text1, text2, hm)) {
+        // A half-match was found, sort out the return data.
+        // Send both pairs off for separate processing.
+        diff_main(hm.text1_a, hm.text2_a, checklines, deadline, diffs);
+        diffs.push_back(Diff(EQUAL, hm.mid_common));
+        Diffs diffs_b;
+        diff_main(hm.text1_b, hm.text2_b, checklines, deadline, diffs_b);
+        diffs.splice(diffs.end(), diffs_b);
+        return;
+      }
+    }
+
+    // Perform a real diff.
+    if (checklines && text1.length() > 100 && text2.length() > 100) {
+      diff_lineMode(text1, text2, deadline, diffs);
+      return;
+    }
+
+    diff_bisect(text1, text2, deadline, diffs);
+  }
+
+  /**
+   * Do a quick line-level diff on both strings, then rediff the parts for
+   * greater accuracy.
+   * This speedup can produce non-minimal diffs.
+   * @param text1 Old string to be diffed.
+   * @param text2 New string to be diffed.
+   * @param deadline Time when the diff should be complete by.
+   * @param diffs Linked List of Diff objects.
+   */
+ private:
+  static void diff_lineMode(string_t text1, string_t text2, clock_t deadline, Diffs& diffs) {
+    // Scan the text on a line-by-line basis first.
+    Lines linearray;
+    diff_linesToChars(text1, text2, linearray);
+
+    diff_main(text1, text2, false, deadline, diffs);
+
+    // Convert the diff back to original text.
+    diff_charsToLines(diffs, linearray);
+    // Eliminate freak matches (e.g. blank lines)
+    diff_cleanupSemantic(diffs);
+
+    // Rediff any replacement blocks, this time character-by-character.
+    // Add a dummy entry at the end.
+    diffs.push_back(Diff(EQUAL, string_t()));
+    int count_delete = 0;
+    int count_insert = 0;
+    string_t text_delete;
+    string_t text_insert;
+
+    for (typename Diffs::iterator cur_diff = diffs.begin(); cur_diff != diffs.end(); ++cur_diff) {
+      switch ((*cur_diff).operation) {
+        case INSERT:
+          count_insert++;
+          text_insert += (*cur_diff).text;
+          break;
+        case DELETE:
+          count_delete++;
+          text_delete += (*cur_diff).text;
+          break;
+        case EQUAL:
+          // Upon reaching an equality, check for prior redundancies.
+          if (count_delete >= 1 && count_insert >= 1) {
+            // Delete the offending records and add the merged ones.
+            typename Diffs::iterator last = cur_diff;
+            std::advance(cur_diff, -(count_delete + count_insert));
+            cur_diff = diffs.erase(cur_diff, last);
+
+            Diffs new_diffs;
+            diff_main(text_delete, text_insert, false, deadline, new_diffs);
+            diffs.splice(cur_diff++, new_diffs);
+            --cur_diff;
+          }
+          count_insert = 0;
+          count_delete = 0;
+          text_delete.clear();
+          text_insert.clear();
+          break;
+      }
+    }
+    diffs.pop_back();  // Remove the dummy entry at the end.
+  }
+
+  /**
+   * Find the 'middle snake' of a diff, split the problem in two
+   * and return the recursively constructed diff.
+   * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.
+   * @param text1 Old string to be diffed.
+   * @param text2 New string to be diffed.
+   * @return Linked List of Diff objects.
+   */
+ protected:
+  static Diffs diff_bisect(const string_t &text1, const string_t &text2, clock_t deadline) {
+    Diffs diffs;
+    diff_bisect(text1, text2, deadline, diffs);
+    return diffs;
+  }
+ private:
+  static void diff_bisect(const string_t &text1, const string_t &text2, clock_t deadline, Diffs& diffs) {
+    // Cache the text lengths to prevent multiple calls.
+    const int text1_length = text1.length();
+    const int text2_length = text2.length();
+    const int max_d = (text1_length + text2_length + 1) / 2;
+    const int v_offset = max_d;
+    const int v_length = 2 * max_d;
+    std::vector<int> v1(v_length, -1), 
+                     v2(v_length, -1);
+    v1[v_offset + 1] = 0;
+    v2[v_offset + 1] = 0;
+    const int delta = text1_length - text2_length;
+    // If the total number of characters is odd, then the front path will
+    // collide with the reverse path.
+    const bool front = (delta % 2 != 0);
+    // Offsets for start and end of k loop.
+    // Prevents mapping of space beyond the grid.
+    int k1start = 0;
+    int k1end = 0;
+    int k2start = 0;
+    int k2end = 0;
+    for (int d = 0; d < max_d; d++) {
+      // Bail out if deadline is reached.
+      if (clock() > deadline) {
+        break;
+      }
+
+      // Walk the front path one step.
+      for (int k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {
+        const int k1_offset = v_offset + k1;
+        int x1;
+        if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {
+          x1 = v1[k1_offset + 1];
+        } else {
+          x1 = v1[k1_offset - 1] + 1;
+        }
+        int y1 = x1 - k1;
+        while (x1 < text1_length && y1 < text2_length
+            && text1[x1] == text2[y1]) {
+          x1++;
+          y1++;
+        }
+        v1[k1_offset] = x1;
+        if (x1 > text1_length) {
+          // Ran off the right of the graph.
+          k1end += 2;
+        } else if (y1 > text2_length) {
+          // Ran off the bottom of the graph.
+          k1start += 2;
+        } else if (front) {
+          int k2_offset = v_offset + delta - k1;
+          if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {
+            // Mirror x2 onto top-left coordinate system.
+            int x2 = text1_length - v2[k2_offset];
+            if (x1 >= x2) {
+              // Overlap detected.
+              diff_bisectSplit(text1, text2, x1, y1, deadline, diffs);
+              return;
+            }
+          }
+        }
+      }
+
+      // Walk the reverse path one step.
+      for (int k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {
+        const int k2_offset = v_offset + k2;
+        int x2;
+        if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {
+          x2 = v2[k2_offset + 1];
+        } else {
+          x2 = v2[k2_offset - 1] + 1;
+        }
+        int y2 = x2 - k2;
+        while (x2 < text1_length && y2 < text2_length
+            && text1[text1_length - x2 - 1] == text2[text2_length - y2 - 1]) {
+          x2++;
+          y2++;
+        }
+        v2[k2_offset] = x2;
+        if (x2 > text1_length) {
+          // Ran off the left of the graph.
+          k2end += 2;
+        } else if (y2 > text2_length) {
+          // Ran off the top of the graph.
+          k2start += 2;
+        } else if (!front) {
+          int k1_offset = v_offset + delta - k2;
+          if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {
+            int x1 = v1[k1_offset];
+            int y1 = v_offset + x1 - k1_offset;
+            // Mirror x2 onto top-left coordinate system.
+            x2 = text1_length - x2;
+            if (x1 >= x2) {
+              // Overlap detected.
+              diff_bisectSplit(text1, text2, x1, y1, deadline, diffs);
+              return;
+            }
+          }
+        }
+      }
+    }
+    // Diff took too long and hit the deadline or
+    // number of diffs equals number of characters, no commonality at all.
+    diffs.clear();
+    diffs.push_back(Diff(DELETE, text1));
+    diffs.push_back(Diff(INSERT, text2));
+  }
+
+  /**
+   * Given the location of the 'middle snake', split the diff in two parts
+   * and recurse.
+   * @param text1 Old string to be diffed.
+   * @param text2 New string to be diffed.
+   * @param x Index of split point in text1.
+   * @param y Index of split point in text2.
+   * @param deadline Time at which to bail if not yet complete.
+   * @param diffs LinkedList of Diff objects.
+   */
+ private:
+  static void diff_bisectSplit(const string_t &text1, const string_t &text2, int x, int y, clock_t deadline, Diffs& diffs) {
+    string_t text1a = text1.substr(0, x);
+    string_t text2a = text2.substr(0, y);
+    string_t text1b = safeMid(text1, x);
+    string_t text2b = safeMid(text2, y);
+
+    // Compute both diffs serially.
+    diff_main(text1a, text2a, false, deadline, diffs);
+    Diffs diffs_b;
+    diff_main(text1b, text2b, false, deadline, diffs_b);
+    diffs.splice(diffs.end(), diffs_b);
+  }
+
+ protected:
+  struct LinePtr : std::pair<typename string_t::const_pointer, size_t> {
+    LinePtr() {}
+    LinePtr(typename string_t::const_pointer p, size_t n) : std::pair<typename string_t::const_pointer, size_t>(p, n) {}
+    bool operator<(const LinePtr& p) const
+      { return this->second < p.second? true : this->second > p.second? false : string_t::traits_type::compare(this->first, p.first, this->second) < 0; }
+  };
+  struct Lines : std::vector<LinePtr> { string_t text1, text2; };
+
+  /**
+   * Split two texts into a list of strings.  Reduce the texts to a string of
+   * hashes where each Unicode character represents one line.
+   * @param text1 First string.
+   * @param text2 Second string.
+   * @param lineArray Lines object, containing the encoded text1, the
+   *     encoded text2 and the List of pointers to unique strings.  The zeroth element
+   *     of the List of unique strings is intentionally blank.
+   */
+  static void diff_linesToChars(string_t &text1, string_t &text2, Lines& lineArray) {
+    std::map<LinePtr, size_t> lineHash;
+    lineArray.text1.swap(text1), lineArray.text2.swap(text2);
+    // e.g. linearray[4] == "Hello\n"
+    // e.g. linehash.get("Hello\n") == 4
+
+    // "\x00" is a valid character, but various debuggers don't like it.
+    // So we'll insert a junk entry to avoid generating a null character.
+
+    text1 = diff_linesToCharsMunge(lineArray.text1, lineHash);
+    text2 = diff_linesToCharsMunge(lineArray.text2, lineHash);
+
+    lineArray.resize(lineHash.size() + 1);
+    for (typename std::map<LinePtr, size_t>::const_iterator i = lineHash.begin(); i != lineHash.end(); ++i)
+      lineArray[(*i).second] = (*i).first;
+  }
+
+  /**
+   * Split a text into a list of pointers to strings.  Reduce the texts to a string of
+   * hashes where each Unicode character represents one line.
+   * @param text String to encode.
+   * @param lineHash Map of string pointers to indices.
+   * @return Encoded string.
+   */
+ private:
+  static string_t diff_linesToCharsMunge(const string_t &text, std::map<LinePtr, size_t> &lineHash) {
+    string_t chars;
+    // Walk the text, pulling out a substring for each line.
+    // text.split('\n') would would temporarily double our memory footprint.
+    // Modifying text would create many large strings to garbage collect.
+    typename string_t::size_type lineLen;
+    for (typename string_t::const_pointer lineStart = text.c_str(), textEnd = lineStart + text.size(); lineStart < textEnd; lineStart += lineLen + 1) {
+      lineLen = next_token(text, traits::from_wchar(L'\n'), lineStart);
+      if (lineStart + lineLen == textEnd) --lineLen;
+      chars += (char_t)(*lineHash.insert(std::make_pair(LinePtr(lineStart, lineLen + 1), lineHash.size() + 1)).first).second;
+    }
+    return chars;
+  }
+
+  /**
+   * Rehydrate the text in a diff from a string of line hashes to real lines of
+   * text.
+   * @param diffs LinkedList of Diff objects.
+   * @param lineArray List of pointers to unique strings.
+   */
+ private:
+  static void diff_charsToLines(Diffs &diffs, const Lines& lineArray) {
+    for (typename Diffs::iterator cur_diff = diffs.begin(); cur_diff != diffs.end(); ++cur_diff) {
+      string_t text;
+      for (int y = 0; y < (int)(*cur_diff).text.length(); y++) {
+        const LinePtr& lp = lineArray[static_cast<size_t>((*cur_diff).text[y])];
+        text.append(lp.first, lp.second);
+      }
+      (*cur_diff).text.swap(text);
+    }
+  }
+
+  /**
+   * Determine the common prefix of two strings.
+   * @param text1 First string.
+   * @param text2 Second string.
+   * @return The number of characters common to the start of each string.
+   */
+ public:
+  static int diff_commonPrefix(const string_t &text1, const string_t &text2) {
+    // Performance analysis: http://neil.fraser.name/news/2007/10/09/
+    const int n = std::min(text1.length(), text2.length());
+    for (int i = 0; i < n; i++) {
+      if (text1[i] != text2[i]) {
+        return i;
+      }
+    }
+    return n;
+  }
+
+  /**
+   * Determine the common suffix of two strings.
+   * @param text1 First string.
+   * @param text2 Second string.
+   * @return The number of characters common to the end of each string.
+   */
+ public:
+  static int diff_commonSuffix(const string_t &text1, const string_t &text2) {
+    // Performance analysis: http://neil.fraser.name/news/2007/10/09/
+    const int text1_length = text1.length();
+    const int text2_length = text2.length();
+    const int n = std::min(text1_length, text2_length);
+    for (int i = 1; i <= n; i++) {
+      if (text1[text1_length - i] != text2[text2_length - i]) {
+        return i - 1;
+      }
+    }
+    return n;
+  }
+
+  /**
+   * Determine if the suffix of one string is the prefix of another.
+   * @param text1 First string.
+   * @param text2 Second string.
+   * @return The number of characters common to the end of the first
+   *     string and the start of the second string.
+   */
+ protected:
+  static int diff_commonOverlap(const string_t &text1, const string_t &text2) {
+    // Cache the text lengths to prevent multiple calls.
+    const int text1_length = text1.length();
+    const int text2_length = text2.length();
+    // Eliminate the null case.
+    if (text1_length == 0 || text2_length == 0) {
+      return 0;
+    }
+    // Truncate the longer string.
+    string_t text1_trunc = text1;
+    string_t text2_trunc = text2;
+    if (text1_length > text2_length) {
+      text1_trunc = right(text1, text2_length);
+    } else if (text1_length < text2_length) {
+      text2_trunc = text2.substr(0, text1_length);
+    }
+    const int text_length = std::min(text1_length, text2_length);
+    // Quick check for the worst case.
+    if (text1_trunc == text2_trunc) {
+      return text_length;
+    }
+
+    // Start by looking for a single character match
+    // and increase length until no match is found.
+    // Performance analysis: http://neil.fraser.name/news/2010/11/04/
+    int best = 0;
+    int length = 1;
+    while (true) {
+      string_t pattern = right(text1_trunc, length);
+      size_t found = text2_trunc.find(pattern);
+      if (found == string_t::npos) {
+        return best;
+      }
+      length += found;
+      if (found == 0 || right(text1_trunc, length) == text2_trunc.substr(0, length)) {
+        best = length;
+        length++;
+      }
+    }
+  }
+
+ protected:
+  struct HalfMatchResult {
+    string_t text1_a, text1_b, text2_a, text2_b, mid_common;
+    void swap(HalfMatchResult& hm) {
+      text1_a.swap(hm.text1_a), text1_b.swap(hm.text1_b), text2_a.swap(hm.text2_a), text2_b.swap(hm.text2_b), mid_common.swap(hm.mid_common);
+    }
+  };
+
+  /**
+   * Do the two texts share a substring which is at least half the length of
+   * the longer text?
+   * This speedup can produce non-minimal diffs.
+   * @param text1 First string.
+   * @param text2 Second string.
+   * @param hm HalfMatchResult object, containing the prefix of text1, the
+   *     suffix of text1, the prefix of text2, the suffix of text2 and the
+   *     common middle.
+   * @return Boolean true if there was a match, false otherwise.
+   */
+  static bool diff_halfMatch(const string_t &text1, const string_t &text2, HalfMatchResult& hm) {
+    const string_t longtext = text1.length() > text2.length() ? text1 : text2;
+    const string_t shorttext = text1.length() > text2.length() ? text2 : text1;
+    if (longtext.length() < 4 || shorttext.length() * 2 < longtext.length()) {
+      return false;  // Pointless.
+    }
+
+    HalfMatchResult res1, res2;
+    // First check if the second quarter is the seed for a half-match.
+    bool hm1 = diff_halfMatchI(longtext, shorttext,
+        (longtext.length() + 3) / 4, res1);
+    // Check again based on the third quarter.
+    bool hm2 = diff_halfMatchI(longtext, shorttext,
+        (longtext.length() + 1) / 2, res2);
+    if (!hm1 && !hm2) {
+      return false;
+    } else if (!hm2) {
+      hm.swap(res1);
+    } else if (!hm1) {
+      hm.swap(res2);
+    } else {
+      // Both matched.  Select the longest.
+      hm.swap(res1.mid_common.length() > res2.mid_common.length() ? res1 : res2);
+    }
+
+    // A half-match was found, sort out the return data.
+    if (text1.length() <= text2.length()) {
+      hm.text1_a.swap(hm.text2_a);
+      hm.text1_b.swap(hm.text2_b);
+    }
+    return true;
+  }
+
+  /**
+   * Does a substring of shorttext exist within longtext such that the
+   * substring is at least half the length of longtext?
+   * @param longtext Longer string.
+   * @param shorttext Shorter string.
+   * @param i Start index of quarter length substring within longtext.
+   * @param best HalfMatchResult object, containing the prefix of longtext, the
+   *     suffix of longtext, the prefix of shorttext, the suffix of shorttext
+   *     and the common middle.
+   * @return Boolean true if there was a match, false otherwise.
+   */
+ private:
+  static bool diff_halfMatchI(const string_t &longtext, const string_t &shorttext, int i, HalfMatchResult& best) {
+    // Start with a 1/4 length substring at position i as a seed.
+    const string_t seed = safeMid(longtext, i, longtext.length() / 4);
+    size_t j = string_t::npos;
+    while ((j = shorttext.find(seed, j + 1)) != string_t::npos) {
+      const int prefixLength = diff_commonPrefix(safeMid(longtext, i),
+          safeMid(shorttext, j));
+      const int suffixLength = diff_commonSuffix(longtext.substr(0, i),
+          shorttext.substr(0, j));
+      if ((int)best.mid_common.length() < suffixLength + prefixLength) {
+        best.mid_common = safeMid(shorttext, j - suffixLength, suffixLength)
+            + safeMid(shorttext, j, prefixLength);
+        best.text1_a = longtext.substr(0, i - suffixLength);
+        best.text1_b = safeMid(longtext, i + prefixLength);
+        best.text2_a = shorttext.substr(0, j - suffixLength);
+        best.text2_b = safeMid(shorttext, j + prefixLength);
+      }
+    }
+    return best.mid_common.length() * 2 >= longtext.length();
+  }
+
+  /**
+   * Reduce the number of edits by eliminating semantically trivial equalities.
+   * @param diffs LinkedList of Diff objects.
+   */
+ public:
+  static void diff_cleanupSemantic(Diffs &diffs) {
+    if (diffs.empty()) {
+      return;
+    }
+    bool changes = false;
+    std::vector<typename Diffs::iterator> equalities;  // Stack of equalities.
+    string_t lastequality;  // Always equal to equalities.lastElement().text
+    typename Diffs::iterator cur_diff;
+    // Number of characters that changed prior to the equality.
+    int length_insertions1 = 0;
+    int length_deletions1 = 0;
+    // Number of characters that changed after the equality.
+    int length_insertions2 = 0;
+    int length_deletions2 = 0;
+    for (cur_diff = diffs.begin(); cur_diff != diffs.end();) {
+      if ((*cur_diff).operation == EQUAL) {
+        // Equality found.
+        equalities.push_back(cur_diff);
+        length_insertions1 = length_insertions2;
+        length_deletions1 = length_deletions2;
+        length_insertions2 = 0;
+        length_deletions2 = 0;
+        lastequality = (*cur_diff).text;
+      } else {
+        // An insertion or deletion.
+        if ((*cur_diff).operation == INSERT) {
+          length_insertions2 += (*cur_diff).text.length();
+        } else {
+          length_deletions2 += (*cur_diff).text.length();
+        }
+        // Eliminate an equality that is smaller or equal to the edits on both
+        // sides of it.
+        if (!lastequality.empty()
+            && ((int)lastequality.length()
+                <= std::max(length_insertions1, length_deletions1))
+            && ((int)lastequality.length()
+                <= std::max(length_insertions2, length_deletions2))) {
+          // printf("Splitting: '%s'\n", qPrintable(lastequality));
+          // Walk back to offending equality.
+          // Change second copy to insert.
+          (*(cur_diff = equalities.back())).operation = INSERT;
+          // Duplicate record.
+          diffs.insert(cur_diff, Diff(DELETE, lastequality));
+          equalities.pop_back();  // Throw away the equality we just deleted.
+          if (!equalities.empty()) {
+            // Throw away the previous equality (it needs to be reevaluated).
+            equalities.pop_back();
+          }
+          length_insertions1 = 0;  // Reset the counters.
+          length_deletions1 = 0;
+          length_insertions2 = 0;
+          length_deletions2 = 0;
+          lastequality = string_t();
+          changes = true;
+
+          if (!equalities.empty())
+            // There is a safe equality we can fall back to.
+            cur_diff = equalities.back();
+          else
+          {
+            // There are no previous equalities, walk back to the start.
+            cur_diff = diffs.begin();
+            continue;
+          }
+        }
+      }
+      ++cur_diff;
+    }
+
+    // Normalize the diff.
+    if (changes) {
+      diff_cleanupMerge(diffs);
+    }
+    diff_cleanupSemanticLossless(diffs);
+
+    // Find any overlaps between deletions and insertions.
+    // e.g: <del>abcxxx</del><ins>xxxdef</ins>
+    //   -> <del>abc</del>xxx<ins>def</ins>
+    // e.g: <del>xxxabc</del><ins>defxxx</ins>
+    //   -> <ins>def</ins>xxx<del>abc</del>
+    // Only extract an overlap if it is as big as the edit ahead or behind it.
+    if ((cur_diff = diffs.begin()) != diffs.end()) {
+      for (typename Diffs::iterator prev_diff = cur_diff; ++cur_diff != diffs.end(); prev_diff = cur_diff) {
+        if ((*prev_diff).operation == DELETE &&
+            (*cur_diff).operation == INSERT) {
+          string_t deletion = (*prev_diff).text;
+          string_t insertion = (*cur_diff).text;
+          int overlap_length1 = diff_commonOverlap(deletion, insertion);
+          int overlap_length2 = diff_commonOverlap(insertion, deletion);
+          if (overlap_length1 >= overlap_length2) {
+            if (overlap_length1 >= deletion.size() / 2.0 ||
+                overlap_length1 >= insertion.size() / 2.0) {
+              // Overlap found.  Insert an equality and trim the surrounding edits.
+              diffs.insert(cur_diff, Diff(EQUAL, insertion.substr(0, overlap_length1)));
+              prev_diff->text =
+                  deletion.substr(0, deletion.length() - overlap_length1);
+              cur_diff->text = safeMid(insertion, overlap_length1);
+              // diffs.insert inserts the element before the cursor, so there is
+              // no need to step past the new element.
+            }
+          } else {
+            if (overlap_length2 >= deletion.length() / 2.0 ||
+                overlap_length2 >= insertion.length() / 2.0) {
+              // Reverse overlap found.
+              // Insert an equality and swap and trim the surrounding edits.
+              diffs.insert(cur_diff, Diff(EQUAL, deletion.substr(0, overlap_length2)));
+              prev_diff->operation = INSERT;
+              prev_diff->text =
+                  insertion.substr(0, insertion.length() - overlap_length2);
+              cur_diff->operation = DELETE;
+              cur_diff->text = safeMid(deletion, overlap_length2);
+              // diffs.insert inserts the element before the cursor, so there is
+              // no need to step past the new element.
+            }
+          }
+          if (++cur_diff == diffs.end()) break;
+        }
+      }
+    }
+  }
+
+  /**
+   * Look for single edits surrounded on both sides by equalities
+   * which can be shifted sideways to align the edit to a word boundary.
+   * e.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came.
+   * @param diffs LinkedList of Diff objects.
+   */
+ public:
+  static void diff_cleanupSemanticLossless(Diffs &diffs) {
+    string_t equality1, edit, equality2;
+    string_t commonString;
+    int commonOffset;
+    int score, bestScore;
+    string_t bestEquality1, bestEdit, bestEquality2;
+    // Create a new iterator at the start.
+    typename Diffs::iterator prev_diff = diffs.begin(), cur_diff = prev_diff;
+    if (prev_diff == diffs.end() || ++cur_diff == diffs.end()) return;
+
+    // Intentionally ignore the first and last element (don't need checking).
+    for (typename Diffs::iterator next_diff = cur_diff; ++next_diff != diffs.end(); prev_diff = cur_diff, cur_diff = next_diff) {
+      if ((*prev_diff).operation == EQUAL &&
+        (*next_diff).operation == EQUAL) {
+          // This is a single edit surrounded by equalities.
+          equality1 = (*prev_diff).text;
+          edit = (*cur_diff).text;
+          equality2 = (*next_diff).text;
+
+          // First, shift the edit as far left as possible.
+          commonOffset = diff_commonSuffix(equality1, edit);
+          if (commonOffset != 0) {
+            commonString = safeMid(edit, edit.length() - commonOffset);
+            equality1 = equality1.substr(0, equality1.length() - commonOffset);
+            edit = commonString + edit.substr(0, edit.length() - commonOffset);
+            equality2 = commonString + equality2;
+          }
+
+          // Second, step character by character right, looking for the best fit.
+          bestEquality1 = equality1;
+          bestEdit = edit;
+          bestEquality2 = equality2;
+          bestScore = diff_cleanupSemanticScore(equality1, edit)
+              + diff_cleanupSemanticScore(edit, equality2);
+          while (!edit.empty() && !equality2.empty()
+              && edit[0] == equality2[0]) {
+            equality1 += edit[0];
+            edit = safeMid(edit, 1) + equality2[0];
+            equality2 = safeMid(equality2, 1);
+            score = diff_cleanupSemanticScore(equality1, edit)
+                + diff_cleanupSemanticScore(edit, equality2);
+            // The >= encourages trailing rather than leading whitespace on edits.
+            if (score >= bestScore) {
+              bestScore = score;
+              bestEquality1 = equality1;
+              bestEdit = edit;
+              bestEquality2 = equality2;
+            }
+          }
+
+          if ((*prev_diff).text != bestEquality1) {
+            // We have an improvement, save it back to the diff.
+            if (!bestEquality1.empty()) {
+              (*prev_diff).text = bestEquality1;
+            } else {
+              diffs.erase(prev_diff);
+            }
+            (*cur_diff).text = bestEdit;
+            if (!bestEquality2.empty()) {
+              (*next_diff).text = bestEquality2;
+            } else {
+              diffs.erase(next_diff); // Delete nextDiff.
+              next_diff = cur_diff;
+              cur_diff = prev_diff;
+            }
+          }
+      }
+    }
+  }
+
+  /**
+   * Given two strings, compute a score representing whether the internal
+   * boundary falls on logical boundaries.
+   * Scores range from 6 (best) to 0 (worst).
+   * @param one First string.
+   * @param two Second string.
+   * @return The score.
+   */
+ private:
+  static int diff_cleanupSemanticScore(const string_t &one, const string_t &two) {
+    if (one.empty() || two.empty()) {
+      // Edges are the best.
+      return 6;
+    }
+
+    // Each port of this function behaves slightly differently due to
+    // subtle differences in each language's definition of things like
+    // 'whitespace'.  Since this function's purpose is largely cosmetic,
+    // the choice has been made to use each language's native features
+    // rather than force total conformity.
+    char_t char1 = one[one.length() - 1];
+    char_t char2 = two[0];
+    bool nonAlphaNumeric1 = !traits::is_alnum(char1);
+    bool nonAlphaNumeric2 = !traits::is_alnum(char2);
+    bool whitespace1 = nonAlphaNumeric1 && traits::is_space(char1);
+    bool whitespace2 = nonAlphaNumeric2 && traits::is_space(char2);
+    bool lineBreak1 = whitespace1 && is_control(char1);
+    bool lineBreak2 = whitespace2 && is_control(char2);
+    bool blankLine1 = false;
+    if (lineBreak1) {
+      typename string_t::const_reverse_iterator p1 = one.rbegin(), p2 = one.rend();
+      if (traits::to_wchar(*p1) == L'\n' && ++p1 != p2) {
+        if (traits::to_wchar(*p1) == L'\r')
+          ++p1;
+        blankLine1 = p1 != p2 && traits::to_wchar(*p1) == L'\n';
+      }
+    }
+    bool blankLine2 = false;
+    if (lineBreak2) {
+      typename string_t::const_iterator p1 = two.end(), p2 = two.begin();
+      if (traits::to_wchar(*p2) == L'\r')
+        ++p2;
+      if (p2 != p1 && traits::to_wchar(*p2) == L'\n') {
+        if (++p2 != p1 && traits::to_wchar(*p2) == L'\r')
+          ++p2;
+        if (p2 != p1 && traits::to_wchar(*p2) == L'\n')
+          blankLine2 = true;
+      }
+    }
+  
+    if (blankLine1 || blankLine2) {
+      // Five points for blank lines.
+      return 5;
+    } else if (lineBreak1 || lineBreak2) {
+      // Four points for line breaks.
+      return 4;
+    } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {
+      // Three points for end of sentences.
+      return 3;
+    } else if (whitespace1 || whitespace2) {
+      // Two points for whitespace.
+      return 2;
+    } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {
+      // One point for non-alphanumeric.
+      return 1;
+    }
+    return 0;
+  }
+  /**
+   * Reduce the number of edits by eliminating operationally trivial equalities.
+   * @param diffs LinkedList of Diff objects.
+   */
+ public:
+  void diff_cleanupEfficiency(Diffs &diffs) const {
+    if (diffs.empty()) {
+      return;
+    }
+    bool changes = false;
+    std::vector<typename Diffs::iterator> equalities;  // Stack of equalities.
+    string_t lastequality;  // Always equal to equalities.lastElement().text
+    // Is there an insertion operation before the last equality.
+    bool pre_ins = false;
+    // Is there a deletion operation before the last equality.
+    bool pre_del = false;
+    // Is there an insertion operation after the last equality.
+    bool post_ins = false;
+    // Is there a deletion operation after the last equality.
+    bool post_del = false;
+
+    for (typename Diffs::iterator cur_diff = diffs.begin(); cur_diff != diffs.end();) {
+      if ((*cur_diff).operation == EQUAL) {
+        // Equality found.
+        if ((int)(*cur_diff).text.length() < Diff_EditCost && (post_ins || post_del)) {
+          // Candidate found.
+          equalities.push_back(cur_diff);
+          pre_ins = post_ins;
+          pre_del = post_del;
+          lastequality = (*cur_diff).text;
+        } else {
+          // Not a candidate, and can never become one.
+          equalities.clear();
+          lastequality.clear();
+        }
+        post_ins = post_del = false;
+      } else {
+        // An insertion or deletion.
+        if ((*cur_diff).operation == DELETE) {
+          post_del = true;
+        } else {
+          post_ins = true;
+        }
+        /*
+        * Five types to be split:
+        * <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>
+        * <ins>A</ins>X<ins>C</ins><del>D</del>
+        * <ins>A</ins><del>B</del>X<ins>C</ins>
+        * <ins>A</del>X<ins>C</ins><del>D</del>
+        * <ins>A</ins><del>B</del>X<del>C</del>
+        */
+        if (!lastequality.empty()
+            && ((pre_ins && pre_del && post_ins && post_del)
+            || (((int)lastequality.length() < Diff_EditCost / 2)
+            && ((pre_ins ? 1 : 0) + (pre_del ? 1 : 0)
+            + (post_ins ? 1 : 0) + (post_del ? 1 : 0)) == 3))) {
+          // printf("Splitting: '%s'\n", qPrintable(lastequality));
+          // Walk back to offending equality.
+          // Change second copy to insert.
+          (*(cur_diff = equalities.back())).operation = INSERT;
+          // Duplicate record.
+          diffs.insert(cur_diff, Diff(DELETE, lastequality));
+          equalities.pop_back();  // Throw away the equality we just deleted.
+          lastequality.clear();
+          changes = true;
+          if (pre_ins && pre_del) {
+            // No changes made which could affect previous entry, keep going.
+            post_ins = post_del = true;
+            equalities.clear();
+          } else {
+            if (!equalities.empty()) {
+              // Throw away the previous equality (it needs to be reevaluated).
+              equalities.pop_back();
+            }
+            post_ins = post_del = false;
+            if (!equalities.empty())
+              // There is a safe equality we can fall back to.
+              cur_diff = equalities.back();
+            else
+            {
+              // There are no previous equalities, walk back to the start.
+              cur_diff = diffs.begin();
+              continue;
+            }
+          }
+        }
+      }
+      ++cur_diff;
+    }
+
+    if (changes) {
+      diff_cleanupMerge(diffs);
+    }
+  }
+
+  /**
+   * Reorder and merge like edit sections.  Merge equalities.
+   * Any edit section can move as long as it doesn't cross an equality.
+   * @param diffs LinkedList of Diff objects.
+   */
+ public:
+  static void diff_cleanupMerge(Diffs &diffs) {
+    diffs.push_back(Diff(EQUAL, string_t()));  // Add a dummy entry at the end.
+    typename Diffs::iterator prev_diff, cur_diff;
+    int count_delete = 0;
+    int count_insert = 0;
+    string_t text_delete;
+    string_t text_insert;
+    Diff *prevEqual = NULL;
+    int commonlength;
+    for (cur_diff = diffs.begin(); cur_diff != diffs.end(); ++cur_diff) {
+      switch ((*cur_diff).operation) {
+        case INSERT:
+          count_insert++;
+          text_insert += (*cur_diff).text;
+          prevEqual = NULL;
+          break;
+        case DELETE:
+          count_delete++;
+          text_delete += (*cur_diff).text;
+          prevEqual = NULL;
+          break;
+        case EQUAL:
+          if (count_delete + count_insert > 1) {
+            // Delete the offending records.
+            prev_diff = cur_diff;
+            std::advance(prev_diff, -(count_delete + count_insert));
+            diffs.erase(prev_diff, cur_diff);
+            if (count_delete != 0 && count_insert != 0) {
+              // Factor out any common prefixes.
+              commonlength = diff_commonPrefix(text_insert, text_delete);
+              if (commonlength != 0) {
+                if (cur_diff != diffs.begin()) {
+                  prev_diff = cur_diff;
+                  if ((*--prev_diff).operation != EQUAL) {
+                    llvm_unreachable("Previous diff should have been an equality.");
+                  }
+                  (*prev_diff).text += text_insert.substr(0, commonlength);
+                } else {
+                  diffs.insert(cur_diff, Diff(EQUAL, text_insert.substr(0, commonlength)));
+                }
+                text_insert = safeMid(text_insert, commonlength);
+                text_delete = safeMid(text_delete, commonlength);
+              }
+              // Factor out any common suffixes.
+              commonlength = diff_commonSuffix(text_insert, text_delete);
+              if (commonlength != 0) {
+                (*cur_diff).text = safeMid(text_insert, text_insert.length()
+                    - commonlength) + (*cur_diff).text;
+                text_insert = text_insert.substr(0, text_insert.length()
+                    - commonlength);
+                text_delete = text_delete.substr(0, text_delete.length()
+                    - commonlength);
+              }
+            }
+            // Insert the merged records.
+            if (!text_delete.empty()) {
+              diffs.insert(cur_diff, Diff(DELETE, text_delete));
+            }
+            if (!text_insert.empty()) {
+              diffs.insert(cur_diff, Diff(INSERT, text_insert));
+            }
+          } else if (prevEqual != NULL) {
+            // Merge this equality with the previous one.
+            prevEqual->text += (*cur_diff).text;
+            diffs.erase(cur_diff--);
+          }
+          
+          count_insert = 0;
+          count_delete = 0;
+          text_delete.clear();
+          text_insert.clear();
+          prevEqual = &*cur_diff;
+          break;
+        }
+
+    }
+    if (diffs.back().text.empty()) {
+      diffs.pop_back();  // Remove the dummy entry at the end.
+    }
+
+    /*
+    * Second pass: look for single edits surrounded on both sides by equalities
+    * which can be shifted sideways to eliminate an equality.
+    * e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC
+    */
+    bool changes = false;
+    // Create a new iterator at the start.
+    // (As opposed to walking the current one back.)
+    prev_diff = cur_diff = diffs.begin();
+    if (prev_diff != diffs.end() && ++cur_diff != diffs.end()) {
+      // Intentionally ignore the first and last element (don't need checking).
+      for (typename Diffs::iterator next_diff = cur_diff; ++next_diff != diffs.end(); prev_diff = cur_diff, cur_diff = next_diff) {
+        if ((*prev_diff).operation == EQUAL &&
+          (*next_diff).operation == EQUAL) {
+            // This is a single edit surrounded by equalities.
+            if ((*cur_diff).text.size() >= (*prev_diff).text.size() &&
+                (*cur_diff).text.compare((*cur_diff).text.size() - (*prev_diff).text.size(), (*prev_diff).text.size(), (*prev_diff).text) == 0) {
+              // Shift the edit over the previous equality.
+              (*cur_diff).text = (*prev_diff).text
+                  + (*cur_diff).text.substr(0, (*cur_diff).text.length()
+                  - (*prev_diff).text.length());
+              (*next_diff).text = (*prev_diff).text + (*next_diff).text;
+              diffs.erase(prev_diff);
+              cur_diff = next_diff;
+              changes = true;
+              if (++next_diff == diffs.end()) break;
+            } else if ((*cur_diff).text.size() >= (*next_diff).text.size() && (*cur_diff).text.compare(0, (*next_diff).text.size(), (*next_diff).text) == 0) {
+              // Shift the edit over the next equality.
+              (*prev_diff).text += (*next_diff).text;
+              (*cur_diff).text = safeMid((*cur_diff).text, (*next_diff).text.length())
+                  + (*next_diff).text;
+              next_diff = diffs.erase(next_diff); // Delete nextDiff.
+              changes = true;
+              if (next_diff == diffs.end()) break;
+            }
+        }
+      }
+    }
+    // If shifts were made, the diff needs reordering and another shift sweep.
+    if (changes) {
+      diff_cleanupMerge(diffs);
+    }
+  }
+
+  /**
+   * loc is a location in text1, compute and return the equivalent location in
+   * text2.
+   * e.g. "The cat" vs "The big cat", 1->1, 5->8
+   * @param diffs LinkedList of Diff objects.
+   * @param loc Location within text1.
+   * @return Location within text2.
+   */
+ public:
+  static int diff_xIndex(const Diffs &diffs, int loc) {
+    int chars1 = 0;
+    int chars2 = 0;
+    int last_chars1 = 0;
+    int last_chars2 = 0;
+    typename Diffs::const_iterator last_diff = diffs.end(), cur_diff;
+    for (cur_diff = diffs.begin(); cur_diff != diffs.end(); ++cur_diff) {
+      if ((*cur_diff).operation != INSERT) {
+        // Equality or deletion.
+        chars1 += (*cur_diff).text.length();
+      }
+      if ((*cur_diff).operation != DELETE) {
+        // Equality or insertion.
+        chars2 += (*cur_diff).text.length();
+      }
+      if (chars1 > loc) {
+        // Overshot the location.
+        last_diff = cur_diff;
+        break;
+      }
+      last_chars1 = chars1;
+      last_chars2 = chars2;
+    }
+    if (last_diff != diffs.end() && (*last_diff).operation == DELETE) {
+      // The location was deleted.
+      return last_chars2;
+    }
+    // Add the remaining character length.
+    return last_chars2 + (loc - last_chars1);
+  }
+
+  /**
+   * Convert a Diff list into a pretty HTML report.
+   * @param diffs LinkedList of Diff objects.
+   * @return HTML representation.
+   */
+ public:
+  static string_t diff_prettyHtml(const Diffs &diffs) {
+    string_t html;
+    string_t text;
+    for (typename Diffs::const_iterator cur_diff = diffs.begin(); cur_diff != diffs.end(); ++cur_diff) {
+      typename string_t::size_type n = (*cur_diff).text.size();
+      typename string_t::const_pointer p, end;
+      for (p = (*cur_diff).text.c_str(), end = p + n; p != end; ++p)
+        switch (traits::to_wchar(*p)) {
+          case L'&': n += 4; break;
+          case L'<':
+          case L'>': n += 3; break;
+          case L'\n': n += 9; break;
+        }
+      if (n == (*cur_diff).text.size())
+        text = (*cur_diff).text;
+      else {
+        text.clear();
+        text.reserve(n);
+        for (p = (*cur_diff).text.c_str(); p != end; ++p)
+          switch (traits::to_wchar(*p)) {
+            case L'&': text += traits::cs(L"&amp;"); break;
+            case L'<': text += traits::cs(L"&lt;"); break;
+            case L'>': text += traits::cs(L"&gt;"); break;
+            case L'\n': text += traits::cs(L"&para;<br>"); break;
+            default: text += *p;
+          }
+      }
+      switch ((*cur_diff).operation) {
+        case INSERT:
+          html += traits::cs(L"<ins style=\"background:#e6ffe6;\">") + text + traits::cs(L"</ins>");
+          break;
+        case DELETE:
+          html += traits::cs(L"<del style=\"background:#ffe6e6;\">") + text + traits::cs(L"</del>");
+          break;
+        case EQUAL:
+          html += traits::cs(L"<span>") + text + traits::cs(L"</span>");
+          break;
+      }
+    }
+    return html;
+  }
+
+  /**
+   * Compute and return the source text (all equalities and deletions).
+   * @param diffs LinkedList of Diff objects.
+   * @return Source text.
+   */
+ public:
+  static string_t diff_text1(const Diffs &diffs) {
+    string_t text;
+    for (typename Diffs::const_iterator cur_diff = diffs.begin(); cur_diff != diffs.end(); ++cur_diff) {
+      if ((*cur_diff).operation != INSERT) {
+        text += (*cur_diff).text;
+      }
+    }
+    return text;
+  }
+
+  /**
+   * Compute and return the destination text (all equalities and insertions).
+   * @param diffs LinkedList of Diff objects.
+   * @return Destination text.
+   */
+ public:
+  static string_t diff_text2(const Diffs &diffs) {
+    string_t text;
+    for (typename Diffs::const_iterator cur_diff = diffs.begin(); cur_diff != diffs.end(); ++cur_diff) {
+      if ((*cur_diff).operation != DELETE) {
+        text += (*cur_diff).text;
+      }
+    }
+    return text;
+  }
+
+  /**
+   * Compute the Levenshtein distance; the number of inserted, deleted or
+   * substituted characters.
+   * @param diffs LinkedList of Diff objects.
+   * @return Number of changes.
+   */
+ public:
+  static int diff_levenshtein(const Diffs &diffs) {
+    int levenshtein = 0;
+    int insertions = 0;
+    int deletions = 0;
+    for (typename Diffs::const_iterator cur_diff = diffs.begin(); cur_diff != diffs.end(); ++cur_diff) {
+      switch ((*cur_diff).operation) {
+        case INSERT:
+          insertions += (*cur_diff).text.length();
+          break;
+        case DELETE:
+          deletions += (*cur_diff).text.length();
+          break;
+        case EQUAL:
+          // A deletion and an insertion is one substitution.
+          levenshtein += std::max(insertions, deletions);
+          insertions = 0;
+          deletions = 0;
+          break;
+      }
+    }
+    levenshtein += std::max(insertions, deletions);
+    return levenshtein;
+  }
+
+  /**
+   * Crush the diff into an encoded string which describes the operations
+   * required to transform text1 into text2.
+   * E.g. =3\t-2\t+ing  -> Keep 3 chars, delete 2 chars, insert 'ing'.
+   * Operations are tab-separated.  Inserted text is escaped using %xx notation.
+   * @param diffs Array of diff tuples.
+   * @return Delta text.
+   */
+ public:
+  static string_t diff_toDelta(const Diffs &diffs) {
+    string_t text;
+    for (typename Diffs::const_iterator cur_diff = diffs.begin(); cur_diff != diffs.end(); ++cur_diff) {
+      switch ((*cur_diff).operation) {
+        case INSERT: {
+          text += traits::from_wchar(L'+');
+          append_percent_encoded(text, (*cur_diff).text);
+          text += traits::from_wchar(L'\t');
+          break;
+        }
+        case DELETE:
+          text += traits::from_wchar(L'-') + to_string((*cur_diff).text.length()) + traits::from_wchar(L'\t');
+          break;
+        case EQUAL:
+          text += traits::from_wchar(L'=') + to_string((*cur_diff).text.length()) + traits::from_wchar(L'\t');
+          break;
+      }
+    }
+    if (!text.empty()) {
+      // Strip off trailing tab character.
+      text = text.substr(0, text.length() - 1);
+    }
+    return text;
+  }
+
+  /**
+   * Given the original text1, and an encoded string which describes the
+   * operations required to transform text1 into text2, compute the full diff.
+   * @param text1 Source string for the diff.
+   * @param delta Delta text.
+   * @return Array of diff tuples or null if invalid.
+   * @throws string_t If invalid input.
+   */
+ public:
+  static Diffs diff_fromDelta(const string_t &text1, const string_t &delta) {
+    Diffs diffs;
+    int pointer = 0;  // Cursor in text1
+    typename string_t::size_type token_len;
+    for (typename string_t::const_pointer token = delta.c_str(); token - delta.c_str() < (int)delta.length(); token += token_len + 1) {
+      token_len = next_token(delta, traits::from_wchar(L'\t'), token);
+      if (token_len == 0) {
+        // Blank tokens are ok (from a trailing \t).
+        continue;
+      }
+      // Each token begins with a one character parameter which specifies the
+      // operation of this token (delete, insert, equality).
+      string_t param(token + 1, token_len - 1);
+      switch (traits::to_wchar(*token)) {
+        case L'+':
+          percent_decode(param);
+          diffs.push_back(Diff(INSERT, param));
+          break;
+        case L'-':
+          // Fall through.
+        case L'=': {
+          int n;
+          n = to_int(param);
+          if (n < 0) {
+            llvm_unreachable("Negative number in diff_fromDelta: " + param);
+          }
+          string_t text;
+          text = safeMid(text1, pointer, n);
+          pointer += n;
+          if (traits::to_wchar(*token) == L'=') {
+            diffs.push_back(Diff(EQUAL, text));
+          } else {
+            diffs.push_back(Diff(DELETE, text));
+          }
+          break;
+        }
+        default:
+          llvm_unreachable(traits::cs(L"Invalid diff operation in diff_fromDelta: " + *token));
+      }
+    }
+    if (pointer != text1.length()) {
+      llvm_unreachable(traits::cs(L"Delta length (") + to_string(pointer)
+                     + traits::cs(L") smaller than source text length (")
+                     + to_string(text1.length()) + traits::from_wchar(L')'));
+    }
+    return diffs;
+  }
+
+
+  //  MATCH FUNCTIONS
+
+
+  /**
+   * Locate the best instance of 'pattern' in 'text' near 'loc'.
+   * Returns -1 if no match found.
+   * @param text The text to search.
+   * @param pattern The pattern to search for.
+   * @param loc The location to search around.
+   * @return Best match index or -1.
+   */
+ public:
+  int match_main(const string_t &text, const string_t &pattern, int loc) const {
+    loc = std::max(0, std::min(loc, (int)text.length()));
+    if (text == pattern) {
+      // Shortcut (potentially not guaranteed by the algorithm)
+      return 0;
+    } else if (text.empty()) {
+      // Nothing to match.
+      return -1;
+    } else if (loc + pattern.length() <= text.length()
+        && safeMid(text, loc, pattern.length()) == pattern) {
+      // Perfect match at the perfect spot!  (Includes case of null pattern)
+      return loc;
+    } else {
+      // Do a fuzzy compare.
+      return match_bitap(text, pattern, loc);
+    }
+  }
+
+  /**
+   * Locate the best instance of 'pattern' in 'text' near 'loc' using the
+   * Bitap algorithm.  Returns -1 if no match found.
+   * @param text The text to search.
+   * @param pattern The pattern to search for.
+   * @param loc The location to search around.
+   * @return Best match index or -1.
+   */
+ protected:
+  int match_bitap(const string_t &text, const string_t &pattern, int loc) const {
+    if (!(Match_MaxBits == 0 || (int)pattern.length() <= Match_MaxBits)) {
+      llvm_unreachable("Pattern too long for this application.");
+    }
+
+    // Initialise the alphabet.
+    std::map<char_t, int> s; 
+    match_alphabet(pattern, s);
+
+    // Highest score beyond which we give up.
+    double score_threshold = Match_Threshold;
+    // Is there a nearby exact match? (speedup)
+    size_t best_loc = text.find(pattern, loc);
+    if (best_loc != string_t::npos) {
+      score_threshold = std::min(match_bitapScore(0, best_loc, loc, pattern),
+          score_threshold);
+      // What about in the other direction? (speedup)
+      best_loc = text.rfind(pattern, loc + pattern.length());
+      if (best_loc != string_t::npos) {
+        score_threshold = std::min(match_bitapScore(0, best_loc, loc, pattern),
+            score_threshold);
+      }
+    }
+
+    // Initialise the bit arrays.
+    int matchmask = 1 << (pattern.length() - 1);
+    best_loc = -1;
+
+    int bin_min, bin_mid;
+    int bin_max = pattern.length() + text.length();
+    int *rd;
+    int *last_rd = NULL;
+    for (int d = 0; d < (int)pattern.length(); d++) {
+      // Scan for the best match; each iteration allows for one more error.
+      // Run a binary search to determine how far from 'loc' we can stray at
+      // this error level.
+      bin_min = 0;
+      bin_mid = bin_max;
+      while (bin_min < bin_mid) {
+        if (match_bitapScore(d, loc + bin_mid, loc, pattern)
+            <= score_threshold) {
+          bin_min = bin_mid;
+        } else {
+          bin_max = bin_mid;
+        }
+        bin_mid = (bin_max - bin_min) / 2 + bin_min;
+      }
+      // Use the result from this iteration as the maximum for the next.
+      bin_max = bin_mid;
+      int start = std::max(1, loc - bin_mid + 1);
+      int finish = std::min(loc + bin_mid, (int)text.length()) + pattern.length();
+
+      rd = new int[finish + 2];
+      rd[finish + 1] = (1 << d) - 1;
+      for (int j = finish; j >= start; j--) {
+        int charMatch;
+        if ((int)text.length() <= j - 1) {
+          // Out of range.
+          charMatch = 0;
+        } else {
+          charMatch = s[text[j - 1]];
+        }
+        if (d == 0) {
+          // First pass: exact match.
+          rd[j] = ((rd[j + 1] << 1) | 1) & charMatch;
+        } else {
+          // Subsequent passes: fuzzy match.
+          rd[j] = (((rd[j + 1] << 1) | 1) & charMatch)
+              | (((last_rd[j + 1] | last_rd[j]) << 1) | 1)
+              | last_rd[j + 1];
+        }
+        if ((rd[j] & matchmask) != 0) {
+          double score = match_bitapScore(d, j - 1, loc, pattern);
+          // This match will almost certainly be better than any existing
+          // match.  But check anyway.
+          if (score <= score_threshold) {
+            // Told you so.
+            score_threshold = score;
+            best_loc = j - 1;
+            if (best_loc > loc) {
+              // When passing loc, don't exceed our current distance from loc.
+              start = std::max(1, 2 * loc - (int)best_loc);
+            } else {
+              // Already passed loc, downhill from here on in.
+              break;
+            }
+          }
+        }
+      }
+      if (match_bitapScore(d + 1, loc, loc, pattern) > score_threshold) {
+        // No hope for a (better) match at greater error levels.
+        break;
+      }
+      delete [] last_rd;
+      last_rd = rd;
+    }
+    delete [] last_rd;
+    delete [] rd;
+    return best_loc;
+  }
+
+  /**
+   * Compute and return the score for a match with e errors and x location.
+   * @param e Number of errors in match.
+   * @param x Location of match.
+   * @param loc Expected location of match.
+   * @param pattern Pattern being sought.
+   * @return Overall score for match (0.0 = good, 1.0 = bad).
+   */
+ private:
+  double match_bitapScore(int e, int x, int loc, const string_t &pattern) const {
+    const float accuracy = static_cast<float> (e) / pattern.length();
+    const int proximity = (loc - x < 0)? (x - loc) : (loc - x);
+    if (Match_Distance == 0) {
+      // Dodge divide by zero error.
+      return proximity == 0 ? accuracy : 1.0;
+    }
+    return accuracy + (proximity / static_cast<float> (Match_Distance));
+  }
+
+  /**
+   * Initialise the alphabet for the Bitap algorithm.
+   * @param pattern The text to encode.
+   * @param s Hash of character locations.
+   */
+ protected:
+  static void match_alphabet(const string_t &pattern, std::map<char_t, int>& s) {
+    // There is no need to initialize map values, since they are zero-initialized by default
+    for (size_t i = 0; i < pattern.length(); i++)
+      s[pattern[i]] |= (1 << (pattern.length() - i - 1));
+  }
+
+
+ //  PATCH FUNCTIONS
+
+
+  /**
+   * Increase the context until it is unique,
+   * but don't let the pattern expand beyond Match_MaxBits.
+   * @param patch The patch to grow.
+   * @param text Source text.
+   */
+ protected:
+  void patch_addContext(Patch &patch, const string_t &text) const {
+    if (text.empty()) {
+      return;
+    }
+    string_t pattern = safeMid(text, patch.start2, patch.length1);
+    int padding = 0;
+
+    // Look for the first and last matches of pattern in text.  If two different
+    // matches are found, increase the pattern length.
+    while (text.find(pattern) != text.rfind(pattern)
+        && (int)pattern.length() < Match_MaxBits - Patch_Margin - Patch_Margin) {
+      padding += Patch_Margin;
+      pattern = safeMid(text, std::max(0, patch.start2 - padding),
+          std::min((int)text.length(), patch.start2 + patch.length1 + padding)
+          - std::max(0, patch.start2 - padding));
+    }
+    // Add one chunk for good luck.
+    padding += Patch_Margin;
+
+    // Add the prefix.
+    string_t prefix = safeMid(text, std::max(0, patch.start2 - padding),
+        patch.start2 - std::max(0, patch.start2 - padding));
+    if (!prefix.empty()) {
+      patch.diffs.push_front(Diff(EQUAL, prefix));
+    }
+    // Add the suffix.
+    string_t suffix = safeMid(text, patch.start2 + patch.length1,
+        std::min((int)text.length(), patch.start2 + patch.length1 + padding)
+        - (patch.start2 + patch.length1));
+    if (!suffix.empty()) {
+      patch.diffs.push_back(Diff(EQUAL, suffix));
+    }
+
+    // Roll back the start points.
+    patch.start1 -= prefix.length();
+    patch.start2 -= prefix.length();
+    // Extend the lengths.
+    patch.length1 += prefix.length() + suffix.length();
+    patch.length2 += prefix.length() + suffix.length();
+  }
+
+  /**
+   * Compute a list of patches to turn text1 into text2.
+   * A set of diffs will be computed.
+   * @param text1 Old text.
+   * @param text2 New text.
+   * @return LinkedList of Patch objects.
+   */
+ public:
+  Patches patch_make(const string_t &text1, const string_t &text2) const {
+    // No diffs provided, compute our own.
+    Diffs diffs = diff_main(text1, text2, true);
+    if (diffs.size() > 2) {
+      diff_cleanupSemantic(diffs);
+      diff_cleanupEfficiency(diffs);
+    }
+
+    return patch_make(text1, diffs);
+  }
+
+  /**
+   * Compute a list of patches to turn text1 into text2.
+   * text1 will be derived from the provided diffs.
+   * @param diffs Array of diff tuples for text1 to text2.
+   * @return LinkedList of Patch objects.
+   */
+ public:
+  Patches patch_make(const Diffs &diffs) const {
+    // No origin string provided, compute our own.
+    return patch_make(diff_text1(diffs), diffs);
+  }
+
+  /**
+   * Compute a list of patches to turn text1 into text2.
+   * text2 is ignored, diffs are the delta between text1 and text2.
+   * @param text1 Old text.
+   * @param text2 Ignored.
+   * @param diffs Array of diff tuples for text1 to text2.
+   * @return LinkedList of Patch objects.
+   * @note Prefer patch_make(const string_t &text1, const Diffs &diffs).
+   */
+ public:
+  Patches patch_make(const string_t &text1, const string_t &text2, const Diffs &diffs) const {
+    return patch_make(text1, diffs); // text2 is entirely unused.
+  }
+
+  /**
+   * Compute a list of patches to turn text1 into text2.
+   * text2 is not provided, diffs are the delta between text1 and text2.
+   * @param text1 Old text.
+   * @param diffs Array of diff tuples for text1 to text2.
+   * @return LinkedList of Patch objects.
+   */
+ public:
+  Patches patch_make(const string_t &text1, const Diffs &diffs) const {
+    Patches patches;
+    if (!diffs.empty()) { // Get rid of the null case.
+      Patch patch;
+      int char_count1 = 0;  // Number of characters into the text1 string.
+      int char_count2 = 0;  // Number of characters into the text2 string.
+      // Start with text1 (prepatch_text) and apply the diffs until we arrive at
+      // text2 (postpatch_text).  We recreate the patches one by one to determine
+      // context info.
+      string_t prepatch_text = text1;
+      string_t postpatch_text = text1;
+      for (typename Diffs::const_iterator cur_diff = diffs.begin(); cur_diff != diffs.end(); ++cur_diff) {
+        if (patch.diffs.empty() && (*cur_diff).operation != EQUAL) {
+          // A new patch starts here.
+          patch.start1 = char_count1;
+          patch.start2 = char_count2;
+        }
+
+        switch ((*cur_diff).operation) {
+          case INSERT:
+            patch.diffs.push_back(*cur_diff);
+            patch.length2 += (*cur_diff).text.length();
+            postpatch_text = postpatch_text.substr(0, char_count2)
+                + (*cur_diff).text + safeMid(postpatch_text, char_count2);
+            break;
+          case DELETE:
+            patch.length1 += (*cur_diff).text.length();
+            patch.diffs.push_back(*cur_diff);
+            postpatch_text = postpatch_text.substr(0, char_count2)
+                + safeMid(postpatch_text, char_count2 + (*cur_diff).text.length());
+            break;
+          case EQUAL:
+            if ((int)(*cur_diff).text.length() <= 2 * Patch_Margin
+                && !patch.diffs.empty() && !(*cur_diff == diffs.back())) {
+              // Small equality inside a patch.
+              patch.diffs.push_back(*cur_diff);
+              patch.length1 += (*cur_diff).text.length();
+              patch.length2 += (*cur_diff).text.length();
+            }
+
+            if ((int)(*cur_diff).text.length() >= 2 * Patch_Margin) {
+              // Time for a new patch.
+              if (!patch.diffs.empty()) {
+                patch_addContext(patch, prepatch_text);
+                patches.push_back(patch);
+                patch = Patch();
+                // Unlike Unidiff, our patch lists have a rolling context.
+                // http://code.google.com/p/google-diff-match-patch/wiki/Unidiff
+                // Update prepatch text & pos to reflect the application of the
+                // just completed patch.
+                prepatch_text = postpatch_text;
+                char_count1 = char_count2;
+              }
+            }
+            break;
+        }
+
+        // Update the current character count.
+        if ((*cur_diff).operation != INSERT) {
+          char_count1 += (*cur_diff).text.length();
+        }
+        if ((*cur_diff).operation != DELETE) {
+          char_count2 += (*cur_diff).text.length();
+        }
+      }
+      // Pick up the leftover patch if not empty.
+      if (!patch.diffs.empty()) {
+        patch_addContext(patch, prepatch_text);
+        patches.push_back(patch);
+      }
+    }
+    return patches;
+  }
+
+  /**
+   * Given an array of patches, return another array that is identical.
+   * @param patches Array of patch objects.
+   * @return Array of patch objects.
+   */
+ public:
+  Patches patch_deepCopy(const Patches &patches) const { return patches; }
+
+  /**
+   * Merge a set of patches onto the text.  Return a patched text, as well
+   * as an array of true/false values indicating which patches were applied.
+   * @param patches Array of patch objects.
+   * @param text Old text.
+   * @return Two element Object array, containing the new text and an array of
+   *      boolean values.
+   */
+ public:
+  std::pair<string_t, std::vector<bool> > patch_apply(const Patches &patches, const string_t &text) const
+    { std::pair<string_t, std::vector<bool> > res; patch_apply(patches, text, res); return res; }
+  void patch_apply(const Patches &patches, const string_t &sourceText, std::pair<string_t, std::vector<bool> >& res) const {
+    if (patches.empty()) {
+      res.first = sourceText;
+      res.second.clear();
+      return;
+    }
+    string_t text = sourceText;  // Copy to preserve original.
+
+    // Deep copy the patches so that no changes are made to originals.
+  //  Patches patchesCopy = patch_deepCopy(patches);
+    Patches patchesCopy(patches); // Default copy constructor will do it just fine
+
+    string_t nullPadding = patch_addPadding(patchesCopy);
+    text = nullPadding + text + nullPadding;
+    patch_splitMax(patchesCopy);
+
+    int x = 0;
+    // delta keeps track of the offset between the expected and actual location
+    // of the previous patch.  If there are patches expected at positions 10 and
+    // 20, but the first patch was found at 12, delta is 2 and the second patch
+    // has an effective expected position of 22.
+    int delta = 0;
+    std::vector<bool>& results = res.second;
+    results.resize(patchesCopy.size());
+    string_t text1, text2;
+    for (typename Patches::const_iterator cur_patch = patchesCopy.begin(); cur_patch != patchesCopy.end(); ++cur_patch) {
+      int expected_loc = (*cur_patch).start2 + delta;
+      text1 = diff_text1((*cur_patch).diffs);
+      int start_loc;
+      int end_loc = -1;
+      if ((int)text1.length() > Match_MaxBits) {
+        // patch_splitMax will only provide an oversized pattern in the case of
+        // a monster delete.
+        start_loc = match_main(text, text1.substr(0, Match_MaxBits), expected_loc);
+        if (start_loc != -1) {
+          end_loc = match_main(text, right(text1, Match_MaxBits),
+              expected_loc + text1.length() - Match_MaxBits);
+          if (end_loc == -1 || start_loc >= end_loc) {
+            // Can't find valid trailing context.  Drop this patch.
+            start_loc = -1;
+          }
+        }
+      } else {
+        start_loc = match_main(text, text1, expected_loc);
+      }
+      if (start_loc == -1) {
+        // No match found.  :(
+        results[x] = false;
+        // Subtract the delta for this failed patch from subsequent patches.
+        delta -= (*cur_patch).length2 - (*cur_patch).length1;
+      } else {
+        // Found a match.  :)
+        results[x] = true;
+        delta = start_loc - expected_loc;
+        if (end_loc == -1) {
+          text2 = safeMid(text, start_loc, text1.length());
+        } else {
+          text2 = safeMid(text, start_loc, end_loc + Match_MaxBits - start_loc);
+        }
+        if (text1 == text2) {
+          // Perfect match, just shove the replacement text in.
+          text = text.substr(0, start_loc) + diff_text2((*cur_patch).diffs) + safeMid(text, start_loc + text1.length());
+        } else {
+          // Imperfect match.  Run a diff to get a framework of equivalent
+          // indices.
+          Diffs diffs = diff_main(text1, text2, false);
+          if ((int)text1.length() > Match_MaxBits
+              && diff_levenshtein(diffs) / static_cast<float> (text1.length())
+              > Patch_DeleteThreshold) {
+            // The end points match, but the content is unacceptably bad.
+            results[x] = false;
+          } else {
+            diff_cleanupSemanticLossless(diffs);
+            int index1 = 0;
+            for (typename Diffs::const_iterator cur_diff = (*cur_patch).diffs.begin(); cur_diff != (*cur_patch).diffs.end(); ++cur_diff) {
+              if ((*cur_diff).operation != EQUAL) {
+                int index2 = diff_xIndex(diffs, index1);
+                if ((*cur_diff).operation == INSERT) {
+                  // Insertion
+                  text = text.substr(0, start_loc + index2) + (*cur_diff).text
+                      + safeMid(text, start_loc + index2);
+                } else if ((*cur_diff).operation == DELETE) {
+                  // Deletion
+                  text = text.substr(0, start_loc + index2)
+                      + safeMid(text, start_loc + diff_xIndex(diffs,
+                      index1 + (*cur_diff).text.length()));
+                }
+              }
+              if ((*cur_diff).operation != DELETE) {
+                index1 += (*cur_diff).text.length();
+              }
+            }
+          }
+        }
+      }
+      x++;
+    }
+    // Strip the padding off.
+    res.first = safeMid(text, nullPadding.length(), text.length() - 2 * nullPadding.length());
+  }
+
+  /**
+   * Add some padding on text start and end so that edges can match something.
+   * Intended to be called only from within patch_apply.
+   * @param patches Array of patch objects.
+   * @return The padding string added to each side.
+   */
+ public:
+  string_t patch_addPadding(Patches &patches) const {
+    short paddingLength = Patch_Margin;
+    string_t nullPadding;
+    for (short x = 1; x <= paddingLength; x++) {
+      nullPadding += (char_t)x;
+    }
+
+    // Bump all the patches forward.
+    for (typename Patches::iterator cur_patch = patches.begin(); cur_patch != patches.end(); ++cur_patch) {
+      (*cur_patch).start1 += paddingLength;
+      (*cur_patch).start2 += paddingLength;
+    }
+
+    // Add some padding on start of first diff.
+    Patch &firstPatch = patches.front();
+    Diffs &firstPatchDiffs = firstPatch.diffs;
+    if (firstPatchDiffs.empty() || firstPatchDiffs.front().operation != EQUAL) {
+      // Add nullPadding equality.
+      firstPatchDiffs.push_front(Diff(EQUAL, nullPadding));
+      firstPatch.start1 -= paddingLength;  // Should be 0.
+      firstPatch.start2 -= paddingLength;  // Should be 0.
+      firstPatch.length1 += paddingLength;
+      firstPatch.length2 += paddingLength;
+    } else if (paddingLength > (int)firstPatchDiffs.front().text.length()) {
+      // Grow first equality.
+      Diff &firstDiff = firstPatchDiffs.front();
+      int extraLength = paddingLength - firstDiff.text.length();
+      firstDiff.text = safeMid(nullPadding, firstDiff.text.length(),
+          paddingLength - firstDiff.text.length()) + firstDiff.text;
+      firstPatch.start1 -= extraLength;
+      firstPatch.start2 -= extraLength;
+      firstPatch.length1 += extraLength;
+      firstPatch.length2 += extraLength;
+    }
+
+    // Add some padding on end of last diff.
+    Patch &lastPatch = patches.front();
+    Diffs &lastPatchDiffs = lastPatch.diffs;
+    if (lastPatchDiffs.empty() || lastPatchDiffs.back().operation != EQUAL) {
+      // Add nullPadding equality.
+      lastPatchDiffs.push_back(Diff(EQUAL, nullPadding));
+      lastPatch.length1 += paddingLength;
+      lastPatch.length2 += paddingLength;
+    } else if (paddingLength > (int)lastPatchDiffs.back().text.length()) {
+      // Grow last equality.
+      Diff &lastDiff = lastPatchDiffs.back();
+      int extraLength = paddingLength - lastDiff.text.length();
+      lastDiff.text += nullPadding.substr(0, extraLength);
+      lastPatch.length1 += extraLength;
+      lastPatch.length2 += extraLength;
+    }
+
+    return nullPadding;
+  }
+
+  /**
+   * Look through the patches and break up any which are longer than the
+   * maximum limit of the match algorithm.
+   * Intended to be called only from within patch_apply.
+   * @param patches LinkedList of Patch objects.
+   */
+ public:
+  void patch_splitMax(Patches &patches) const {
+    short patch_size = Match_MaxBits;
+    string_t precontext, postcontext;
+    Patch patch;
+    int start1, start2;
+    bool empty;
+    Operation diff_type;
+    string_t diff_text;
+    Patch bigpatch;
+
+    for (typename Patches::iterator cur_patch = patches.begin(); cur_patch != patches.end();) {
+      if ((*cur_patch).length1 <= patch_size) { ++cur_patch; continue; }
+      bigpatch = *cur_patch;
+      // Remove the big old patch.
+      cur_patch = patches.erase(cur_patch);
+      start1 = bigpatch.start1;
+      start2 = bigpatch.start2;
+      precontext.clear();
+      while (!bigpatch.diffs.empty()) {
+        // Create one of several smaller patches.
+        patch = Patch();
+        empty = true;
+        patch.start1 = start1 - precontext.length();
+        patch.start2 = start2 - precontext.length();
+        if (!precontext.empty()) {
+          patch.length1 = patch.length2 = precontext.length();
+          patch.diffs.push_back(Diff(EQUAL, precontext));
+        }
+        while (!bigpatch.diffs.empty()
+            && patch.length1 < patch_size - Patch_Margin) {
+          diff_type = bigpatch.diffs.front().operation;
+          diff_text = bigpatch.diffs.front().text;
+          if (diff_type == INSERT) {
+            // Insertions are harmless.
+            patch.length2 += diff_text.length();
+            start2 += diff_text.length();
+            patch.diffs.push_back(bigpatch.diffs.front());
+            bigpatch.diffs.pop_front();
+            empty = false;
+          } else if (diff_type == DELETE && patch.diffs.size() == 1
+              && patch.diffs.front().operation == EQUAL
+              && (int)diff_text.length() > 2 * patch_size) {
+            // This is a large deletion.  Let it pass in one chunk.
+            patch.length1 += diff_text.length();
+            start1 += diff_text.length();
+            empty = false;
+            patch.diffs.push_back(Diff(diff_type, diff_text));
+            bigpatch.diffs.pop_front();
+          } else {
+            // Deletion or equality.  Only take as much as we can stomach.
+            diff_text = diff_text.substr(0, std::min((int)diff_text.length(),
+                patch_size - patch.length1 - Patch_Margin));
+            patch.length1 += diff_text.length();
+            start1 += diff_text.length();
+            if (diff_type == EQUAL) {
+              patch.length2 += diff_text.length();
+              start2 += diff_text.length();
+            } else {
+              empty = false;
+            }
+            patch.diffs.push_back(Diff(diff_type, diff_text));
+            if (diff_text == bigpatch.diffs.front().text) {
+              bigpatch.diffs.pop_front();
+            } else {
+              bigpatch.diffs.front().text = safeMid(bigpatch.diffs.front().text, diff_text.length());
+            }
+          }
+        }
+        // Compute the head context for the next patch.
+        precontext = safeMid(diff_text2(patch.diffs), std::max(0, (int)precontext.length() - Patch_Margin));
+        // Append the end context for this patch.
+        postcontext = diff_text1(bigpatch.diffs);
+        if ((int)postcontext.length() > Patch_Margin) {
+          postcontext = postcontext.substr(0, Patch_Margin);
+        }
+        if (!postcontext.empty()) {
+          patch.length1 += postcontext.length();
+          patch.length2 += postcontext.length();
+          if (!patch.diffs.empty()
+              && patch.diffs.back().operation == EQUAL) {
+            patch.diffs.back().text += postcontext;
+          } else {
+            patch.diffs.push_back(Diff(EQUAL, postcontext));
+          }
+        }
+        if (!empty) {
+          patches.insert(cur_patch, patch);
+        }
+      }
+    }
+  }
+
+  /**
+   * Take a list of patches and return a textual representation.
+   * @param patches List of Patch objects.
+   * @return Text representation of patches.
+   */
+ public:
+  static string_t patch_toText(const Patches &patches) {
+    string_t text;
+    for (typename Patches::const_iterator cur_patch = patches.begin(); cur_patch != patches.end(); ++cur_patch) {
+      text += (*cur_patch).toString();
+    }
+    return text;
+  }
+
+  /**
+   * Parse a textual representation of patches and return a List of Patch
+   * objects.
+   * @param textline Text representation of patches.
+   * @return List of Patch objects.
+   * @throws string_t If invalid input.
+   */
+ public:
+  Patches patch_fromText(const string_t &textline) const {
+    Patches patches;
+    if (!textline.empty()) {
+      char_t sign;
+      string_t line;
+      typename string_t::const_pointer text = textline.c_str();
+      typename string_t::size_type text_len, l;
+      while (text - textline.c_str() < (int)textline.length()) {
+        if ((text_len = next_token(textline, traits::from_wchar(L'\n'), text)) == 0) { ++text; continue; }
+
+        // A replacement for the regexp "^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$" exact match
+        string_t start1, length1, start2, length2;
+        do {
+          typename string_t::const_pointer t = text;
+          l = text_len;
+          if ((l -= 9) > 0 && traits::to_wchar(*t) == L'@' && traits::to_wchar(*++t) == L'@'
+               && traits::to_wchar(*++t) == L' ' && traits::to_wchar(*++t) == L'-' && traits::is_digit(*++t)) {
+            do { start1 += *t; } while (--l > 0 && traits::is_digit(*++t));
+            if (l > 0 && traits::to_wchar(*t) == L',') ++t, --l;
+            while (l > 0 && traits::is_digit(*t)) --l, length1 += *t++;
+            if (l > 0 && traits::to_wchar(*t++) == L' ' && traits::to_wchar(*t++) == L'+' && traits::is_digit(*t)) {
+              do { start2 += *t; --l; } while (traits::is_digit(*++t));
+              if (l > 0 && traits::to_wchar(*t) == L',') ++t, --l;
+              while (l > 0 && traits::is_digit(*t)) --l, length2 += *t++;
+              if (l == 0 && traits::to_wchar(*t++) == L' ' && traits::to_wchar(*t++) == L'@' && traits::to_wchar(*t) == L'@') break; // Success
+            }
+          }
+          llvm_unreachable(traits::cs(L"Invalid patch string: ") + string_t(text, text_len));
+        } while (false);
+
+        Patch patch;
+        patch.start1 = to_int(start1);
+        if (length1.empty()) {
+          patch.start1--;
+          patch.length1 = 1;
+        } else if (length1.size() == 1 && traits::to_wchar(length1[0]) == L'0') {
+          patch.length1 = 0;
+        } else {
+          patch.start1--;
+          patch.length1 = to_int(length1);
+        }
+
+        patch.start2 = to_int(start2);
+        if (length2.empty()) {
+          patch.start2--;
+          patch.length2 = 1;
+        } else if (length2.size() == 1 && traits::to_wchar(length2[0]) == L'0') {
+          patch.length2 = 0;
+        } else {
+          patch.start2--;
+          patch.length2 = to_int(length2);
+        }
+
+        for (text += text_len + 1; text - textline.c_str() < (int)textline.length(); text += text_len + 1) {
+          if ((text_len = next_token(textline, traits::from_wchar(L'\n'), text)) == 0) continue;
+
+          sign = *text;
+          line.assign(text + 1, text_len - 1);
+          percent_decode(line);
+          switch (traits::to_wchar(sign)) {
+            case L'-':
+              // Deletion.
+              patch.diffs.push_back(Diff(DELETE, line));
+              continue;
+            case L'+':
+              // Insertion.
+              patch.diffs.push_back(Diff(INSERT, line));
+              continue;
+            case L' ':
+              // Minor equality.
+              patch.diffs.push_back(Diff(EQUAL, line));
+              continue;
+            case L'@':
+              // Start of next patch.
+              break;
+            default:
+              // WTF?
+              llvm_unreachable(traits::cs(L"Invalid patch mode '") + (sign + (traits::cs(L"' in: ") + line)));
+          }
+          break;
+        }
+
+        patches.push_back(patch);
+      }
+    }
+    return patches;
+  }
+
+  /**
+   * A safer version of string_t.mid(pos).  This one returns "" instead of
+   * null when the position equals the string length.
+   * @param str String to take a substring from.
+   * @param pos Position to start the substring from.
+   * @return Substring.
+   */
+ private:
+  static inline string_t safeMid(const string_t &str, size_t pos) {
+    return (pos == str.length()) ? string_t() : str.substr(pos);
+  }
+
+  /**
+   * A safer version of string_t.mid(pos, len).  This one returns "" instead of
+   * null when the position equals the string length.
+   * @param str String to take a substring from.
+   * @param pos Position to start the substring from.
+   * @param len Length of substring.
+   * @return Substring.
+   */
+ private:
+  static inline string_t safeMid(const string_t &str, size_t pos, size_t len) {
+    return (pos == str.length()) ? string_t() : str.substr(pos, len);
+  }
+
+  /**
+   * Utility functions
+   */
+ private:
+  static string_t to_string(int n) {
+    string_t str;
+    bool negative = false;
+    size_t l = 0;
+    if (n < 0) n = -n, ++l, negative = true;
+    int n_ = n; do { ++l; } while ((n_ /= 10) > 0);
+    str.resize(l);
+    typename string_t::iterator s = str.end();
+    const wchar_t digits[] = L"0123456789";
+    do { *--s = traits::from_wchar(digits[n % 10]); } while ((n /= 10) > 0);
+    if (negative) *--s = traits::from_wchar(L'-');
+    return str;
+  }
+
+  static int to_int(const string_t& str) { return traits::to_int(str.c_str()); }
+
+  static bool is_control(char_t c) { switch (traits::to_wchar(c)) { case L'\n': case L'\r': return true; } return false; }
+
+  static typename string_t::size_type next_token(const string_t& str, char_t delim, typename string_t::const_pointer off) {
+    typename string_t::const_pointer p = off, end = str.c_str() + str.length();
+    for (; p != end; ++p) if (*p == delim) break;
+    return p - off;
+  }
+
+  static void append_percent_encoded(string_t& s1, const string_t& s2) {
+    const wchar_t safe_chars[] = L"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.~ !*'();/?:@&=+$,#";
+
+    size_t safe[0x100], i;
+    for (i = 0; i < 0x100; ++i) safe[i] = 0;
+    for (i = 0; i < sizeof(safe_chars) / sizeof(wchar_t); ++i) safe[safe_chars[i]] = i + 1;
+
+    int n = 0;
+    typename traits::utf32_t u;
+    typename string_t::const_pointer c = s2.c_str(), end = c + s2.length();
+    while (c != end) {
+      c = traits::to_utf32(c, end, u);
+      n += u >= 0x10000? 12 : u >= 0x800? 9 : u >= 0x80? 6 : safe[static_cast<unsigned char>(u)]? 1 : 3;
+    }
+    if (n == int(s2.length()))
+      s1.append(s2);
+    else {
+      s1.reserve(s1.size() + n);
+      // Encode as UTF-8, then escape unsafe characters
+      unsigned char utf8[4];
+      for (c = s2.c_str(); c != end;) {
+        c = traits::to_utf32(c, end, u);
+        unsigned char* pt = utf8;
+        if (u < 0x80)
+          *pt++ = (unsigned char)u;  
+        else if (u < 0x800) {
+          *pt++ = (unsigned char)((u >> 6) | 0xC0);
+          *pt++ = (unsigned char)((u & 0x3F) | 0x80);
+        }
+        else if (u < 0x10000) {
+          *pt++ = (unsigned char)((u >> 12) | 0xE0);
+          *pt++ = (unsigned char)(((u >> 6) & 0x3F) | 0x80);
+          *pt++ = (unsigned char)((u & 0x3F) | 0x80);
+        }
+        else {
+          *pt++ = (unsigned char)((u >> 18) | 0xF0);
+          *pt++ = (unsigned char)(((u >> 12) & 0x3F) | 0x80);
+          *pt++ = (unsigned char)(((u >> 6) & 0x3F) | 0x80);
+          *pt++ = (unsigned char)((u & 0x3F) | 0x80);
+        }
+
+        for (const unsigned char* p = utf8; p < pt; ++p)
+          if (safe[*p])
+            s1 += traits::from_wchar(safe_chars[safe[*p] - 1]);
+          else {
+            s1 += traits::from_wchar(L'%');
+            s1 += traits::from_wchar(safe_chars[(*p & 0xF0) >> 4]);
+            s1 += traits::from_wchar(safe_chars[*p & 0xF]);
+          }
+      }
+    }
+  }
+
+  static unsigned hex_digit_value(char_t c) {
+    switch (traits::to_wchar(c))
+    {
+      case L'0': return 0;
+      case L'1': return 1;
+      case L'2': return 2;
+      case L'3': return 3;
+      case L'4': return 4;
+      case L'5': return 5;
+      case L'6': return 6;
+      case L'7': return 7;
+      case L'8': return 8;
+      case L'9': return 9;
+      case L'A': case L'a': return 0xA;
+      case L'B': case L'b': return 0xB;
+      case L'C': case L'c': return 0xC;
+      case L'D': case L'd': return 0xD;
+      case L'E': case L'e': return 0xE;
+      case L'F': case L'f': return 0xF;
+    }
+    llvm_unreachable(string_t(traits::cs(L"Invalid character: ")) + c);
+  }
+
+  static void percent_decode(string_t& str) {
+    typename string_t::iterator s2 = str.begin(), s3 = s2, s4 = s2;
+    for (typename string_t::const_pointer s1 = str.c_str(), end = s1 + str.size(); s1 != end; ++s1, ++s2)
+      if (traits::to_wchar(*s1) != L'%')
+        *s2 = *s1;
+      else {
+        char_t d1 = *++s1;
+        *s2 = char_t((hex_digit_value(d1) << 4) + hex_digit_value(*++s1));
+      }
+    // Decode UTF-8 string in-place
+    while (s3 != s2) {
+      unsigned u = *s3;
+      if (u < 0x80)
+        ;
+      else if ((u >> 5) == 6) {
+        if (++s3 == s2 || (*s3 & 0xC0) != 0x80) continue;
+        u = ((u & 0x1F) << 6) + (*s3 & 0x3F);
+      }
+      else if ((u >> 4) == 0xE) {
+        if (++s3 == s2 || (*s3 & 0xC0) != 0x80) continue;
+        u = ((u & 0xF) << 12) + ((*s3 & 0x3F) << 6);
+        if (++s3 == s2 || (*s3 & 0xC0) != 0x80) continue;
+        u += *s3 & 0x3F;
+      }
+      else if ((u >> 3) == 0x1E) {
+        if (++s3 == s2 || (*s3 & 0xC0) != 0x80) continue;
+        u = ((u & 7) << 18) + ((*s3 & 0x3F) << 12);
+        if (++s3 == s2 || (*s3 & 0xC0) != 0x80) continue;
+        u += (*s3 & 0x3F) << 6;
+        if (++s3 == s2 || (*s3 & 0xC0) != 0x80) continue;
+        u += *s3 & 0x3F; 
+      }
+      else {
+        ++s3;
+        continue;
+      }
+      s4 = traits::from_utf32(u, s4);
+      ++s3;
+    }
+    if (s4 != str.end()) str.resize(s4 - str.begin());
+  }
+
+  static string_t right(const string_t& str, typename string_t::size_type n) { return str.substr(str.size() - n); }
+};
+
+
+/**
+ * Functions dependent on character type
+ */
+
+// Unicode helpers
+template <class char_t, class utf32_type = unsigned>
+struct diff_match_patch_utf32_direct {
+  typedef utf32_type utf32_t;
+  template <class iterator> static iterator to_utf32(iterator i, iterator /*end*/, utf32_t& u)
+  {
+    u = *i++;
+    return i;
+  }
+  template <class iterator> static iterator from_utf32(utf32_t u, iterator o)
+  {
+    *o++ = static_cast<char_t>(u);
+    return o;
+  }
+};
+
+template <class char_t, class utf32_type = unsigned>
+struct diff_match_patch_utf32_from_utf16 {
+  typedef utf32_type utf32_t;
+  static const unsigned UTF16_SURROGATE_MIN = 0xD800u;
+  static const unsigned UTF16_SURROGATE_MAX = 0xDFFFu;
+  static const unsigned UTF16_HIGH_SURROGATE_MAX = 0xDBFFu;
+  static const unsigned UTF16_LOW_SURROGATE_MIN = 0xDC00u;
+  static const unsigned UTF16_SURROGATE_OFFSET = (UTF16_SURROGATE_MIN << 10) + UTF16_HIGH_SURROGATE_MAX - 0xFFFFu;
+  template <class iterator> static iterator to_utf32(iterator i, iterator end, utf32_t& u)
+  {
+    u = *i++;
+    if (UTF16_SURROGATE_MIN <= u && u <= UTF16_HIGH_SURROGATE_MAX && i != end)
+      u = (u << 10) + *i++ - UTF16_SURROGATE_OFFSET; // Assume it is a UTF-16 surrogate pair
+    return i;
+  }
+  template <class iterator> static iterator from_utf32(utf32_t u, iterator o)
+  {
+    if (u > 0xFFFF) { // Encode code points that do not fit in char_t as UTF-16 surrogate pairs
+      *o++ = static_cast<char_t>((u >> 10) + UTF16_SURROGATE_MIN - (0x10000 >> 10));
+      *o++ = static_cast<char_t>((u & 0x3FF) + UTF16_LOW_SURROGATE_MIN);
+    }
+    else
+      *o++ = static_cast<char_t>(u);
+    return o;
+  }
+};
+
+// Specialization of the traits for wchar_t
+#include <cwctype>
+template <> struct diff_match_patch_traits<wchar_t> : diff_match_patch_utf32_from_utf16<wchar_t> {
+  static bool is_alnum(wchar_t c) { return std::iswalnum(c)? true : false; }
+  static bool is_digit(wchar_t c) { return std::iswdigit(c)? true : false; }
+  static bool is_space(wchar_t c) { return std::iswspace(c)? true : false; }
+  static int to_int(const wchar_t* s) { return static_cast<int>(std::wcstol(s, NULL, 10)); }
+  static wchar_t from_wchar(wchar_t c) { return c; }
+  static wchar_t to_wchar(wchar_t c) { return c; }
+  static const wchar_t* cs(const wchar_t* s) { return s; }
+  static const wchar_t eol = L'\n';
+  static const wchar_t tab = L'\t';
+};
+
+// Possible specialization of the traits for char
+#include <cctype>
+template <> struct diff_match_patch_traits<char> : diff_match_patch_utf32_direct<char>
+{
+  static bool is_alnum(char c) { return std::isalnum(c)? true : false; }
+  static bool is_digit(char c) { return std::isdigit(c)? true : false; }
+  static bool is_space(char c) { return std::isspace(c)? true : false; }
+  static int to_int(const char* s) { return std::atoi(s); }
+  static char from_wchar(wchar_t c) { return static_cast<char>(c); }
+  static wchar_t to_wchar(char c) { return static_cast<wchar_t>(c); }
+  static std::string cs(const wchar_t* s) { return std::string(s, s + wcslen(s)); }
+  static const char eol = '\n';
+  static const char tab = '\t';
+};
+
+
+#endif // DIFF_MATCH_PATCH_H
diff --git a/include/swift/Basic/ImmutablePointerSet.h b/include/swift/Basic/ImmutablePointerSet.h
index eaf91cc..283bcc2 100644
--- a/include/swift/Basic/ImmutablePointerSet.h
+++ b/include/swift/Basic/ImmutablePointerSet.h
@@ -180,8 +180,9 @@
   using PtrTy = typename std::add_pointer<T>::type;
 
   using PtrSet = ImmutablePointerSet<T>;
-  static constexpr unsigned AllocAlignment =
-      (alignof(PtrSet) > alignof(PtrTy)) ? alignof(PtrSet) : alignof(PtrTy);
+  // This is computed out-of-line so that ImmutablePointerSetFactory is
+  // treated as a complete type.
+  static const unsigned AllocAlignment;
 
   llvm::BumpPtrAllocator &Allocator;
   llvm::FoldingSetVector<PtrSet> Set;
@@ -347,6 +348,10 @@
 ImmutablePointerSet<T> ImmutablePointerSetFactory<T>::EmptyPtrSet =
     ImmutablePointerSet<T>(nullptr, {});
 
+template <typename T>
+constexpr unsigned ImmutablePointerSetFactory<T>::AllocAlignment =
+    (alignof(PtrSet) > alignof(PtrTy)) ? alignof(PtrSet) : alignof(PtrTy);
+
 } // end swift namespace
 
 #endif // SWIFT_BASIC_IMMUTABLEPOINTERSET_H
diff --git a/include/swift/Basic/LangOptions.h b/include/swift/Basic/LangOptions.h
index ffec8f8..5a64126 100644
--- a/include/swift/Basic/LangOptions.h
+++ b/include/swift/Basic/LangOptions.h
@@ -229,7 +229,7 @@
       Swift3ObjCInferenceWarnings::None;
 
     /// Diagnose uses of NSCoding with classes that have unstable mangled names.
-    bool EnableNSKeyedArchiverDiagnostics = false;
+    bool EnableNSKeyedArchiverDiagnostics = true;
     
     /// Enable keypath components that aren't fully implemented.
     bool EnableExperimentalKeyPathComponents = false;
diff --git a/include/swift/Basic/Statistic.h b/include/swift/Basic/Statistic.h
index ba731be..6a7f5a7 100644
--- a/include/swift/Basic/Statistic.h
+++ b/include/swift/Basic/Statistic.h
@@ -67,6 +67,8 @@
     size_t DriverDepNominal;
     size_t DriverDepMember;
     size_t DriverDepExternal;
+
+    size_t ChildrenMaxRSS;
   };
 
   struct AlwaysOnFrontendCounters
@@ -124,6 +126,8 @@
     size_t NumIRComdatSymbols;
     size_t NumIRBasicBlocks;
     size_t NumIRInsts;
+
+    size_t NumLLVMBytesOutput;
   };
 
 private:
@@ -136,9 +140,16 @@
   void publishAlwaysOnStatsToLLVM();
   void printAlwaysOnStatsAndTimers(llvm::raw_ostream &OS);
 
+  UnifiedStatsReporter(StringRef ProgramName,
+                       StringRef AuxName,
+                       StringRef Directory);
 public:
   UnifiedStatsReporter(StringRef ProgramName,
-                       StringRef TargetName,
+                       StringRef ModuleName,
+                       StringRef InputName,
+                       StringRef TripleName,
+                       StringRef OutputType,
+                       StringRef OptType,
                        StringRef Directory);
   ~UnifiedStatsReporter();
 
diff --git a/include/swift/Driver/ToolChain.h b/include/swift/Driver/ToolChain.h
index abf85b6..3bc2204 100644
--- a/include/swift/Driver/ToolChain.h
+++ b/include/swift/Driver/ToolChain.h
@@ -168,6 +168,14 @@
 
   /// Return the default language type to use for the given extension.
   virtual types::ID lookupTypeForExtension(StringRef Ext) const;
+
+  /// Check whether a clang library with a given name exists.
+  ///
+  /// \param args Invocation arguments.
+  /// \param sanitizer Sanitizer name.
+  virtual bool sanitizerRuntimeLibExists(const llvm::opt::ArgList &args,
+                                         StringRef sanitizer) const;
+
 };
 } // end namespace driver
 } // end namespace swift
diff --git a/include/swift/Frontend/FrontendOptions.h b/include/swift/Frontend/FrontendOptions.h
index d2de8e8..4019a4e 100644
--- a/include/swift/Frontend/FrontendOptions.h
+++ b/include/swift/Frontend/FrontendOptions.h
@@ -138,6 +138,12 @@
   /// Intended for debugging purposes only.
   unsigned WarnLongFunctionBodies = 0;
 
+  /// If non-zero, warn when type-checking an expression takes longer
+  /// than this many milliseconds.
+  ///
+  /// Intended for debugging purposes only.
+  unsigned WarnLongExpressionTypeChecking = 0;
+
   enum ActionType {
     NoneAction, ///< No specific action
     Parse, ///< Parse only
@@ -234,11 +240,6 @@
   /// by the Clang importer as part of semantic analysis.
   bool SerializeBridgingHeader = false;
 
-  /// Enables the "fully fragile" resilience strategy.
-  ///
-  /// \see ResilienceStrategy::Fragile
-  bool SILSerializeAll = false;
-
   /// Indicates whether or not the frontend should print statistics upon
   /// termination.
   bool PrintStats = false;
diff --git a/include/swift/IDE/APIDigesterData.h b/include/swift/IDE/APIDigesterData.h
index ead967c..69d3dd2 100644
--- a/include/swift/IDE/APIDigesterData.h
+++ b/include/swift/IDE/APIDigesterData.h
@@ -219,6 +219,7 @@
 //
 enum class TypeMemberDiffItemSubKind {
   SimpleReplacement,
+  QualifiedReplacement,
   GlobalFuncToStaticProperty,
   HoistSelfOnly,
   HoistSelfAndRemoveParam,
@@ -231,6 +232,7 @@
   StringRef newPrintedName;
   Optional<uint8_t> selfIndex;
   Optional<uint8_t> removedIndex;
+  StringRef oldTypeName;
   StringRef oldPrintedName;
 
 private:
@@ -243,10 +245,10 @@
 public:
   TypeMemberDiffItem(StringRef usr, StringRef newTypeName,
                      StringRef newPrintedName, Optional<uint8_t> selfIndex,
-                     Optional<uint8_t> removedIndex,
+                     Optional<uint8_t> removedIndex, StringRef oldTypeName,
                      StringRef oldPrintedName) : usr(usr),
     newTypeName(newTypeName), newPrintedName(newPrintedName),
-    selfIndex(selfIndex), removedIndex(removedIndex),
+    selfIndex(selfIndex), removedIndex(removedIndex), oldTypeName(oldTypeName),
     oldPrintedName(oldPrintedName), OldNameViewer(oldPrintedName),
     NewNameViewer(newPrintedName), Subkind(getSubKind()) {}
   static StringRef head();
diff --git a/include/swift/IDE/DigesterEnums.def b/include/swift/IDE/DigesterEnums.def
index 66965a6..4f44e2a 100644
--- a/include/swift/IDE/DigesterEnums.def
+++ b/include/swift/IDE/DigesterEnums.def
@@ -56,6 +56,7 @@
 NODE_ANNOTATION(TypeAliasChangeFromInt)
 NODE_ANNOTATION(GetterToProperty)
 NODE_ANNOTATION(SetterToProperty)
+NODE_ANNOTATION(PropertyName)
 NODE_ANNOTATION(TypeRewritten)
 NODE_ANNOTATION(TypeRewrittenLeft)
 NODE_ANNOTATION(TypeRewrittenRight)
@@ -120,6 +121,7 @@
 DIFF_ITEM_KEY_KIND_STRING(ModuleName)
 DIFF_ITEM_KEY_KIND_STRING(NewTypeName)
 DIFF_ITEM_KEY_KIND_STRING(NewPrintedName)
+DIFF_ITEM_KEY_KIND_STRING(OldTypeName)
 DIFF_ITEM_KEY_KIND_STRING(OldPrintedName)
 DIFF_ITEM_KEY_KIND_STRING(SpecialCaseId)
 
@@ -130,6 +132,9 @@
 SPECIAL_CASE_ID(NSOpenGLSetOption)
 SPECIAL_CASE_ID(NSOpenGLGetOption)
 SPECIAL_CASE_ID(StaticAbsToSwiftAbs)
+SPECIAL_CASE_ID(NSOpenGLGetVersion)
+SPECIAL_CASE_ID(ToIntMax)
+SPECIAL_CASE_ID(ToUIntMax)
 
 #undef SPECIAL_CASE_ID
 #undef DIFF_ITEM_KEY_KIND_INT
diff --git a/include/swift/IDE/Utils.h b/include/swift/IDE/Utils.h
index 1b0fb79..7054168 100644
--- a/include/swift/IDE/Utils.h
+++ b/include/swift/IDE/Utils.h
@@ -304,7 +304,7 @@
 
 class RangeResolver : public SourceEntityWalker {
   struct Implementation;
-  Implementation *Impl;
+  std::unique_ptr<Implementation> Impl;
   bool walkToExprPre(Expr *E) override;
   bool walkToExprPost(Expr *E) override;
   bool walkToStmtPre(Stmt *S) override;
@@ -317,8 +317,8 @@
 public:
   RangeResolver(SourceFile &File, SourceLoc Start, SourceLoc End);
   RangeResolver(SourceFile &File, unsigned Offset, unsigned Length);
-  ResolvedRangeInfo resolve();
   ~RangeResolver();
+  ResolvedRangeInfo resolve();
 };
 
 /// This provides a utility to view a printed name by parsing the components
@@ -327,6 +327,7 @@
 class DeclNameViewer {
   StringRef BaseName;
   SmallVector<StringRef, 4> Labels;
+  bool IsValid;
   bool HasParen;
 public:
   DeclNameViewer(StringRef Text);
@@ -337,6 +338,7 @@
   unsigned argSize() const { return Labels.size(); }
   unsigned partsCount() const { return 1 + Labels.size(); }
   unsigned commonPartsCount(DeclNameViewer &Other) const;
+  bool isValid() const { return IsValid; }
   bool isFunction() const { return HasParen; }
 };
 
diff --git a/include/swift/IRGen/ValueWitness.h b/include/swift/IRGen/ValueWitness.h
index a6e6253..6545978 100644
--- a/include/swift/IRGen/ValueWitness.h
+++ b/include/swift/IRGen/ValueWitness.h
@@ -64,41 +64,15 @@
 /// This leaves us with 12 data operations, to which we add the
 /// meta-operation 'sizeAndAlign' for a total of 13.
 enum class ValueWitness : unsigned {
-  // destroyBuffer comes first because I expect it to be the most
-  // common operation (both by code size and occurrence), since it's
-  // the optimal way to destroy an individual local/temporary.
-  //
-  // Several other candidates that are likely to see use in
-  // existential code are then grouped together for cache-locality
-  // reasons.
+  // Candidates that are likely to see use in existential code are then grouped
+  // together for cache-locality reasons.
   
-  ///   void (*destroyBuffer)(B *buffer, M *self);
-  ///
-  /// Given a valid buffer which owns a valid object of this type,
-  /// destroy it.  This can be decomposed as
-  ///   self->destroy(self->projectBuffer(buffer), self);
-  ///   self->deallocateBuffer(buffer), self);
-  DestroyBuffer,
-
   ///   T *(*initializeBufferWithCopyOfBuffer)(B *dest, B *src, M *self);
   /// Given an invalid buffer, initialize it as a copy of the
   /// object in the source buffer.  This can be decomposed as:
-  ///   initializeBufferWithCopy(dest, self->projectBuffer(src), self)
+  ///   initializeWithCopy(self->allocateBuffer(dest, self), self->projectBuffer(src), self)
   InitializeBufferWithCopyOfBuffer,
   
-  ///   T *(*projectBuffer)(B *buffer, M *self);
-  ///
-  /// Given an initialized fixed-size buffer, find its allocated
-  /// storage.
-  ProjectBuffer,
-
-  ///   void (*deallocateBuffer)(B *buffer, M *self);
-  ///
-  /// Given a buffer owning storage for an uninitialized object of this
-  /// type, deallocate the storage, putting the buffer in an invalid
-  /// state.
-  DeallocateBuffer, // likely along exception edges of initializers
-
   ///   void (*destroy)(T *object, witness_t *self);
   ///
   /// Given a valid object of this type, destroy it, leaving it as an
@@ -107,12 +81,6 @@
   /// struct, or tuple element.
   Destroy,
 
-  ///   T *(*initializeBufferWithCopy)(B *dest, T *src, M *self);
-  /// Given an invalid buffer, initialize it as a copy of the
-  /// source object.  This can be decomposed as:
-  ///   initializeWithCopy(self->allocateBuffer(dest, self), src, self)
-  InitializeBufferWithCopy,
-
   ///   T *(*initializeWithCopy)(T *dest, T *src, M *self);
   ///
   /// Given an invalid object of this type, initialize it as a copy of
@@ -125,13 +93,6 @@
   /// source object.  Returns the dest object.
   AssignWithCopy,
 
-  ///   T *(*initializeBufferWithTake)(B *dest, T *src, M *self);
-  ///
-  /// Given an invalid buffer, initialize it by taking the value
-  /// of the source object.  The source object becomes invalid.
-  /// Returns the dest object.  
-  InitializeBufferWithTake,
-
   ///   T *(*initializeWithTake)(T *dest, T *src, M *self);
   ///
   /// Given an invalid object of this type, initialize it by taking
@@ -145,18 +106,11 @@
   /// source object.  The source object becomes invalid.  Returns the
   /// dest object.
   AssignWithTake,
-
-  ///   T *(*allocateBuffer)(B *buffer, M *self);
-  /// 
-  /// Given a buffer in an invalid state, make it the owner of storage
-  /// for an uninitialized object of this type.  Return the address of
-  /// that object.
-  AllocateBuffer,
   
   ///   T *(*initializeBufferWithTakeOfBuffer)(B *dest, B *src, M *self);
   /// Given an invalid buffer, initialize it by taking the value out of
   /// the source buffer.  This can be (inefficiently) decomposed as:
-  ///   initializeBufferWithTake(dest, self->projectBuffer(src), self)
+  ///   initializeWithTake(self->allocateBuffer(dest, self), self->projectBuffer(src), self)
   ///   deallocateBuffer(src, self)
   InitializeBufferWithTakeOfBuffer,
   
diff --git a/include/swift/Migrator/EditorAdapter.h b/include/swift/Migrator/EditorAdapter.h
index 764c535..b6a9ec4 100644
--- a/include/swift/Migrator/EditorAdapter.h
+++ b/include/swift/Migrator/EditorAdapter.h
@@ -20,10 +20,12 @@
 #ifndef SWIFT_MIGRATOR_EDITORADAPTER_H
 #define SWIFT_MIGRATOR_EDITORADAPTER_H
 
+#include "swift/Migrator/Replacement.h"
 #include "clang/Basic/LangOptions.h"
 #include "clang/Basic/SourceLocation.h"
 #include "clang/Edit/Commit.h"
 #include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/SmallSet.h"
 
 namespace swift {
 
@@ -45,6 +47,10 @@
   /// in the `getClangFileIDForSwiftBufferID` method below.
   mutable llvm::SmallDenseMap<unsigned, clang::FileID> SwiftToClangBufferMap;
 
+  /// Tracks a history of edits outside of the clang::edit::Commit collector
+  /// below. That doesn't handle duplicate or redundant changes.
+  mutable llvm::SmallSet<Replacement, 32> Replacements;
+
   /// A running transactional collection of basic edit operations.
   /// Clang uses this transaction concept to cancel a batch of edits due to
   /// incompatibilities, such as those due to macro expansions, but we don't
@@ -66,6 +72,13 @@
   clang::CharSourceRange
   translateCharSourceRange(CharSourceRange SwiftSourceSourceRange) const;
 
+  /// Returns the buffer ID and absolute offset for a Swift SourceLoc.
+  std::pair<unsigned, unsigned> getLocInfo(swift::SourceLoc Loc) const;
+
+  /// Returns true if the replacement has already been booked. Otherwise,
+  /// returns false and adds it to the replacement set.
+  bool cacheReplacement(CharSourceRange Range, StringRef Text) const;
+
 public:
   EditorAdapter(swift::SourceManager &SwiftSrcMgr,
                 clang::SourceManager &ClangSrcMgr)
diff --git a/include/swift/Migrator/FixitApplyDiagnosticConsumer.h b/include/swift/Migrator/FixitApplyDiagnosticConsumer.h
index 3e79b4b..17c76d8 100644
--- a/include/swift/Migrator/FixitApplyDiagnosticConsumer.h
+++ b/include/swift/Migrator/FixitApplyDiagnosticConsumer.h
@@ -19,6 +19,8 @@
 
 #include "swift/AST/DiagnosticConsumer.h"
 #include "swift/Migrator/FixitFilter.h"
+#include "swift/Migrator/Migrator.h"
+#include "swift/Migrator/Replacement.h"
 #include "clang/Rewrite/Core/RewriteBuffer.h"
 #include "llvm/ADT/DenseSet.h"
 
@@ -31,6 +33,8 @@
 
 namespace migrator {
 
+struct Replacement;
+
 class FixitApplyDiagnosticConsumer final
   : public DiagnosticConsumer, public FixitFilter {
   clang::RewriteBuffer RewriteBuf;
@@ -46,8 +50,9 @@
   /// determine whether to call `printResult`.
   unsigned NumFixitsApplied;
 
-  /// Tracks whether a SourceLoc already got an `@objc` insertion.
-  llvm::SmallPtrSet<const void *, 32> AddedObjC;
+  /// Tracks previous replacements so we don't pump the rewrite buffer with
+  /// multiple equivalent replacements, which can result in weird behavior.
+  llvm::SmallSet<Replacement, 32> Replacements;
 
 public:
   FixitApplyDiagnosticConsumer(const StringRef Text,
diff --git a/include/swift/Migrator/FixitFilter.h b/include/swift/Migrator/FixitFilter.h
index 0f94fb8..39ec69f 100644
--- a/include/swift/Migrator/FixitFilter.h
+++ b/include/swift/Migrator/FixitFilter.h
@@ -96,6 +96,12 @@
       return false;
     }
 
+    // The type-checker can erroneously report this diagnostic in the case of
+    // mismatching closure arguments to things that now take a tuple via SE-0110.
+    if (Info.ID == diag::extra_argument_labels.ID) {
+      return false;
+    }
+
     if (Kind == DiagnosticKind::Error)
       return true;
 
@@ -107,7 +113,6 @@
         Info.ID == diag::parameter_extraneous_double_up.ID ||
         Info.ID == diag::attr_decl_attr_now_on_type.ID ||
         Info.ID == diag::noescape_parameter.ID ||
-        Info.ID == diag::noescape_autoclosure.ID ||
         Info.ID == diag::where_inside_brackets.ID ||
         Info.ID == diag::selector_construction_suggest.ID ||
         Info.ID == diag::selector_literal_deprecated_suggest.ID ||
diff --git a/include/swift/Migrator/Replacement.h b/include/swift/Migrator/Replacement.h
new file mode 100644
index 0000000..e8a7f7c
--- /dev/null
+++ b/include/swift/Migrator/Replacement.h
@@ -0,0 +1,56 @@
+//===--- Replacement.h - Migrator Replacements ------------------*- C++ -*-===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef SWIFT_MIGRATOR_REPLACEMENT_H
+#define SWIFT_MIGRATOR_REPLACEMENT_H
+namespace swift {
+namespace migrator {
+
+struct Replacement {
+  size_t Offset;
+  size_t Remove;
+  std::string Text;
+
+  bool isRemove() const {
+    return Remove > 0;
+  }
+
+  bool isInsert() const {
+    return Remove == 0 && Text.size() > 0;
+  }
+
+  bool isReplace() const {
+    return Remove > 0 && Text.size() > 0;
+  }
+
+  size_t endOffset() const {
+    if (isInsert()) {
+      return Offset + Text.size();
+    } else {
+      return Offset + Remove;
+    }
+  }
+
+  bool operator<(const Replacement &Other) const {
+    return Offset < Other.Offset;
+  }
+
+  bool operator==(const Replacement &Other) const {
+    return Offset == Other.Offset && Remove == Other.Remove &&
+      Text == Other.Text;
+  }
+};
+
+} // end namespace migrator
+} // end namespace swift
+
+#endif // SWIFT_MIGRATOR_REPLACEMENT_H
diff --git a/include/swift/Option/FrontendOptions.td b/include/swift/Option/FrontendOptions.td
index 463bbeb..b5b0aaf 100644
--- a/include/swift/Option/FrontendOptions.td
+++ b/include/swift/Option/FrontendOptions.td
@@ -320,6 +320,12 @@
 def warn_long_function_bodies_EQ : Joined<["-"], "warn-long-function-bodies=">,
   Alias<warn_long_function_bodies>;
 
+def warn_long_expression_type_checking : Separate<["-"], "warn-long-expression-type-checking">,
+  MetaVarName<"<n>">,
+  HelpText<"Warns when type-checking a function takes longer than <n> ms">;
+def warn_long_expression_type_checking_EQ : Joined<["-"], "warn-long-expression-type-checking=">,
+  Alias<warn_long_expression_type_checking>;
+
 def enable_source_import : Flag<["-"], "enable-source-import">,
   HelpText<"Enable importing of Swift source files">;
 
diff --git a/include/swift/Option/SanitizerOptions.h b/include/swift/Option/SanitizerOptions.h
index 36b0840..f6d2360 100644
--- a/include/swift/Option/SanitizerOptions.h
+++ b/include/swift/Option/SanitizerOptions.h
@@ -14,6 +14,8 @@
 #define SWIFT_OPTIONS_SANITIZER_OPTIONS_H
 
 #include "swift/Basic/Sanitizers.h"
+#include "llvm/ADT/STLExtras.h"
+#include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/Triple.h"
 #include "llvm/Option/Arg.h"
 // FIXME: This include is just for llvm::SanitizerCoverageOptions. We should
@@ -26,10 +28,14 @@
 /// \brief Parses a -sanitize= argument's values.
 ///
 /// \param Diag If non null, the argument is used to diagnose invalid values.
+/// \param sanitizerRuntimeLibExists Function which checks for existance of a
+//         sanitizer dylib with a given name.
 /// \return Returns a SanitizerKind.
-SanitizerKind parseSanitizerArgValues(const llvm::opt::Arg *A,
-                                      const llvm::Triple &Triple,
-                                      DiagnosticEngine &Diag);
+SanitizerKind parseSanitizerArgValues(
+       const llvm::opt::Arg *A,
+       const llvm::Triple &Triple,
+       DiagnosticEngine &Diag,
+       llvm::function_ref<bool(llvm::StringRef)> sanitizerRuntimeLibExists);
 
 /// \brief Parses a -sanitize-coverage= argument's value.
 llvm::SanitizerCoverageOptions
diff --git a/include/swift/Parse/Parser.h b/include/swift/Parse/Parser.h
index bd129a2..b83a3a6 100644
--- a/include/swift/Parse/Parser.h
+++ b/include/swift/Parse/Parser.h
@@ -716,7 +716,11 @@
   ParserResult<TypeDecl> parseDeclAssociatedType(ParseDeclOptions Flags,
                                                  DeclAttributes &Attributes);
   
-  ParserResult<IfConfigDecl> parseDeclIfConfig(ParseDeclOptions Flags);
+  /// Parse a #if ... #endif directive.
+  /// Delegate callback function to parse elements in the blocks.
+  ParserResult<IfConfigDecl> parseIfConfig(
+    llvm::function_ref<void(SmallVectorImpl<ASTNode> &, bool)> parseElements);
+
   /// Parse a #line/#sourceLocation directive.
   /// 'isLine = true' indicates parsing #line instead of #sourcelocation
   ParserStatus parseLineDirective(bool isLine = false);
@@ -1277,8 +1281,6 @@
   ParserResult<PoundAvailableInfo> parseStmtConditionPoundAvailable();
   ParserResult<Stmt> parseStmtIf(LabeledStmtInfo LabelInfo);
   ParserResult<Stmt> parseStmtGuard();
-  ParserResult<Stmt> parseStmtIfConfig(BraceItemListKind Kind
-                                        = BraceItemListKind::Brace);
   ParserResult<Stmt> parseStmtWhile(LabeledStmtInfo LabelInfo);
   ParserResult<Stmt> parseStmtRepeat(LabeledStmtInfo LabelInfo);
   ParserResult<Stmt> parseStmtDo(LabeledStmtInfo LabelInfo);
diff --git a/include/swift/Reflection/ReflectionContext.h b/include/swift/Reflection/ReflectionContext.h
index 33c0577..bc7a5c3 100644
--- a/include/swift/Reflection/ReflectionContext.h
+++ b/include/swift/Reflection/ReflectionContext.h
@@ -244,16 +244,12 @@
         if (!getReader().readInteger(ExistentialAddress, &BoxAddress))
           return false;
 
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
         // Address = BoxAddress + (sizeof(HeapObject) + alignMask) & ~alignMask)
         auto Alignment = InstanceTI->getAlignment();
         auto StartOfValue = BoxAddress + getSizeOfHeapObject();
         // Align.
         StartOfValue += Alignment - StartOfValue % Alignment;
         *OutInstanceAddress = RemoteAddress(StartOfValue);
-#else
-        *OutInstanceAddress = RemoteAddress(BoxAddress);
-#endif
       }
       return true;
     }
diff --git a/include/swift/Runtime/HeapObject.h b/include/swift/Runtime/HeapObject.h
index 51d8427..66d7198 100644
--- a/include/swift/Runtime/HeapObject.h
+++ b/include/swift/Runtime/HeapObject.h
@@ -639,6 +639,14 @@
   swift_unownedRelease(oldValue);
 }
 
+static inline bool swift_unownedIsEqual(UnownedReference *ref,
+                                        HeapObject *value) {
+  bool isEqual = ref->Value == value;
+  if (isEqual)
+    swift_unownedCheck(value);
+  return isEqual;
+}
+
 /*****************************************************************************/
 /****************************** WEAK REFERENCES ******************************/
 /*****************************************************************************/
@@ -1156,6 +1164,22 @@
 
 #endif /* SWIFT_OBJC_INTEROP */
 
+#if SWIFT_OBJC_INTEROP
+
+/// Return `*ref == value` when ref might not refer to a native Swift object.
+/// Does not halt when *ref is a dead object as long as *ref != value.
+SWIFT_RUNTIME_EXPORT
+bool swift_unknownUnownedIsEqual(UnownedReference *ref, void *value);
+
+#else
+
+static inline bool swift_unknownUnownedIsEqual(UnownedReference *ref,
+                                               void *value) {
+  return swift_unownedIsEqual(ref, static_cast<HeapObject *>(value));
+}
+
+#endif /* SWIFT_OBJC_INTEROP */
+
 /// Return the name of a Swift type represented by a metadata object.
 SWIFT_CC(swift) SWIFT_RUNTIME_EXPORT
 TwoWordPair<const char *, uintptr_t>::Return
diff --git a/include/swift/Runtime/Metadata.h b/include/swift/Runtime/Metadata.h
index 544780d..9a2d1ef 100644
--- a/include/swift/Runtime/Metadata.h
+++ b/include/swift/Runtime/Metadata.h
@@ -311,17 +311,6 @@
 
 namespace value_witness_types {
 
-/// Given an initialized buffer, destroy its value and deallocate
-/// the buffer.  This can be decomposed as:
-///
-///   self->destroy(self->projectBuffer(buffer), self);
-///   self->deallocateBuffer(buffer), self);
-///
-/// Preconditions:
-///   'buffer' is an initialized buffer
-/// Postconditions:
-///   'buffer' is an unallocated buffer
-typedef void destroyBuffer(ValueBuffer *buffer, const Metadata *self);
 
 /// Given an unallocated buffer, initialize it as a copy of the
 /// object in the source buffer.  This can be decomposed as:
@@ -340,23 +329,6 @@
                                                       ValueBuffer *src,
                                                       const Metadata *self);
 
-/// Given an allocated or initialized buffer, derive a pointer to
-/// the object.
-/// 
-/// Invariants:
-///   'buffer' is an allocated or initialized buffer
-typedef OpaqueValue *projectBuffer(ValueBuffer *buffer,
-                                   const Metadata *self);
-
-/// Given an allocated buffer, deallocate the object.
-///
-/// Preconditions:
-///   'buffer' is an allocated buffer
-/// Postconditions:
-///   'buffer' is an unallocated buffer
-typedef void deallocateBuffer(ValueBuffer *buffer,
-                              const Metadata *self);
-
 /// Given an initialized object, destroy it.
 ///
 /// Preconditions:
@@ -366,21 +338,6 @@
 typedef void destroy(OpaqueValue *object,
                      const Metadata *self);
 
-/// Given an uninitialized buffer and an initialized object, allocate
-/// storage in the buffer and copy the value there.
-///
-/// Returns the dest object.
-///
-/// Preconditions:
-///   'dest' is an uninitialized buffer
-/// Postconditions:
-///   'dest' is an initialized buffer
-/// Invariants:
-///   'src' is an initialized object
-typedef OpaqueValue *initializeBufferWithCopy(ValueBuffer *dest,
-                                              OpaqueValue *src,
-                                              const Metadata *self);
-
 /// Given an uninitialized object and an initialized object, copy
 /// the value.
 ///
@@ -412,24 +369,6 @@
                                     OpaqueValue *src,
                                     const Metadata *self);
 
-/// Given an uninitialized buffer and an initialized object, move
-/// the value from the object to the buffer, leaving the source object
-/// uninitialized.
-///
-/// This operation does not need to be safe against 'dest' and 'src' aliasing.
-/// 
-/// Returns the dest object.
-///
-/// Preconditions:
-///   'dest' is an uninitialized buffer
-///   'src' is an initialized object
-/// Postconditions:
-///   'dest' is an initialized buffer
-///   'src' is an uninitialized object
-typedef OpaqueValue *initializeBufferWithTake(ValueBuffer *dest,
-                                              OpaqueValue *src,
-                                              const Metadata *self);
-
 /// Given an uninitialized object and an initialized object, move
 /// the value from one to the other, leaving the source object
 /// uninitialized.
@@ -474,18 +413,6 @@
                                     OpaqueValue *src,
                                     const Metadata *self);
 
-/// Given an uninitialized buffer, allocate an object.
-///
-/// Returns the uninitialized object.
-///
-/// Preconditions:
-///   'buffer' is an uninitialized buffer
-/// Postconditions:
-///   'buffer' is an allocated buffer
-typedef OpaqueValue *allocateBuffer(ValueBuffer *buffer,
-                                    const Metadata *self);
-
-  
 /// Given an unallocated buffer and an initialized buffer, move the
 /// value from one buffer to the other, leaving the source buffer
 /// unallocated.
@@ -646,18 +573,12 @@
                            const Metadata *self);
 
 #define FOR_ALL_FUNCTION_VALUE_WITNESSES(MACRO) \
-  MACRO(destroyBuffer) \
   MACRO(initializeBufferWithCopyOfBuffer) \
-  MACRO(projectBuffer) \
-  MACRO(deallocateBuffer) \
   MACRO(destroy) \
-  MACRO(initializeBufferWithCopy) \
   MACRO(initializeWithCopy) \
   MACRO(assignWithCopy) \
-  MACRO(initializeBufferWithTake) \
   MACRO(initializeWithTake) \
   MACRO(assignWithTake) \
-  MACRO(allocateBuffer) \
   MACRO(initializeBufferWithTakeOfBuffer) \
   MACRO(destroyArray) \
   MACRO(initializeArrayWithCopy) \
diff --git a/include/swift/Runtime/RuntimeFunctions.def b/include/swift/Runtime/RuntimeFunctions.def
index 81ce16f..75c885b 100644
--- a/include/swift/Runtime/RuntimeFunctions.def
+++ b/include/swift/Runtime/RuntimeFunctions.def
@@ -1217,14 +1217,6 @@
          ARGS(Int8PtrTy, Int8PtrTy),
          ATTRS(NoUnwind))
 
-// func _registerClassNameForArchiving(_ nameOrNull: UnsafePointer<CChar>?,
-//                                     _ c: AnyClass)
-FUNCTION(RegisterClassNameForArchiving, swift_registerClassNameForArchiving,
-         SwiftCC,
-         RETURNS(VoidTy),
-         ARGS(Int8PtrTy, TypeMetadataPtrTy),
-         ATTRS(NoUnwind))
-
 #if SWIFT_OBJC_INTEROP || !defined(SWIFT_RUNTIME_GENERATE_GLOBAL_SYMBOLS)
 
 // Put here all definitions of runtime functions which are:
diff --git a/include/swift/SIL/SILBasicBlock.h b/include/swift/SIL/SILBasicBlock.h
index 1cdab0e..6dfb875 100644
--- a/include/swift/SIL/SILBasicBlock.h
+++ b/include/swift/SIL/SILBasicBlock.h
@@ -425,11 +425,8 @@
 public:
   static void deleteNode(SILBasicBlock *BB) { BB->~SILBasicBlock(); }
 
-  void addNodeToList(SILBasicBlock *BB) {}
-
   void transferNodesFromList(ilist_traits<SILBasicBlock> &SrcTraits,
                              block_iterator First, block_iterator Last);
-
 private:
   static void createNode(const SILBasicBlock &);
 };
diff --git a/include/swift/SIL/SILBuilder.h b/include/swift/SIL/SILBuilder.h
index f2c7455..5a3fdea 100644
--- a/include/swift/SIL/SILBuilder.h
+++ b/include/swift/SIL/SILBuilder.h
@@ -423,7 +423,10 @@
     return insert(new (F.getModule())
                       GlobalAddrInst(getSILDebugLocation(Loc), g));
   }
-
+  GlobalAddrInst *createGlobalAddr(SILLocation Loc, SILType Ty) {
+    return insert(new (F.getModule())
+                  GlobalAddrInst(getSILDebugLocation(Loc), Ty));
+  }
   IntegerLiteralInst *createIntegerLiteral(IntegerLiteralExpr *E);
 
   IntegerLiteralInst *createIntegerLiteral(SILLocation Loc, SILType Ty,
diff --git a/include/swift/SIL/SILInstruction.h b/include/swift/SIL/SILInstruction.h
index 9c1dba7..b7b3de0 100644
--- a/include/swift/SIL/SILInstruction.h
+++ b/include/swift/SIL/SILInstruction.h
@@ -150,16 +150,13 @@
   /// is already set in when creating an instruction.
   void setDebugLocation(SILDebugLocation Loc) { Location = Loc; }
 
-  /// removeFromParent - This method unlinks 'self' from the containing basic
-  /// block, but does not delete it.
-  ///
-  void removeFromParent();
-
-  /// eraseFromParent - This method unlinks 'self' from the containing basic
-  /// block and deletes it.
-  ///
+  /// This method unlinks 'self' from the containing basic block and deletes it.
   void eraseFromParent();
 
+  /// Unlink this instruction from its current basic block and insert the
+  /// instruction such that it is the first instruction of \p Block.
+  void moveFront(SILBasicBlock *Block);
+
   /// Unlink this instruction from its current basic block and insert it into
   /// the basic block that Later lives in, right before Later.
   void moveBefore(SILInstruction *Later);
@@ -171,13 +168,6 @@
   /// \brief Drops all uses that belong to this instruction.
   void dropAllReferences();
 
-  /// \brief Replace all uses of this instruction with Undef.
-  ///
-  /// TODO: This should be on ValueBase, but ValueBase currently does not have
-  /// access to a SILModule. If that ever changes, this method should move to
-  /// ValueBase.
-  void replaceAllUsesWithUndef();
-
   /// Return the array of operands for this instruction.
   ArrayRef<Operand> getAllOperands() const;
 
diff --git a/include/swift/SIL/SILModule.h b/include/swift/SIL/SILModule.h
index 638f599..7fc571d 100644
--- a/include/swift/SIL/SILModule.h
+++ b/include/swift/SIL/SILModule.h
@@ -209,9 +209,6 @@
   /// optimizations can assume that they see the whole module.
   bool wholeModule;
 
-  /// True if this SILModule is being completely serialized.
-  bool WholeModuleSerialized;
-
   /// The options passed into this SILModule.
   SILOptions &Options;
 
@@ -222,7 +219,7 @@
   // Intentionally marked private so that we need to use 'constructSIL()'
   // to construct a SILModule.
   SILModule(ModuleDecl *M, SILOptions &Options, const DeclContext *associatedDC,
-            bool wholeModule, bool wholeModuleSerialized);
+            bool wholeModule);
 
   SILModule(const SILModule&) = delete;
   void operator=(const SILModule&) = delete;
@@ -285,23 +282,18 @@
   ///
   /// If a source file is provided, SIL will only be emitted for decls in that
   /// source file, starting from the specified element number.
-  ///
-  /// If \p makeModuleFragile is true, all functions and global variables of
-  /// the module are marked as serialized. This is used for compiling the stdlib.
   static std::unique_ptr<SILModule>
   constructSIL(ModuleDecl *M, SILOptions &Options, FileUnit *sf = nullptr,
                Optional<unsigned> startElem = None,
-               bool makeModuleFragile = false,
                bool isWholeModule = false);
 
   /// \brief Create and return an empty SIL module that we can
   /// later parse SIL bodies directly into, without converting from an AST.
   static std::unique_ptr<SILModule>
   createEmptyModule(ModuleDecl *M, SILOptions &Options,
-                    bool WholeModule = false,
-                    bool WholeModuleSerialized = false) {
+                    bool WholeModule = false) {
     return std::unique_ptr<SILModule>(
-        new SILModule(M, Options, M, WholeModule, WholeModuleSerialized));
+        new SILModule(M, Options, M, WholeModule));
   }
 
   /// Get the Swift module associated with this SIL module.
@@ -330,7 +322,7 @@
   }
 
   /// Returns true if everything in this SILModule is being serialized.
-  bool isWholeModuleSerialized() const { return WholeModuleSerialized; }
+  bool isWholeModuleSerialized() const { return Options.SILSerializeAll; }
 
   SILOptions &getOptions() const { return Options; }
 
diff --git a/include/swift/SIL/SILValue.h b/include/swift/SIL/SILValue.h
index 3d82399..37c05d5 100644
--- a/include/swift/SIL/SILValue.h
+++ b/include/swift/SIL/SILValue.h
@@ -163,11 +163,16 @@
   }
 
   /// Replace every use of a result of this instruction with the corresponding
-  /// result from RHS. The method assumes that both instructions have the same
-  /// number of results. To replace just one result use
-  /// SILValue::replaceAllUsesWith.
+  /// result from RHS.
+  ///
+  /// The method assumes that both instructions have the same number of
+  /// results. To replace just one result use SILValue::replaceAllUsesWith.
   void replaceAllUsesWith(ValueBase *RHS);
 
+  /// \brief Replace all uses of this instruction with an undef value of the
+  /// same type as the result of this instruction.
+  void replaceAllUsesWithUndef();
+
   /// Returns true if this value has no uses.
   /// To ignore debug-info instructions use swift::onlyHaveDebugUses instead
   /// (see comment in DebugUtils.h).
diff --git a/include/swift/SILOptimizer/Analysis/AccessSummaryAnalysis.h b/include/swift/SILOptimizer/Analysis/AccessSummaryAnalysis.h
new file mode 100644
index 0000000..6abe8fe
--- /dev/null
+++ b/include/swift/SILOptimizer/Analysis/AccessSummaryAnalysis.h
@@ -0,0 +1,210 @@
+//===--- AccessSummaryAnalysis.h - SIL Access Summary Analysis --*- C++ -*-===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements an interprocedural analysis pass that summarizes
+// the formal accesses that a function makes to its address-type arguments.
+// These summaries are used to statically diagnose violations of exclusive
+// accesses for noescape closures.
+//
+//===----------------------------------------------------------------------===//
+#ifndef SWIFT_SILOPTIMIZER_ANALYSIS_ACCESS_SUMMARY_ANALYSIS_H_
+#define SWIFT_SILOPTIMIZER_ANALYSIS_ACCESS_SUMMARY_ANALYSIS_H_
+
+#include "swift/SIL/SILFunction.h"
+#include "swift/SIL/SILInstruction.h"
+#include "swift/SILOptimizer/Analysis/BottomUpIPAnalysis.h"
+#include "swift/SILOptimizer/Utils/IndexTrie.h"
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/SmallVector.h"
+
+namespace swift {
+
+class AccessSummaryAnalysis : public BottomUpIPAnalysis {
+public:
+  /// Summarizes the accesses that a function begins on an argument.
+  class ArgumentSummary {
+  private:
+    /// The kind of access begun on the argument.
+    /// 'None' means no access performed.
+    Optional<SILAccessKind> Kind = None;
+
+    /// The location of the access. Used for diagnostics.
+    SILLocation AccessLoc = SILLocation((Expr *)nullptr);
+
+  public:
+    Optional<SILAccessKind> getAccessKind() const { return Kind; }
+
+    SILLocation getAccessLoc() const { return AccessLoc; }
+
+    /// The lattice operation on argument summaries.
+    bool mergeWith(const ArgumentSummary &other);
+
+    /// Merge in an access to the argument of the given kind at the given
+    /// location. Returns true if the merge caused the summary to change.
+    bool mergeWith(SILAccessKind otherKind, SILLocation otherLoc);
+
+    /// Returns a description of the summary. For debugging and testing
+    /// purposes.
+    StringRef getDescription() const;
+  };
+
+  /// Summarizes the accesses that a function begins on its arguments.
+  class FunctionSummary {
+  private:
+    llvm::SmallVector<ArgumentSummary, 6> ArgAccesses;
+
+  public:
+    FunctionSummary(unsigned argCount) : ArgAccesses(argCount) {}
+
+    /// Returns of summary of the the function accesses that argument at the
+    /// given index.
+    ArgumentSummary &getAccessForArgument(unsigned argument) {
+      return ArgAccesses[argument];
+    }
+
+    const ArgumentSummary &getAccessForArgument(unsigned argument) const {
+      return ArgAccesses[argument];
+    }
+
+    /// Returns the number of argument in the summary.
+    unsigned getArgumentCount() const { return ArgAccesses.size(); }
+  };
+
+  friend raw_ostream &operator<<(raw_ostream &os,
+                                 const FunctionSummary &summary);
+
+  class FunctionInfo;
+  /// Records a flow of a caller's argument to a called function.
+  /// This flow is used to iterate the interprocedural analysis to a fixpoint.
+  struct ArgumentFlow {
+    /// The index of the argument in the caller.
+    const unsigned CallerArgumentIndex;
+
+    /// The index of the argument in the callee.
+    const unsigned CalleeArgumentIndex;
+
+    FunctionInfo *const CalleeFunctionInfo;
+  };
+
+  /// Records the summary and argument flows for a given function.
+  /// Used by the BottomUpIPAnalysis to propagate information
+  /// from callees to callers.
+  class FunctionInfo : public FunctionInfoBase<FunctionInfo> {
+  private:
+    FunctionSummary FS;
+
+    SILFunction *F;
+
+    llvm::SmallVector<ArgumentFlow, 8> RecordedArgumentFlows;
+
+  public:
+    FunctionInfo(SILFunction *F) : FS(F->getArguments().size()), F(F) {}
+
+    SILFunction *getFunction() const { return F; }
+
+    ArrayRef<ArgumentFlow> getArgumentFlows() const {
+      return RecordedArgumentFlows;
+    }
+
+    const FunctionSummary &getSummary() const { return FS; }
+    FunctionSummary &getSummary() { return FS; }
+
+    /// Record a flow of an argument in this function to a callee.
+    void recordFlow(const ArgumentFlow &flow) {
+      flow.CalleeFunctionInfo->addCaller(this, nullptr);
+      RecordedArgumentFlows.push_back(flow);
+    }
+  };
+
+private:
+  /// Maps functions to the information the analysis keeps for each function.
+  llvm::DenseMap<SILFunction *, FunctionInfo *> FunctionInfos;
+
+  llvm::SpecificBumpPtrAllocator<FunctionInfo> Allocator;
+
+  /// A trie of integer indices that gives pointer identity to a path of
+  /// projections. This is shared between all functions in the module.
+  IndexTrieNode *SubPathTrie;
+
+public:
+  AccessSummaryAnalysis() : BottomUpIPAnalysis(AnalysisKind::AccessSummary) {
+    SubPathTrie = new IndexTrieNode();
+  }
+
+  ~AccessSummaryAnalysis() {
+    delete SubPathTrie;
+  }
+
+  /// Returns a summary of the accesses performed by the given function.
+  const FunctionSummary &getOrCreateSummary(SILFunction *Fn);
+
+  IndexTrieNode *getSubPathTrieRoot() {
+    return SubPathTrie;
+  }
+
+  virtual void initialize(SILPassManager *PM) override {}
+  virtual void invalidate() override;
+  virtual void invalidate(SILFunction *F, InvalidationKind K) override;
+  virtual void notifyAddFunction(SILFunction *F) override {}
+  virtual void notifyDeleteFunction(SILFunction *F) override {
+    invalidate(F, InvalidationKind::Nothing);
+  }
+  virtual void invalidateFunctionTables() override {}
+
+  static bool classof(const SILAnalysis *S) {
+    return S->getKind() == AnalysisKind::AccessSummary;
+  }
+
+private:
+  typedef BottomUpFunctionOrder<FunctionInfo> FunctionOrder;
+
+  /// Returns the BottomUpIPAnalysis information for the given function.
+  FunctionInfo *getFunctionInfo(SILFunction *F);
+
+  /// Summarizes the given function and iterates the interprocedural analysis
+  /// to a fixpoint.
+  void recompute(FunctionInfo *initial);
+
+  /// Propagate the access summary from the argument of a called function
+  /// to the caller.
+  bool propagateFromCalleeToCaller(FunctionInfo *callerInfo,
+                                   ArgumentFlow site);
+
+  /// Summarize the given function and schedule it for interprocedural
+  /// analysis.
+  void processFunction(FunctionInfo *info, FunctionOrder &order);
+
+  /// Summarize how the function uses the given argument.
+  void processArgument(FunctionInfo *info, SILFunctionArgument *argment,
+                        ArgumentSummary &summary, FunctionOrder &order);
+
+  /// Summarize a partial_apply instruction.
+  void processPartialApply(FunctionInfo *callerInfo,
+                           unsigned callerArgumentIndex,
+                           PartialApplyInst *apply,
+                           Operand *applyArgumentOperand, FunctionOrder &order);
+
+  /// Summarize apply or try_apply
+  void processFullApply(FunctionInfo *callerInfo, unsigned callerArgumentIndex,
+                        FullApplySite apply, Operand *argumentOperand,
+                        FunctionOrder &order);
+
+  /// Summarize a call site and schedule it for interprocedural analysis.
+  void processCall(FunctionInfo *callerInfo, unsigned callerArgumentIndex,
+                   SILFunction *calledFunction, unsigned argumentIndex,
+                   FunctionOrder &order);
+};
+
+} // end namespace swift
+
+#endif
+
diff --git a/include/swift/SILOptimizer/Analysis/Analysis.def b/include/swift/SILOptimizer/Analysis/Analysis.def
index f58b3b3..006a59b 100644
--- a/include/swift/SILOptimizer/Analysis/Analysis.def
+++ b/include/swift/SILOptimizer/Analysis/Analysis.def
@@ -23,6 +23,7 @@
 #define ANALYSIS(NAME)
 #endif
 
+ANALYSIS(AccessSummary)
 ANALYSIS(Alias)
 ANALYSIS(BasicCallee)
 ANALYSIS(Caller)
diff --git a/include/swift/SILOptimizer/PassManager/Passes.def b/include/swift/SILOptimizer/PassManager/Passes.def
index 647f9e4..9e27f21 100644
--- a/include/swift/SILOptimizer/PassManager/Passes.def
+++ b/include/swift/SILOptimizer/PassManager/Passes.def
@@ -56,6 +56,8 @@
      "Array Bounds Check Optimization")
 PASS(AccessEnforcementSelection, "access-enforcement-selection",
      "Access Enforcement Selection")
+PASS(AccessSummaryDumper, "access-summary-dump",
+     "Dump Address Parameter Access Summary")
 PASS(InactiveAccessMarkerElimination, "inactive-access-marker-elim",
      "Inactive Access Marker Elimination.")
 PASS(FullAccessMarkerElimination, "full-access-marker-elim",
diff --git a/include/swift/SILOptimizer/Utils/IndexTrie.h b/include/swift/SILOptimizer/Utils/IndexTrie.h
new file mode 100644
index 0000000..b7986cb
--- /dev/null
+++ b/include/swift/SILOptimizer/Utils/IndexTrie.h
@@ -0,0 +1,84 @@
+//===--- IndexTrie - Trie for a sequence of integer indices ----*- C++ -*-===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef SWIFT_SILOPTIMIZER_UTILS_INDEXTREE_H
+#define SWIFT_SILOPTIMIZER_UTILS_INDEXTREE_H
+
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/ADT/SmallVector.h"
+#include <algorithm>
+
+namespace swift {
+
+// Trie node representing a sequence of unsigned integer indices.
+class IndexTrieNode {
+  static const unsigned RootIdx = ~0U;
+  unsigned Index;
+  llvm::SmallVector<IndexTrieNode*, 8> Children;
+  IndexTrieNode *Parent;
+
+public:
+  IndexTrieNode(): Index(RootIdx), Parent(nullptr) {}
+
+  explicit IndexTrieNode(unsigned V, IndexTrieNode *P): Index(V), Parent(P) {}
+
+  IndexTrieNode(IndexTrieNode &) =delete;
+  IndexTrieNode &operator=(const IndexTrieNode&) =delete;
+
+  ~IndexTrieNode() {
+    for (auto *N : Children)
+      delete N;
+  }
+
+  bool isRoot() const { return Index == RootIdx; }
+
+  bool isLeaf() const { return Children.empty(); }
+
+  unsigned getIndex() const { return Index; }
+
+  IndexTrieNode *getChild(unsigned Idx) {
+    assert(Idx != RootIdx);
+
+    auto I = std::lower_bound(Children.begin(), Children.end(), Idx,
+                              [](IndexTrieNode *a, unsigned i) {
+                                return a->Index < i;
+                              });
+    if (I != Children.end() && (*I)->Index == Idx)
+      return *I;
+    auto *N = new IndexTrieNode(Idx, this);
+    Children.insert(I, N);
+    return N;
+  }
+
+  ArrayRef<IndexTrieNode*> getChildren() const { return Children; }
+
+  IndexTrieNode *getParent() const { return Parent; }
+
+  /// Returns true when the sequence of indices represented by this
+  /// node is a prefix of the sequence represented by the passed-in node.
+  bool isPrefixOf(const IndexTrieNode *Other) const {
+    const IndexTrieNode *I = Other;
+
+    do {
+      if (this == I)
+        return true;
+
+      I = I->getParent();
+    } while (I);
+
+    return false;
+  }
+};
+
+} // end namespace swift
+
+#endif
diff --git a/include/swift/Serialization/ModuleFormat.h b/include/swift/Serialization/ModuleFormat.h
index f1b9132..a876a2b 100644
--- a/include/swift/Serialization/ModuleFormat.h
+++ b/include/swift/Serialization/ModuleFormat.h
@@ -1321,8 +1321,8 @@
   using SynthesizedProtocolDeclAttrLayout
     = BCRecordLayout<SynthesizedProtocol_DECL_ATTR>;
   using ImplementsDeclAttrLayout = BCRecordLayout<Implements_DECL_ATTR>;
-  using NSKeyedArchiverClassNameDeclAttrLayout
-    = BCRecordLayout<NSKeyedArchiverClassName_DECL_ATTR>;
+  using ObjCRuntimeNameDeclAttrLayout
+    = BCRecordLayout<ObjCRuntimeName_DECL_ATTR>;
 
   using InlineDeclAttrLayout = BCRecordLayout<
     Inline_DECL_ATTR,
diff --git a/include/swift/Subsystems.h b/include/swift/Subsystems.h
index d39e1c2..23a348c 100644
--- a/include/swift/Subsystems.h
+++ b/include/swift/Subsystems.h
@@ -63,6 +63,7 @@
   class Token;
   class TopLevelContext;
   struct TypeLoc;
+  class UnifiedStatsReporter;
 
   /// SILParserState - This is a context object used to optionally maintain SIL
   /// parsing context for the parser.
@@ -190,7 +191,8 @@
   void performTypeChecking(SourceFile &SF, TopLevelContext &TLC,
                            OptionSet<TypeCheckingFlags> Options,
                            unsigned StartElem = 0,
-                           unsigned WarnLongFunctionBodies = 0);
+                           unsigned WarnLongFunctionBodies = 0,
+                           unsigned WarnLongExpressionTypeChecking = 0);
 
   /// Once type checking is complete, this walks protocol requirements
   /// to resolve default witnesses.
@@ -240,25 +242,19 @@
   ///
   /// The module must contain source files.
   ///
-  /// If \p makeModuleFragile is true, all functions and global variables of
-  /// the module are marked as fragile. This is used for compiling the stdlib.
   /// if \p wholeModuleCompilation is true, the optimizer assumes that the SIL
   /// of all files in the module is present in the SILModule.
   std::unique_ptr<SILModule>
   performSILGeneration(ModuleDecl *M, SILOptions &options,
-                       bool makeModuleFragile = false,
                        bool wholeModuleCompilation = false);
 
   /// Turn a source file into SIL IR.
   ///
   /// If \p StartElem is provided, the module is assumed to be only part of the
   /// SourceFile, and any optimizations should take that into account.
-  /// If \p makeModuleFragile is true, all functions and global variables of
-  /// the module are marked as fragile. This is used for compiling the stdlib.
   std::unique_ptr<SILModule>
   performSILGeneration(FileUnit &SF, SILOptions &options,
-                       Optional<unsigned> StartElem = None,
-                       bool makeModuleFragile = false);
+                       Optional<unsigned> StartElem = None);
 
   using ModuleOrSourceFile = PointerUnion<ModuleDecl *, SourceFile *>;
 
@@ -266,8 +262,9 @@
   void serialize(ModuleOrSourceFile DC, const SerializationOptions &options,
                  const SILModule *M = nullptr);
 
-  /// Get the CPU and subtarget feature options to use when emitting code.
-  std::tuple<llvm::TargetOptions, std::string, std::vector<std::string>>
+  /// Get the CPU, subtarget feature options, and triple to use when emitting code.
+  std::tuple<llvm::TargetOptions, std::string, std::vector<std::string>,
+             std::string>
   getIRTargetOptions(IRGenOptions &Opts, ASTContext &Ctx);
 
   /// Turn the given Swift module into either LLVM IR or native code
@@ -301,7 +298,8 @@
 
   /// Turn the given LLVM module into native code and return true on error.
   bool performLLVM(IRGenOptions &Opts, ASTContext &Ctx,
-                   llvm::Module *Module);
+                   llvm::Module *Module,
+                   UnifiedStatsReporter *Stats=nullptr);
 
   /// Run the LLVM passes. In multi-threaded compilation this will be done for
   /// multiple LLVM modules in parallel.
@@ -320,7 +318,8 @@
                    llvm::Module *Module,
                    llvm::TargetMachine *TargetMachine,
                    const version::Version &effectiveLanguageVersion,
-                   StringRef OutputFilename);
+                   StringRef OutputFilename,
+                   UnifiedStatsReporter *Stats=nullptr);
 
   /// Creates a TargetMachine from the IRGen opts and AST Context.
   std::unique_ptr<llvm::TargetMachine>
diff --git a/include/swift/Syntax/Serialization/SyntaxSerialization.h b/include/swift/Syntax/Serialization/SyntaxSerialization.h
new file mode 100644
index 0000000..c2e34a4
--- /dev/null
+++ b/include/swift/Syntax/Serialization/SyntaxSerialization.h
@@ -0,0 +1,204 @@
+//===--- SyntaxSerialization.h - Swift Syntax Serialization -----*- C++ -*-===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+//
+// This file provides the serialization of RawSyntax nodes and their
+// constituent parts to JSON.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef SWIFT_SYNTAX_SERIALIZATION_SYNTAXSERIALIZATION_H
+#define SWIFT_SYNTAX_SERIALIZATION_SYNTAXSERIALIZATION_H
+
+#include "swift/Syntax/RawSyntax.h"
+#include "swift/Basic/JSONSerialization.h"
+#include "swift/Basic/StringExtras.h"
+#include "llvm/ADT/StringSwitch.h"
+#include <forward_list>
+
+namespace swift {
+namespace json {
+
+/// Serialization traits for SourcePresence.
+template <>
+struct ScalarEnumerationTraits<syntax::SourcePresence> {
+  static void enumeration(json::Output &out, syntax::SourcePresence &value) {
+    out.enumCase(value, "Present", syntax::SourcePresence::Present);
+    out.enumCase(value, "Missing", syntax::SourcePresence::Missing);
+  }
+};
+
+/// Serialization traits for SyntaxKind.
+template <>
+struct ScalarEnumerationTraits<syntax::SyntaxKind> {
+  static void enumeration(Output &out, syntax::SyntaxKind &value) {
+#define DEFINE_MAP(Id) \
+    out.enumCase(value, #Id, syntax::SyntaxKind::Id);
+#define SYNTAX(Id, Parent) DEFINE_MAP(Id)
+#define SYNTAX_COLLECTION(Id, Element) DEFINE_MAP(Id)
+#include "swift/Syntax/SyntaxKinds.def"
+  }
+};
+
+/// Serialization traits for swift::tok.
+template <>
+struct ScalarEnumerationTraits<tok> {
+  static void enumeration(Output &out, tok &value) {
+#define EXPAND(Str, Case) \
+    out.enumCase(value, Str, Case);
+#define LITERAL(X) EXPAND(#X, tok::X)
+#define MISC(X) EXPAND(#X, tok::X)
+#define KEYWORD(X) EXPAND("kw_" #X, tok::kw_##X)
+#define PUNCTUATOR(X, Y) EXPAND(#X, tok::X)
+#define POUND_KEYWORD(X) EXPAND("pound_" #X, tok::pound_##X)
+#include "swift/Syntax/TokenKinds.def"
+  }
+};
+
+/// Serialization traits for TriviaPiece.
+/// - All trivia pieces will have a "kind" key that contains the serialized
+///   name of the trivia kind.
+/// - Comment trivia will have the associated text of the comment under the
+///   "value" key.
+/// - All other trivia will have the associated integer count of their
+///   occurrences under the "value" key.
+template<>
+struct ObjectTraits<syntax::TriviaPiece> {
+  static void mapping(Output &out, syntax::TriviaPiece &value) {
+    out.mapRequired("kind", value.Kind);
+    switch (value.Kind) {
+      case syntax::TriviaKind::Space:
+      case syntax::TriviaKind::Tab:
+      case syntax::TriviaKind::VerticalTab:
+      case syntax::TriviaKind::Formfeed:
+      case syntax::TriviaKind::Newline:
+      case syntax::TriviaKind::Backtick:
+        out.mapRequired("value", value.Count);
+        break;
+      case syntax::TriviaKind::LineComment:
+      case syntax::TriviaKind::BlockComment:
+      case syntax::TriviaKind::DocLineComment:
+      case syntax::TriviaKind::DocBlockComment: {
+        auto text = value.Text.str();
+        out.mapRequired("value", text);
+        break;
+      }
+    }
+  }
+};
+
+/// Serialization traits for TriviaKind.
+template <>
+struct ScalarEnumerationTraits<syntax::TriviaKind> {
+  static void enumeration(Output &out, syntax::TriviaKind &value) {
+    out.enumCase(value, "Space", syntax::TriviaKind::Space);
+    out.enumCase(value, "Tab", syntax::TriviaKind::Tab);
+    out.enumCase(value, "VerticalTab", syntax::TriviaKind::VerticalTab);
+    out.enumCase(value, "Formfeed", syntax::TriviaKind::Formfeed);
+    out.enumCase(value, "Newline", syntax::TriviaKind::Newline);
+    out.enumCase(value, "LineComment", syntax::TriviaKind::LineComment);
+    out.enumCase(value, "BlockComment", syntax::TriviaKind::BlockComment);
+    out.enumCase(value, "DocLineComment", syntax::TriviaKind::DocLineComment);
+    out.enumCase(value, "DocBlockComment", syntax::TriviaKind::DocBlockComment);
+    out.enumCase(value, "Backtick", syntax::TriviaKind::Backtick);
+  }
+};
+
+/// Serialization traits for Trivia.
+/// Trivia will serialize as an array of the underlying TriviaPieces.
+template<>
+struct ArrayTraits<syntax::Trivia> {
+  static size_t size(Output &out, syntax::Trivia &seq) {
+    return seq.Pieces.size();
+  }
+  static syntax::TriviaPiece& element(Output &out, syntax::Trivia &seq,
+                                      size_t index) {
+    return seq.Pieces[index];
+  }
+};
+
+/// An adapter struct that provides a nested structure for token content.
+struct TokenDescription {
+  tok Kind;
+  StringRef Text;
+};
+
+/// Serialization traits for TokenDescription.
+/// TokenDescriptions are always serialized this way:
+/// ```
+/// {
+///   "kind": <token name, e.g. "kw_struct">,
+///   "text": <token text, e.g. "struct">
+/// }
+/// ```
+template<>
+struct ObjectTraits<TokenDescription> {
+  static void mapping(Output &out, TokenDescription &value) {
+    out.mapRequired("kind", value.Kind);
+    out.mapRequired("text", value.Text);
+  }
+};
+
+/// Serialization traits for RC<RawSyntax>.
+/// This will be different depending if the raw syntax node is a Token or not.
+/// Token nodes will always have this structure:
+/// ```
+/// {
+///   "tokenKind": { "kind": <token kind>, "text": <token text> },
+///   "leadingTrivia": [ <trivia pieces...> ],
+///   "trailingTrivia": [ <trivia pieces...> ],
+///   "presence": <"Present" or "Missing">
+/// }
+/// ```
+/// All other raw syntax nodes will have this structure:
+/// ```
+/// {
+///   "kind": <syntax kind>,
+///   "layout": [ <raw syntax nodes...> ],
+///   "presence": <"Present" or "Missing">
+/// }
+/// ```
+template<>
+struct ObjectTraits<RC<syntax::RawSyntax>> {
+  static void mapping(Output &out, RC<syntax::RawSyntax> &value) {
+    auto kind = value->Kind;
+    switch (kind) {
+    case syntax::SyntaxKind::Token: {
+      auto Tok = cast<syntax::TokenSyntax>(value);
+      auto tokenKind = Tok->getTokenKind();
+      auto text = Tok->getText();
+      auto description = TokenDescription { tokenKind, text };
+      out.mapRequired("tokenKind", description);
+
+      auto leadingTrivia = Tok->LeadingTrivia;
+      out.mapRequired("leadingTrivia", leadingTrivia);
+
+      auto trailingTrivia = Tok->TrailingTrivia;
+      out.mapRequired("trailingTrivia", trailingTrivia);
+      break;
+    }
+    default: {
+      out.mapRequired("kind", kind);
+
+      auto layout = value->Layout;
+      out.mapRequired("layout", layout);
+
+      break;
+    }
+    }
+    auto presence = value->Presence;
+    out.mapRequired("presence", presence);
+  }
+};
+} // end namespace json
+} // end namespace swift
+
+#endif /* SWIFT_SYNTAX_SERIALIZATION_SYNTAXSERIALIZATION_H */
diff --git a/include/swift/Syntax/TokenKinds.def b/include/swift/Syntax/TokenKinds.def
index b46d3c7..c59f653 100644
--- a/include/swift/Syntax/TokenKinds.def
+++ b/include/swift/Syntax/TokenKinds.def
@@ -9,51 +9,64 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 //
 //===----------------------------------------------------------------------===//
-//
-// This file defines macros used for macro-metaprogramming lexer tokens.
-//
+///
+/// This file defines x-macros used for metaprogramming with lexer tokens.
+///
+/// KEYWORD(kw)
+///   SWIFT_KEYWORD(kw)
+///     DECL_KEYWORD(kw)
+///     STMT_KEYWORD(kw)
+///     EXPR_KEYWORD(kw)
+///     PAT_KEYWORD(kw)
+///   SIL_KEYWORD(kw)
+/// POUND_KEYWORD(kw)
+///   POUND_OBJECT_LITERAL(kw, desc, proto)
+///   POUND_OLD_OBJECT_LITERAL(kw, new_kw, old_arg, new_arg)
+///   POUND_CONFIG(kw)
+/// PUNCTUATOR(name, str)
+/// LITERAL(name)
+/// MISC(name)
+///
 //===----------------------------------------------------------------------===//
 
 /// KEYWORD(kw)
-///   Expands for every Swift keyword, such as 'if', 'else', etc.
+///   Expands by default for every Swift keyword and every SIL keyword, such as
+///   'if', 'else', 'sil_global', etc. If you only want to use Swift keywords
+///   see SWIFT_KEYWORD.
 #ifndef KEYWORD
 #define KEYWORD(kw)
 #endif
 
+/// SWIFT_KEYWORD(kw)
+///   Expands for every Swift keyword.
+#ifndef SWIFT_KEYWORD
+#define SWIFT_KEYWORD(kw) KEYWORD(kw)
+#endif
+
 /// DECL_KEYWORD(kw)
 ///   Expands for every Swift keyword that can be used in a declaration.
 #ifndef DECL_KEYWORD
-#define DECL_KEYWORD(kw) KEYWORD(kw)
+#define DECL_KEYWORD(kw) SWIFT_KEYWORD(kw)
 #endif
 
 /// STMT_KEYWORD(kw)
 ///   Expands for every Swift keyword used in statement grammar.
 #ifndef STMT_KEYWORD
-#define STMT_KEYWORD(kw) KEYWORD(kw)
+#define STMT_KEYWORD(kw) SWIFT_KEYWORD(kw)
 #endif
 
-/// POUND_KEYWORD(kw)
-///   Every keyword in the #foo namespace.
-#ifndef POUND_KEYWORD
-#define POUND_KEYWORD(kw)
+/// EXPR_KEYWORD(kw)
+///   Expands for every Swift keyword used in an expression, such as 'true',
+///   'false', and 'as'
+#ifndef EXPR_KEYWORD
+#define EXPR_KEYWORD(kw) SWIFT_KEYWORD(kw)
 #endif
 
-/// POUND_OBJECT_LITERAL(kw, desc, proto)
-///   Every keyword in the #foo namespace representing an object literal.
-#ifndef POUND_OBJECT_LITERAL
-#define POUND_OBJECT_LITERAL(kw, desc, proto) POUND_KEYWORD(kw)
-#endif
-
-/// POUND_OLD_OBJECT_LITERAL(kw, new_kw, old_arg, new_arg)
-///   Every keyword in the #foo namespace representing an object literal.
-#ifndef POUND_OLD_OBJECT_LITERAL
-#define POUND_OLD_OBJECT_LITERAL(kw, new_kw, old_arg, new_arg) POUND_KEYWORD(kw)
-#endif
-
-/// POUND_CONFIG(kw)
-///   Every keyword in the #foo namespace representing a configuration.
-#ifndef POUND_CONFIG
-#define POUND_CONFIG(kw) POUND_KEYWORD(kw)
+/// PAT_KEYWORD(kw)
+///   Expands for every Swift keyword used in a pattern, which is currently
+///   limited to '_'
+#ifndef PAT_KEYWORD
+#define PAT_KEYWORD(kw) SWIFT_KEYWORD(kw)
 #endif
 
 /// SIL_KEYWORD(kw)
@@ -62,6 +75,31 @@
 #define SIL_KEYWORD(kw) KEYWORD(kw)
 #endif
 
+/// POUND_KEYWORD(kw)
+///   Every keyword prefixed with a '#'.
+#ifndef POUND_KEYWORD
+#define POUND_KEYWORD(kw)
+#endif
+
+/// POUND_OBJECT_LITERAL(kw, desc, proto)
+///   Every keyword prefixed with a '#' representing an object literal.
+#ifndef POUND_OBJECT_LITERAL
+#define POUND_OBJECT_LITERAL(kw, desc, proto) POUND_KEYWORD(kw)
+#endif
+
+/// POUND_OLD_OBJECT_LITERAL(kw, new_kw, old_arg, new_arg)
+///   Every keyword prefixed with a '#' representing the obsoleted form of an
+///   object literal.
+#ifndef POUND_OLD_OBJECT_LITERAL
+#define POUND_OLD_OBJECT_LITERAL(kw, new_kw, old_arg, new_arg) POUND_KEYWORD(kw)
+#endif
+
+/// POUND_CONFIG(kw)
+///   Every keyword prefixed with a '#' representing a configuration.
+#ifndef POUND_CONFIG
+#define POUND_CONFIG(kw) POUND_KEYWORD(kw)
+#endif
+
 /// PUNCTUATOR(name, str)
 ///   Expands for every Swift punctuator.
 ///   \param name  The symbolic name of the punctuator, such as
@@ -72,6 +110,18 @@
 #define PUNCTUATOR(name, str)
 #endif
 
+/// LITERAL(name)
+///   Tokens representing literal values, e.g. 'integer_literal'.
+#ifndef LITERAL
+#define LITERAL(name)
+#endif
+
+/// MISC(name)
+///   Miscellaneous tokens, e.g. 'eof' and 'unknown'.
+#ifndef MISC
+#define MISC(name)
+#endif
+
 // Keywords that start decls.
 DECL_KEYWORD(associatedtype)
 DECL_KEYWORD(class)
@@ -128,19 +178,19 @@
 STMT_KEYWORD(catch)
 
 // Expression keywords.
-KEYWORD(as)
-KEYWORD(Any)
-KEYWORD(false)
-KEYWORD(is)
-KEYWORD(nil)
-KEYWORD(rethrows)
-KEYWORD(super)
-KEYWORD(self)
-KEYWORD(Self)
-KEYWORD(throw)
-KEYWORD(true)
-KEYWORD(try)
-KEYWORD(throws)
+EXPR_KEYWORD(as)
+EXPR_KEYWORD(Any)
+EXPR_KEYWORD(false)
+EXPR_KEYWORD(is)
+EXPR_KEYWORD(nil)
+EXPR_KEYWORD(rethrows)
+EXPR_KEYWORD(super)
+EXPR_KEYWORD(self)
+EXPR_KEYWORD(Self)
+EXPR_KEYWORD(throw)
+EXPR_KEYWORD(true)
+EXPR_KEYWORD(try)
+EXPR_KEYWORD(throws)
 KEYWORD(__FILE__)
 KEYWORD(__LINE__)
 KEYWORD(__COLUMN__)
@@ -148,7 +198,7 @@
 KEYWORD(__DSO_HANDLE__)
 
 // Pattern keywords.
-KEYWORD(_)
+PAT_KEYWORD(_)
 
 // Punctuators.
 PUNCTUATOR(l_paren,       "(")
@@ -189,7 +239,7 @@
 PUNCTUATOR(l_square_lit,  "[#")
 PUNCTUATOR(r_square_lit,  "#]")
 
-// Keywords in the # namespace.  "if" becomes "tok::pound_if".
+// Keywords prefixed with a '#'.  "if" becomes "tok::pound_if".
 POUND_KEYWORD(if)
 POUND_KEYWORD(else)
 POUND_KEYWORD(elseif)
@@ -199,12 +249,11 @@
 POUND_KEYWORD(sourceLocation)
 POUND_KEYWORD(selector)
 
-// Keywords in the # namespace that are build configurations.
+// Keywords prefixed with a '#' that are build configurations.
 POUND_CONFIG(available)
 
 
-// Declaratively define object literals, including their
-// corresponding protocols.
+// Object literals and their corresponding protocols.
 POUND_OBJECT_LITERAL(fileLiteral, "file reference", ExpressibleByFileReferenceLiteral)
 POUND_OBJECT_LITERAL(imageLiteral, "image", ExpressibleByImageLiteral)
 POUND_OBJECT_LITERAL(colorLiteral, "color", ExpressibleByColorLiteral)
@@ -218,13 +267,35 @@
 POUND_KEYWORD(function)
 POUND_KEYWORD(dsohandle)
 
+// Single-token literals
+LITERAL(integer_literal)
+LITERAL(floating_literal)
+LITERAL(string_literal)
+
+// Miscellaneous tokens.
+MISC(unknown)
+MISC(eof)
+MISC(code_complete)
+MISC(identifier)
+MISC(oper_binary_unspaced)   // "x+y"
+MISC(oper_binary_spaced)     // "x + y"
+MISC(oper_postfix)
+MISC(oper_prefix)
+MISC(dollarident)
+MISC(sil_local_name)       // %42 in SIL mode.
+MISC(comment)
 
 #undef KEYWORD
+#undef SWIFT_KEYWORD
 #undef DECL_KEYWORD
 #undef STMT_KEYWORD
+#undef EXPR_KEYWORD
+#undef PAT_KEYWORD
 #undef SIL_KEYWORD
-#undef PUNCTUATOR
 #undef POUND_KEYWORD
 #undef POUND_OBJECT_LITERAL
 #undef POUND_OLD_OBJECT_LITERAL
 #undef POUND_CONFIG
+#undef PUNCTUATOR
+#undef LITERAL
+#undef MISC
diff --git a/include/swift/Syntax/TokenKinds.h b/include/swift/Syntax/TokenKinds.h
index 08e7fd7..e62eab6 100644
--- a/include/swift/Syntax/TokenKinds.h
+++ b/include/swift/Syntax/TokenKinds.h
@@ -19,21 +19,8 @@
 
 namespace swift {
 enum class tok {
-  unknown = 0,
-  eof,
-  code_complete,
-  identifier,
-  oper_binary_unspaced,   // "x+y"
-  oper_binary_spaced,     // "x + y"
-  oper_postfix,
-  oper_prefix,
-  dollarident,
-  integer_literal,
-  floating_literal,
-  string_literal,
-  sil_local_name,      // %42 in SIL mode.
-  comment,
-
+#define LITERAL(X) X,
+#define MISC(X) X,
 #define KEYWORD(X) kw_ ## X,
 #define PUNCTUATOR(X, Y) X,
 #define POUND_KEYWORD(X) pound_ ## X,
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp
index 9b1911a..a4666cb 100644
--- a/lib/AST/ASTContext.cpp
+++ b/lib/AST/ASTContext.cpp
@@ -2696,9 +2696,13 @@
                           Fields[0].getParameterFlags());
 
   RecursiveTypeProperties properties;
+  bool hasInOut = false;
   for (const TupleTypeElt &Elt : Fields) {
-    if (Elt.getType())
-      properties |= Elt.getType()->getRecursiveProperties();
+    auto eltTy = Elt.getType();
+    if (!eltTy) continue;
+    
+    properties |= eltTy->getRecursiveProperties();
+    hasInOut |= eltTy->is<InOutType>();
   }
 
   auto arena = getArena(properties);
@@ -2727,7 +2731,8 @@
   Fields = ArrayRef<TupleTypeElt>(FieldsCopy, Fields.size());
 
   TupleType *New =
-      new (C, arena) TupleType(Fields, IsCanonical ? &C : nullptr, properties);
+      new (C, arena) TupleType(Fields, IsCanonical ? &C : nullptr,
+                               properties, hasInOut);
   C.Impl.getArena(arena).TupleTypes.InsertNode(New, InsertPos);
   return New;
 }
@@ -3080,8 +3085,10 @@
 }
 
 DynamicSelfType *DynamicSelfType::get(Type selfType, const ASTContext &ctx) {
+  assert(selfType->isMaterializable()
+         && "non-materializable dynamic self?");
+  
   auto properties = selfType->getRecursiveProperties();
-  assert(properties.isMaterializable() && "non-materializable dynamic self?");
   auto arena = getArena(properties);
 
   auto &dynamicSelfTypes = ctx.Impl.getArena(arena).DynamicSelfTypes;
@@ -3094,23 +3101,14 @@
   return result;
 }
 
-static void checkFunctionRecursiveProperties(Type Input,
-                                             Type Result) {
-  // TODO: Would be nice to be able to assert these, but they trip during
-  // constraint solving:
-  //assert(!Input->getRecursiveProperties().isLValue()
-  //       && "function should not take lvalues directly as parameters");
-  //assert(Result->getRecursiveProperties().isMaterializable()
-  //       && "function return should be materializable");
-}
-
 static RecursiveTypeProperties getFunctionRecursiveProperties(Type Input,
                                                               Type Result) {
-  checkFunctionRecursiveProperties(Input, Result);
-
+//  assert(!Input->hasLValueType()
+//         && "function should not take lvalues directly as parameters");
+  
   auto properties = Input->getRecursiveProperties()
                   | Result->getRecursiveProperties();
-  properties &= ~RecursiveTypeProperties::IsNotMaterializable;
+  properties &= ~RecursiveTypeProperties::IsLValue;
   return properties;
 }
 
@@ -3119,9 +3117,10 @@
 // always materializable.
 static RecursiveTypeProperties
 getGenericFunctionRecursiveProperties(Type Input, Type Result) {
-  checkFunctionRecursiveProperties(Input, Result);
-
-  static_assert(RecursiveTypeProperties::BitWidth == 11,
+//  assert(!Input->hasLValueType()
+//         && "function should not take lvalues directly as parameters");
+  
+  static_assert(RecursiveTypeProperties::BitWidth == 10,
                 "revisit this if you add new recursive type properties");
   RecursiveTypeProperties properties;
   if (Result->getRecursiveProperties().hasDynamicSelf())
@@ -3131,6 +3130,17 @@
   return properties;
 }
 
+ArrayRef<AnyFunctionType::Param> AnyFunctionType::getParams() const {
+  switch (getKind()) {
+  case TypeKind::Function:
+    return cast<FunctionType>(this)->getParams();
+  case TypeKind::GenericFunction:
+    return cast<GenericFunctionType>(this)->getParams();
+  default:
+    llvm_unreachable("Undefined function type");
+  }
+}
+
 AnyFunctionType *AnyFunctionType::withExtInfo(ExtInfo info) const {
   if (isa<FunctionType>(this))
     return FunctionType::get(getInput(), getResult(), info);
@@ -3145,6 +3155,30 @@
   llvm_unreachable("unhandled function type");
 }
 
+static SmallVector<AnyFunctionType::Param, 4> decomposeInputType(Type type) {
+  SmallVector<AnyFunctionType::Param, 4> result;
+  switch (type->getKind()) {
+  case TypeKind::Tuple: {
+    auto tupleTy = cast<TupleType>(type.getPointer());
+    for (auto &elt : tupleTy->getElements()) {
+      AnyFunctionType::Param param(elt);
+      result.push_back(param);
+    }
+    return result;
+  }
+      
+  case TypeKind::Paren: {
+    auto ty = cast<ParenType>(type.getPointer())->getUnderlyingType();
+    result.push_back(AnyFunctionType::Param(ty));
+    return result;
+  }
+      
+  default:
+    result.push_back(AnyFunctionType::Param(type));
+    return result;
+  }
+}
+
 FunctionType *FunctionType::get(Type Input, Type Result,
                                 const ExtInfo &Info) {
   auto properties = getFunctionRecursiveProperties(Input, Result);
@@ -3156,21 +3190,28 @@
   FunctionType *&Entry
     = C.Impl.getArena(arena).FunctionTypes[{Input, {Result, attrKey} }];
   if (Entry) return Entry;
-
-  return Entry = new (C, arena) FunctionType(Input, Result,
-                                             properties,
-                                             Info);
+  
+  auto params = decomposeInputType(Input);
+  void *mem = C.Allocate(sizeof(FunctionType) +
+                           sizeof(AnyFunctionType::Param) * params.size(),
+                         alignof(FunctionType));
+  return Entry = new (mem) FunctionType(params, Input, Result,
+                                        properties, Info);
 }
 
 // If the input and result types are canonical, then so is the result.
-FunctionType::FunctionType(Type input, Type output,
+FunctionType::FunctionType(ArrayRef<AnyFunctionType::Param> params,
+                           Type input, Type output,
                            RecursiveTypeProperties properties,
                            const ExtInfo &Info)
     : AnyFunctionType(TypeKind::Function,
                       (input->isCanonical() && output->isCanonical())
                           ? &input->getASTContext()
                           : nullptr,
-                      input, output, properties, Info) {}
+                      input, output, properties, params.size(), Info) {
+  std::uninitialized_copy(params.begin(), params.end(),
+                          getTrailingObjects<AnyFunctionType::Param>());
+}
 
 void GenericFunctionType::Profile(llvm::FoldingSetNodeID &ID,
                                   GenericSignature *sig,
@@ -3216,13 +3257,14 @@
         = ctx.Impl.GenericFunctionTypes.FindNodeOrInsertPos(id, insertPos)) {
     return result;
   }
-
-  // Allocate storage for the object.
-  void *mem = ctx.Allocate(sizeof(GenericFunctionType),
+  
+  auto params = decomposeInputType(input);
+  void *mem = ctx.Allocate(sizeof(GenericFunctionType) +
+                             sizeof(AnyFunctionType::Param) * params.size(),
                            alignof(GenericFunctionType));
 
   auto properties = getGenericFunctionRecursiveProperties(input, output);
-  auto result = new (mem) GenericFunctionType(sig, input, output, info,
+  auto result = new (mem) GenericFunctionType(sig, params, input, output, info,
                                               isCanonical ? &ctx : nullptr,
                                               properties);
 
@@ -3232,15 +3274,17 @@
 
 GenericFunctionType::GenericFunctionType(
                        GenericSignature *sig,
+                       ArrayRef<AnyFunctionType::Param> params,
                        Type input,
                        Type result,
                        const ExtInfo &info,
                        const ASTContext *ctx,
                        RecursiveTypeProperties properties)
   : AnyFunctionType(TypeKind::GenericFunction, ctx, input, result,
-                    properties, info),
-    Signature(sig)
-{}
+                    properties, params.size(), info), Signature(sig) {
+  std::uninitialized_copy(params.begin(), params.end(),
+                          getTrailingObjects<AnyFunctionType::Param>());
+}
 
 GenericTypeParamType *GenericTypeParamType::get(unsigned depth, unsigned index,
                                                 const ASTContext &ctx) {
@@ -3392,7 +3436,7 @@
   void *mem = ctx.Allocate(bytes, alignof(SILFunctionType));
 
   RecursiveTypeProperties properties;
-  static_assert(RecursiveTypeProperties::BitWidth == 11,
+  static_assert(RecursiveTypeProperties::BitWidth == 10,
                 "revisit this if you add new recursive type properties");
   for (auto &param : params)
     properties |= param.getType()->getRecursiveProperties();
@@ -3533,8 +3577,7 @@
   assert(!objectTy->is<LValueType>() && !objectTy->is<InOutType>() &&
          "cannot have 'inout' or @lvalue wrapped inside an 'inout'");
 
-  auto properties = objectTy->getRecursiveProperties() |
-                     RecursiveTypeProperties::HasInOut;
+  auto properties = objectTy->getRecursiveProperties();
 
   properties &= ~RecursiveTypeProperties::IsLValue;
   auto arena = getArena(properties);
diff --git a/lib/AST/ASTDumper.cpp b/lib/AST/ASTDumper.cpp
index b939da5..67f9c7a 100644
--- a/lib/AST/ASTDumper.cpp
+++ b/lib/AST/ASTDumper.cpp
@@ -642,8 +642,10 @@
     void printAbstractTypeParamCommon(AbstractTypeParamDecl *decl,
                                       const char *name) {
       printCommon(decl, name);
-      if (auto superclassTy = decl->getSuperclass()) {
-        OS << " superclass='" << superclassTy->getString() << "'";
+      if (decl->getDeclContext()->getGenericEnvironmentOfContext()) {
+        if (auto superclassTy = decl->getSuperclass()) {
+          OS << " superclass='" << superclassTy->getString() << "'";
+        }
       }
     }
 
@@ -734,6 +736,8 @@
         OS << " final";
       if (VD->isObjC())
         OS << " @objc";
+      if (VD->isDynamic())
+        OS << " dynamic";
     }
 
     void printCommon(NominalTypeDecl *NTD, const char *Name,
@@ -1032,33 +1036,41 @@
       }
       PrintWithColorRAII(OS, ParenthesisColor) << ')';
     }
+    
+    void printASTNodes(const ArrayRef<ASTNode> &Elements, StringRef Name) {
+      OS.indent(Indent);
+      PrintWithColorRAII(OS, ParenthesisColor) << "(";
+      PrintWithColorRAII(OS, ASTNodeColor) << Name;
+      for (auto Elt : Elements) {
+        OS << '\n';
+        if (auto *SubExpr = Elt.dyn_cast<Expr*>())
+          printRec(SubExpr);
+        else if (auto *SubStmt = Elt.dyn_cast<Stmt*>())
+          printRec(SubStmt);
+        else
+          printRec(Elt.get<Decl*>());
+      }
+      PrintWithColorRAII(OS, ParenthesisColor) << ')';
+    }
 
     void visitIfConfigDecl(IfConfigDecl *ICD) {
-      OS.indent(Indent);
-      PrintWithColorRAII(OS, ParenthesisColor) << '(';
-      OS << "#if_decl\n";
+      printCommon(ICD, "if_config_decl");
       Indent += 2;
       for (auto &Clause : ICD->getClauses()) {
+        OS << '\n';
+        OS.indent(Indent);
+        PrintWithColorRAII(OS, StmtColor) << (Clause.Cond ? "#if:" : "#else:");
+        if (Clause.isActive)
+          PrintWithColorRAII(OS, DeclModifierColor) << " active";
         if (Clause.Cond) {
-          PrintWithColorRAII(OS, ParenthesisColor) << '(';
-          OS << "#if:";
-          if (Clause.isActive) OS << " active";
           OS << "\n";
           printRec(Clause.Cond);
-        } else {
-          OS << '\n';
-          PrintWithColorRAII(OS, ParenthesisColor) << '(';
-          OS << "#else:";
-          if (Clause.isActive) OS << " active";
-          OS << "\n";
         }
 
-        for (auto D : Clause.Elements) {
-          OS << '\n';
-          printRec(D);
-        }
-
-        PrintWithColorRAII(OS, ParenthesisColor) << ')';
+        OS << '\n';
+        Indent += 2;
+        printASTNodes(Clause.Elements, "elements");
+        Indent -= 2;
       }
 
       Indent -= 2;
@@ -1418,35 +1430,6 @@
     PrintWithColorRAII(OS, ParenthesisColor) << ')';
   }
 
-  void visitIfConfigStmt(IfConfigStmt *S) {
-    printCommon(S, "#if_stmt");
-    Indent += 2;
-    for (auto &Clause : S->getClauses()) {
-      OS << '\n';
-      OS.indent(Indent);
-      if (Clause.Cond) {
-        PrintWithColorRAII(OS, ParenthesisColor) << '(';
-        PrintWithColorRAII(OS, StmtColor) << "#if:";
-        if (Clause.isActive)
-          PrintWithColorRAII(OS, DeclModifierColor) << " active";
-        OS << '\n';
-        printRec(Clause.Cond);
-      } else {
-        PrintWithColorRAII(OS, StmtColor) << "#else";
-        if (Clause.isActive)
-          PrintWithColorRAII(OS, DeclModifierColor) << " active";
-      }
-
-      OS << '\n';
-      Indent += 2;
-      printASTNodes(Clause.Elements, "elements");
-      Indent -= 2;
-    }
-
-    Indent -= 2;
-    PrintWithColorRAII(OS, ParenthesisColor) << ')';
-  }
-
   void visitDoStmt(DoStmt *S) {
     printCommon(S, "do_stmt") << '\n';
     printRec(S->getBody());
@@ -1660,6 +1643,10 @@
     conf.dump(OS, Indent + 2);
   }
 
+  void printDeclRef(ConcreteDeclRef declRef) {
+    declRef.dump(PrintWithColorRAII(OS, DeclColor).getOS());
+  }
+
   raw_ostream &printCommon(Expr *E, const char *C) {
     OS.indent(Indent);
     PrintWithColorRAII(OS, ParenthesisColor) << '(';
@@ -1785,11 +1772,11 @@
     printCommon(E, "discard_assignment_expr");
     PrintWithColorRAII(OS, ParenthesisColor) << ')';
   }
-  
+
   void visitDeclRefExpr(DeclRefExpr *E) {
     printCommon(E, "declref_expr");
     PrintWithColorRAII(OS, DeclColor) << " decl=";
-    E->getDeclRef().dump(PrintWithColorRAII(OS, DeclColor).getOS());
+    printDeclRef(E->getDeclRef());
     if (E->getAccessSemantics() != AccessSemantics::Ordinary)
       PrintWithColorRAII(OS, AccessibilityColor)
         << " " << getAccessSemanticsString(E->getAccessSemantics());
@@ -1816,7 +1803,7 @@
   void visitOtherConstructorDeclRefExpr(OtherConstructorDeclRefExpr *E) {
     printCommon(E, "other_constructor_ref_expr")
       << " decl=";
-    E->getDeclRef().dump(OS);
+    printDeclRef(E->getDeclRef());
     PrintWithColorRAII(OS, ParenthesisColor) << ')';
   }
   void visitOverloadedDeclRefExpr(OverloadedDeclRefExpr *E) {
@@ -1945,7 +1932,7 @@
       OS << " super";
     if (E->hasDecl()) {
       OS << "  decl=";
-      E->getDecl().dump(OS);
+      printDeclRef(E->getDecl());
     }
     printArgumentLabels(E->getArgumentLabels());
     OS << '\n';
@@ -2052,6 +2039,23 @@
     printRec(E->getSubExpr());
     PrintWithColorRAII(OS, ParenthesisColor) << ')';
   }
+  void visitConditionalBridgeFromObjCExpr(ConditionalBridgeFromObjCExpr *E) {
+    printCommon(E, "conditional_bridge_from_objc_expr") << " conversion=";
+    printDeclRef(E->getConversion());
+    OS << '\n';
+    printRec(E->getSubExpr());
+    PrintWithColorRAII(OS, ParenthesisColor) << ')';
+  }
+  void visitBridgeFromObjCExpr(BridgeFromObjCExpr *E) {
+    printCommon(E, "bridge_from_objc_expr") << '\n';
+    printRec(E->getSubExpr());
+    PrintWithColorRAII(OS, ParenthesisColor) << ')';
+  }
+  void visitBridgeToObjCExpr(BridgeToObjCExpr *E) {
+    printCommon(E, "bridge_to_objc_expr") << '\n';
+    printRec(E->getSubExpr());
+    PrintWithColorRAII(OS, ParenthesisColor) << ')';
+  }
   void visitLoadExpr(LoadExpr *E) {
     printCommon(E, "load_expr") << '\n';
     printRec(E->getSubExpr());
@@ -2441,13 +2445,13 @@
         
       case KeyPathExpr::Component::Kind::Property:
         OS << "property ";
-        component.getDeclRef().dump(OS);
+        printDeclRef(component.getDeclRef());
         OS << " ";
         break;
       
       case KeyPathExpr::Component::Kind::Subscript:
         OS << "subscript ";
-        component.getDeclRef().dump(OS);
+        printDeclRef(component.getDeclRef());
         OS << '\n';
         component.getIndexExpr()->print(OS, Indent + 4);
         OS.indent(Indent + 4);
@@ -2549,7 +2553,7 @@
   void printRec(Expr *E) { E->print(OS, Indent + 2); }
   void printRec(TypeRepr *T) { PrintTypeRepr(OS, Indent + 2).visit(T); }
 
-  raw_ostream &printCommon(TypeRepr *T, const char *Name) {
+  raw_ostream &printCommon(const char *Name) {
     OS.indent(Indent);
     PrintWithColorRAII(OS, ParenthesisColor) << '(';
     PrintWithColorRAII(OS, TypeReprColor) << Name;
@@ -2557,22 +2561,22 @@
   }
 
   void visitErrorTypeRepr(ErrorTypeRepr *T) {
-    printCommon(T, "type_error");
+    printCommon("type_error");
   }
 
   void visitAttributedTypeRepr(AttributedTypeRepr *T) {
-    printCommon(T, "type_attributed") << " attrs=";
+    printCommon("type_attributed") << " attrs=";
     T->printAttrs(OS);
     OS << '\n';
     printRec(T->getTypeRepr());
   }
 
   void visitIdentTypeRepr(IdentTypeRepr *T) {
-    printCommon(T, "type_ident");
+    printCommon("type_ident");
     Indent += 2;
     for (auto comp : T->getComponentRange()) {
       OS << '\n';
-      printCommon(nullptr, "component");
+      printCommon("component");
       PrintWithColorRAII(OS, IdentifierColor)
         << " id='" << comp->getIdentifier() << '\'';
       OS << " bind=";
@@ -2592,7 +2596,7 @@
   }
 
   void visitFunctionTypeRepr(FunctionTypeRepr *T) {
-    printCommon(T, "type_function");
+    printCommon("type_function");
     OS << '\n'; printRec(T->getArgsTypeRepr());
     if (T->throws())
       OS << " throws ";
@@ -2601,13 +2605,13 @@
   }
 
   void visitArrayTypeRepr(ArrayTypeRepr *T) {
-    printCommon(T, "type_array") << '\n';
+    printCommon("type_array") << '\n';
     printRec(T->getBase());
     PrintWithColorRAII(OS, ParenthesisColor) << ')';
   }
 
   void visitDictionaryTypeRepr(DictionaryTypeRepr *T) {
-    printCommon(T, "type_dictionary") << '\n';
+    printCommon("type_dictionary") << '\n';
     printRec(T->getKey());
     OS << '\n';
     printRec(T->getValue());
@@ -2615,7 +2619,7 @@
   }
 
   void visitTupleTypeRepr(TupleTypeRepr *T) {
-    printCommon(T, "type_tuple");
+    printCommon("type_tuple");
 
     if (T->hasElementNames()) {
       OS << " names=";
@@ -2637,7 +2641,7 @@
   }
 
   void visitCompositionTypeRepr(CompositionTypeRepr *T) {
-    printCommon(T, "type_composite");
+    printCommon("type_composite");
     for (auto elem : T->getTypes()) {
       OS << '\n';
       printRec(elem);
@@ -2646,19 +2650,19 @@
   }
 
   void visitMetatypeTypeRepr(MetatypeTypeRepr *T) {
-    printCommon(T, "type_metatype") << '\n';
+    printCommon("type_metatype") << '\n';
     printRec(T->getBase());
     PrintWithColorRAII(OS, ParenthesisColor) << ')';
   }
 
   void visitProtocolTypeRepr(ProtocolTypeRepr *T) {
-    printCommon(T, "type_protocol") << '\n';
+    printCommon("type_protocol") << '\n';
     printRec(T->getBase());
     PrintWithColorRAII(OS, ParenthesisColor) << ')';
   }
 
   void visitInOutTypeRepr(InOutTypeRepr *T) {
-    printCommon(T, "type_inout") << '\n';
+    printCommon("type_inout") << '\n';
     printRec(T->getBase());
     PrintWithColorRAII(OS, ParenthesisColor) << ')';
   }
@@ -2811,8 +2815,7 @@
     raw_ostream &OS;
     unsigned Indent;
 
-    raw_ostream &printCommon(const TypeBase *T, StringRef label,
-                             StringRef name) {
+    raw_ostream &printCommon(StringRef label, StringRef name) {
       OS.indent(Indent);
       PrintWithColorRAII(OS, ParenthesisColor) << '(';
       if (!label.empty()) {
@@ -2874,11 +2877,11 @@
 
 #define TRIVIAL_TYPE_PRINTER(Class,Name)                        \
     void visit##Class##Type(Class##Type *T, StringRef label) {  \
-      printCommon(T, label, #Name "_type") << ")";              \
+      printCommon(label, #Name "_type") << ")";              \
     }
 
     void visitErrorType(ErrorType *T, StringRef label) {
-      printCommon(T, label, "error_type");
+      printCommon(label, "error_type");
       if (auto originalType = T->getOriginalType())
         printRec("original_type", originalType);
       OS << ")";
@@ -2887,7 +2890,7 @@
     TRIVIAL_TYPE_PRINTER(Unresolved, unresolved)
 
     void visitBuiltinIntegerType(BuiltinIntegerType *T, StringRef label) {
-      printCommon(T, label, "builtin_integer_type");
+      printCommon(label, "builtin_integer_type");
       if (T->isFixedWidth())
         printField("bit_width", T->getFixedWidth());
       else
@@ -2896,7 +2899,7 @@
     }
 
     void visitBuiltinFloatType(BuiltinFloatType *T, StringRef label) {
-      printCommon(T, label, "builtin_float_type");
+      printCommon(label, "builtin_float_type");
       printField("bit_width", T->getBitWidth());
       OS << ")";
     }
@@ -2908,27 +2911,27 @@
     TRIVIAL_TYPE_PRINTER(BuiltinUnsafeValueBuffer, builtin_unsafe_value_buffer)
 
     void visitBuiltinVectorType(BuiltinVectorType *T, StringRef label) {
-      printCommon(T, label, "builtin_vector_type");
+      printCommon(label, "builtin_vector_type");
       printField("num_elements", T->getNumElements());
       printRec(T->getElementType());
       OS << ")";
     }
 
     void visitNameAliasType(NameAliasType *T, StringRef label) {
-      printCommon(T, label, "name_alias_type");
+      printCommon(label, "name_alias_type");
       printField("decl", T->getDecl()->printRef());
       OS << ")";
     }
 
     void visitParenType(ParenType *T, StringRef label) {
-      printCommon(T, label, "paren_type");
+      printCommon(label, "paren_type");
       dumpParameterFlags(T->getParameterFlags());
       printRec(T->getUnderlyingType());
       OS << ")";
     }
 
     void visitTupleType(TupleType *T, StringRef label) {
-      printCommon(T, label, "tuple_type");
+      printCommon(label, "tuple_type");
       printField("num_elements", T->getNumElements());
       Indent += 2;
       for (const auto &elt : T->getElements()) {
@@ -2946,25 +2949,25 @@
     }
 
     void visitUnownedStorageType(UnownedStorageType *T, StringRef label) {
-      printCommon(T, label, "unowned_storage_type");
+      printCommon(label, "unowned_storage_type");
       printRec(T->getReferentType());
       OS << ")";
     }
 
     void visitUnmanagedStorageType(UnmanagedStorageType *T, StringRef label) {
-      printCommon(T, label, "unmanaged_storage_type");
+      printCommon(label, "unmanaged_storage_type");
       printRec(T->getReferentType());
       OS << ")";
     }
 
     void visitWeakStorageType(WeakStorageType *T, StringRef label) {
-      printCommon(T, label, "weak_storage_type");
+      printCommon(label, "weak_storage_type");
       printRec(T->getReferentType());
       OS << ")";
     }
 
     void visitEnumType(EnumType *T, StringRef label) {
-      printCommon(T, label, "enum_type");
+      printCommon(label, "enum_type");
       printField("decl", T->getDecl()->printRef());
       if (T->getParent())
         printRec("parent", T->getParent());
@@ -2972,7 +2975,7 @@
     }
 
     void visitStructType(StructType *T, StringRef label) {
-      printCommon(T, label, "struct_type");
+      printCommon(label, "struct_type");
       printField("decl", T->getDecl()->printRef());
       if (T->getParent())
         printRec("parent", T->getParent());
@@ -2980,7 +2983,7 @@
     }
 
     void visitClassType(ClassType *T, StringRef label) {
-      printCommon(T, label, "class_type");
+      printCommon(label, "class_type");
       printField("decl", T->getDecl()->printRef());
       if (T->getParent())
         printRec("parent", T->getParent());
@@ -2988,7 +2991,7 @@
     }
 
     void visitProtocolType(ProtocolType *T, StringRef label) {
-      printCommon(T, label, "protocol_type");
+      printCommon(label, "protocol_type");
       printField("decl", T->getDecl()->printRef());
       if (T->getParent())
         printRec("parent", T->getParent());
@@ -2996,7 +2999,7 @@
     }
 
     void visitMetatypeType(MetatypeType *T, StringRef label) {
-      printCommon(T, label, "metatype_type");
+      printCommon(label, "metatype_type");
       if (T->hasRepresentation())
         OS << " " << getMetatypeRepresentationString(T->getRepresentation());
       printRec(T->getInstanceType());
@@ -3005,7 +3008,7 @@
 
     void visitExistentialMetatypeType(ExistentialMetatypeType *T,
                                       StringRef label) {
-      printCommon(T, label, "existential_metatype_type");
+      printCommon(label, "existential_metatype_type");
       if (T->hasRepresentation())
         OS << " " << getMetatypeRepresentationString(T->getRepresentation());
       printRec(T->getInstanceType());
@@ -3013,19 +3016,19 @@
     }
 
     void visitModuleType(ModuleType *T, StringRef label) {
-      printCommon(T, label, "module_type");
+      printCommon(label, "module_type");
       printField("module", T->getModule()->getName());
       OS << ")";
     }
 
     void visitDynamicSelfType(DynamicSelfType *T, StringRef label) {
-      printCommon(T, label, "dynamic_self_type");
+      printCommon(label, "dynamic_self_type");
       printRec(T->getSelfType());
       OS << ")";
     }
 
     void visitArchetypeType(ArchetypeType *T, StringRef label) {
-      printCommon(T, label, "archetype_type");
+      printCommon(label, "archetype_type");
       if (T->getOpenedExistentialType())
         printField("opened_existential_id", T->getOpenedExistentialID());
       else
@@ -3073,7 +3076,7 @@
     }
 
     void visitGenericTypeParamType(GenericTypeParamType *T, StringRef label) {
-      printCommon(T, label, "generic_type_param_type");
+      printCommon(label, "generic_type_param_type");
       printField("depth", T->getDepth());
       printField("index", T->getIndex());
       if (auto decl = T->getDecl())
@@ -3082,7 +3085,7 @@
     }
 
     void visitDependentMemberType(DependentMemberType *T, StringRef label) {
-      printCommon(T, label, "dependent_member_type");
+      printCommon(label, "dependent_member_type");
       if (auto assocType = T->getAssocType()) {
         printField("assoc_type", assocType->printRef());
       } else {
@@ -3094,7 +3097,7 @@
 
     void printAnyFunctionTypeCommon(AnyFunctionType *T, StringRef label,
                                     StringRef name) {
-      printCommon(T, label, name);
+      printCommon(label, name);
       SILFunctionType::Representation representation =
         T->getExtInfo().getSILRepresentation();
 
@@ -3126,46 +3129,46 @@
     }
 
     void visitSILFunctionType(SILFunctionType *T, StringRef label) {
-      printCommon(T, label, "sil_function_type");
+      printCommon(label, "sil_function_type");
       // FIXME: Print the structure of the type.
       printField("type", T->getString());
       OS << ")";
     }
 
     void visitSILBlockStorageType(SILBlockStorageType *T, StringRef label) {
-      printCommon(T, label, "sil_block_storage_type");
+      printCommon(label, "sil_block_storage_type");
       printRec(T->getCaptureType());
       OS << ")";
     }
 
     void visitSILBoxType(SILBoxType *T, StringRef label) {
-      printCommon(T, label, "sil_box_type");
+      printCommon(label, "sil_box_type");
       // FIXME: Print the structure of the type.
       printField("type", T->getString());
       OS << ")";
     }
 
     void visitArraySliceType(ArraySliceType *T, StringRef label) {
-      printCommon(T, label, "array_slice_type");
+      printCommon(label, "array_slice_type");
       printRec(T->getBaseType());
       OS << ")";
     }
 
     void visitOptionalType(OptionalType *T, StringRef label) {
-      printCommon(T, label, "optional_type");
+      printCommon(label, "optional_type");
       printRec(T->getBaseType());
       OS << ")";
     }
 
     void visitImplicitlyUnwrappedOptionalType(
            ImplicitlyUnwrappedOptionalType *T, StringRef label) {
-      printCommon(T, label, "implicitly_unwrapped_optional_type");
+      printCommon(label, "implicitly_unwrapped_optional_type");
       printRec(T->getBaseType());
       OS << ")";
     }
 
     void visitDictionaryType(DictionaryType *T, StringRef label) {
-      printCommon(T, label, "dictionary_type");
+      printCommon(label, "dictionary_type");
       printRec("key", T->getKeyType());
       printRec("value", T->getValueType());
       OS << ")";
@@ -3173,7 +3176,7 @@
 
     void visitProtocolCompositionType(ProtocolCompositionType *T,
                                       StringRef label) {
-      printCommon(T, label, "protocol_composition_type");
+      printCommon(label, "protocol_composition_type");
       if (T->hasExplicitAnyObject())
         OS << " any_object";
       for (auto proto : T->getMembers()) {
@@ -3183,19 +3186,19 @@
     }
 
     void visitLValueType(LValueType *T, StringRef label) {
-      printCommon(T, label, "lvalue_type");
+      printCommon(label, "lvalue_type");
       printRec(T->getObjectType());
       OS << ")";
     }
 
     void visitInOutType(InOutType *T, StringRef label) {
-      printCommon(T, label, "inout_type");
+      printCommon(label, "inout_type");
       printRec(T->getObjectType());
       OS << ")";
     }
 
     void visitUnboundGenericType(UnboundGenericType *T, StringRef label) {
-      printCommon(T, label, "unbound_generic_type");
+      printCommon(label, "unbound_generic_type");
       printField("decl", T->getDecl()->printRef());
       if (T->getParent())
         printRec("parent", T->getParent());
@@ -3203,7 +3206,7 @@
     }
 
     void visitBoundGenericClassType(BoundGenericClassType *T, StringRef label) {
-      printCommon(T, label, "bound_generic_class_type");
+      printCommon(label, "bound_generic_class_type");
       printField("decl", T->getDecl()->printRef());
       if (T->getParent())
         printRec("parent", T->getParent());
@@ -3214,7 +3217,7 @@
 
     void visitBoundGenericStructType(BoundGenericStructType *T,
                                      StringRef label) {
-      printCommon(T, label, "bound_generic_struct_type");
+      printCommon(label, "bound_generic_struct_type");
       printField("decl", T->getDecl()->printRef());
       if (T->getParent())
         printRec("parent", T->getParent());
@@ -3224,7 +3227,7 @@
     }
 
     void visitBoundGenericEnumType(BoundGenericEnumType *T, StringRef label) {
-      printCommon(T, label, "bound_generic_enum_type");
+      printCommon(label, "bound_generic_enum_type");
       printField("decl", T->getDecl()->printRef());
       if (T->getParent())
         printRec("parent", T->getParent());
@@ -3234,7 +3237,7 @@
     }
 
     void visitTypeVariableType(TypeVariableType *T, StringRef label) {
-      printCommon(T, label, "type_variable_type");
+      printCommon(label, "type_variable_type");
       printField("id", T->getID());
       OS << ")";
     }
diff --git a/lib/AST/ASTMangler.cpp b/lib/AST/ASTMangler.cpp
index a08c26f..b12a9ed 100644
--- a/lib/AST/ASTMangler.cpp
+++ b/lib/AST/ASTMangler.cpp
@@ -501,6 +501,29 @@
   llvm_unreachable("param not found");
 }
 
+static StringRef getPrivateDiscriminatorIfNecessary(const ValueDecl *decl) {
+  if (!decl->hasAccessibility() ||
+      decl->getFormalAccess() > Accessibility::FilePrivate ||
+      isInPrivateOrLocalContext(decl)) {
+    return StringRef();
+  }
+
+  // Mangle non-local private declarations with a textual discriminator
+  // based on their enclosing file.
+  auto topLevelContext = decl->getDeclContext()->getModuleScopeContext();
+  auto fileUnit = cast<FileUnit>(topLevelContext);
+
+  Identifier discriminator =
+      fileUnit->getDiscriminatorForPrivateValue(decl);
+  assert(!discriminator.empty());
+  assert(!isNonAscii(discriminator.str()) &&
+         "discriminator contains non-ASCII characters");
+  (void)&isNonAscii;
+  assert(!clang::isDigit(discriminator.str().front()) &&
+         "not a valid identifier");
+  return discriminator.str();
+}
+
 void ASTMangler::appendDeclName(const ValueDecl *decl) {
   if (decl->isOperator()) {
     auto name = decl->getBaseName().getIdentifier().str();
@@ -536,27 +559,10 @@
     // Mangle local declarations with a numeric discriminator.
     return appendOperator("L", Index(decl->getLocalDiscriminator()));
   }
-  if (decl->hasAccessibility() &&
-      decl->getFormalAccess() <= Accessibility::FilePrivate &&
-      !isInPrivateOrLocalContext(decl)) {
-    // Mangle non-local private declarations with a textual discriminator
-    // based on their enclosing file.
 
-    // The first <identifier> is a discriminator string unique to the decl's
-    // original source file.
-    auto topLevelContext = decl->getDeclContext()->getModuleScopeContext();
-    auto fileUnit = cast<FileUnit>(topLevelContext);
-
-    Identifier discriminator =
-      fileUnit->getDiscriminatorForPrivateValue(decl);
-    assert(!discriminator.empty());
-    assert(!isNonAscii(discriminator.str()) &&
-           "discriminator contains non-ASCII characters");
-    (void)&isNonAscii;
-    assert(!clang::isDigit(discriminator.str().front()) &&
-           "not a valid identifier");
-
-    appendIdentifier(discriminator.str());
+  StringRef privateDiscriminator = getPrivateDiscriminatorIfNecessary(decl);
+  if (!privateDiscriminator.empty()) {
+    appendIdentifier(privateDiscriminator.str());
     return appendOperator("LL");
   }
 }
@@ -1802,6 +1808,11 @@
                                          bool isAllocating) {
   appendContextOf(ctor);
   appendDeclType(ctor);
+  StringRef privateDiscriminator = getPrivateDiscriminatorIfNecessary(ctor);
+  if (!privateDiscriminator.empty()) {
+    appendIdentifier(privateDiscriminator);
+    appendOperator("Ll");
+  }
   appendOperator(isAllocating ? "fC" : "fc");
 }
 
diff --git a/lib/AST/ASTPrinter.cpp b/lib/AST/ASTPrinter.cpp
index 8d81337..4084086 100644
--- a/lib/AST/ASTPrinter.cpp
+++ b/lib/AST/ASTPrinter.cpp
@@ -2360,7 +2360,21 @@
 }
 
 void PrintAST::visitIfConfigDecl(IfConfigDecl *ICD) {
-  // FIXME: Pretty print #if decls
+  if (!Options.PrintIfConfig)
+    return;
+
+  for (auto &Clause : ICD->getClauses()) {
+    if (&Clause == &*ICD->getClauses().begin())
+      Printer << tok::pound_if << " /* condition */"; // FIXME: print condition
+    else if (Clause.Cond)
+      Printer << tok::pound_elseif << " /* condition */"; // FIXME: print condition
+    else
+      Printer << tok::pound_else;
+    printASTNodes(Clause.Elements);
+    Printer.printNewline();
+    indent();
+  }
+  Printer << tok::pound_endif;
 }
 
 void PrintAST::visitTypeAliasDecl(TypeAliasDecl *decl) {
@@ -3267,27 +3281,6 @@
   visit(stmt->getBody());
 }
 
-void PrintAST::visitIfConfigStmt(IfConfigStmt *stmt) {
-  if (!Options.PrintIfConfig)
-    return;
-
-  for (auto &Clause : stmt->getClauses()) {
-    if (&Clause == &*stmt->getClauses().begin())
-      Printer << tok::pound_if << " "; // FIXME: print condition
-    else if (Clause.Cond)
-      Printer << tok::pound_elseif << ""; // FIXME: print condition
-    else
-      Printer << tok::pound_else;
-    Printer.printNewline();
-    if (printASTNodes(Clause.Elements)) {
-      Printer.printNewline();
-      indent();
-    }
-  }
-  Printer.printNewline();
-  Printer << tok::pound_endif;
-}
-
 void PrintAST::visitWhileStmt(WhileStmt *stmt) {
   Printer << tok::kw_while << " ";
   // FIXME: print condition
diff --git a/lib/AST/ASTScope.cpp b/lib/AST/ASTScope.cpp
index e40a5a1..8be8003 100644
--- a/lib/AST/ASTScope.cpp
+++ b/lib/AST/ASTScope.cpp
@@ -188,24 +188,6 @@
   llvm_unreachable("Unhandled ContinuationKind in switch.");
 }
 
-/// Determine whether this is a top-level code declaration that isn't just
-/// wrapping an #if.
-static bool isRealTopLevelCodeDecl(Decl *decl) {
-  auto topLevelCode = dyn_cast<TopLevelCodeDecl>(decl);
-  if (!topLevelCode) return false;
-
-  // Drop top-level statements containing just an IfConfigStmt.
-  // FIXME: The modeling of IfConfig is weird.
-  auto braceStmt = topLevelCode->getBody();
-  auto elements = braceStmt->getElements();
-  if (elements.size() == 1 &&
-      elements[0].is<Stmt *>() &&
-      isa<IfConfigStmt>(elements[0].get<Stmt *>()))
-    return false;
-
-  return true;
-}
-
 void ASTScope::expand() const {
   assert(!isExpanded() && "Already expanded the children of this node");
   ASTContext &ctx = getASTContext();
@@ -313,7 +295,7 @@
 
         // If the declaration is a top-level code declaration, turn the source
         // file into a continuation. We're done.
-        if (isRealTopLevelCodeDecl(decl)) {
+        if (isa<TopLevelCodeDecl>(decl)) {
           addActiveContinuation(this);
           break;
         }
@@ -950,7 +932,6 @@
   }
 
   case DeclKind::TopLevelCode:
-    if (!isRealTopLevelCodeDecl(decl)) return nullptr;
     return new (ctx) ASTScope(parent, cast<TopLevelCodeDecl>(decl));
 
   case DeclKind::Protocol:
@@ -1153,7 +1134,6 @@
   case StmtKind::Break:
   case StmtKind::Continue:
   case StmtKind::Fallthrough:
-  case StmtKind::IfConfig:
   case StmtKind::Fail:
   case StmtKind::Throw:
     // Nothing to do for these statements.
diff --git a/lib/AST/ASTVerifier.cpp b/lib/AST/ASTVerifier.cpp
index 7c8a676..5e602ef 100644
--- a/lib/AST/ASTVerifier.cpp
+++ b/lib/AST/ASTVerifier.cpp
@@ -446,7 +446,19 @@
     bool shouldVerify(Decl *S) { return true; }
 
     // Default cases for whether we should verify a checked subtree.
-    bool shouldVerifyChecked(Expr *E) { return !E->getType().isNull(); }
+    bool shouldVerifyChecked(Expr *E) {
+      if (!E->getType()) {
+        // For @objc enums, we serialize the pre-type-checked integer
+        // literal raw values, and thus when they are deserialized
+        // they do not have a type on them.
+        if (!isa<IntegerLiteralExpr>(E)) {
+          Out << "expression has no type\n";
+          E->print(Out);
+          abort();
+        }
+      }
+      return true;
+    }
     bool shouldVerifyChecked(Stmt *S) { return true; }
     bool shouldVerifyChecked(Pattern *S) { return S->hasType(); }
     bool shouldVerifyChecked(Decl *S) { return true; }
@@ -506,8 +518,9 @@
       // Some imported expressions don't have types, even in checked mode.
       // TODO: eliminate all these
       if (!E->getType()) {
-        // The raw value of an imported EnumElementDecl doesn't seem to have
-        // a type for some reason.
+        // For @objc enums, we serialize the pre-type-checked integer
+        // literal raw values, and thus when they are deserialized
+        // they do not have a type on them.
         if (!isa<IntegerLiteralExpr>(E)) {
           Out << "expression has no type\n";
           E->print(Out);
@@ -519,7 +532,7 @@
       // Require an access kind to be set on every l-value expression.
       // Note that the empty tuple type is assignable but usually isn't
       // an l-value, so we have to be conservative there.
-      if (E->getType()->isLValueType() != E->hasLValueAccessKind() &&
+      if (E->getType()->hasLValueType() != E->hasLValueAccessKind() &&
           !(E->hasLValueAccessKind() && E->getType()->isAssignableType())) {
         Out << "l-value expression does not have l-value access kind set\n";
         E->print(Out);
@@ -697,6 +710,11 @@
       if (!shouldVerify(cast<Expr>(expr)))
         return false;
 
+      // In rare instances we clear the opaque value because we no
+      // longer have a subexpression that references it.
+      if (!expr->getOpaqueValue())
+        return true;
+
       assert(!OpaqueValues.count(expr->getOpaqueValue()));
       OpaqueValues[expr->getOpaqueValue()] = 0;
       assert(OpenedExistentialArchetypes.count(expr->getOpenedArchetype())==0);
@@ -705,6 +723,11 @@
     }
 
     void cleanup(OpenExistentialExpr *expr) {
+      // In rare instances we clear the opaque value because we no
+      // longer have a subexpression that references it.
+      if (!expr->getOpaqueValue())
+        return;
+
       assert(OpaqueValues.count(expr->getOpaqueValue()));
       OpaqueValues.erase(expr->getOpaqueValue());
       assert(OpenedExistentialArchetypes.count(expr->getOpenedArchetype())==1);
@@ -1646,7 +1669,7 @@
     }
 
     void verifyChecked(OptionalEvaluationExpr *E) {
-      if (E->getType()->isLValueType()) {
+      if (E->getType()->hasLValueType()) {
         Out << "Optional evaluation should not produce an lvalue";
         E->print(Out);
         abort();
@@ -2552,18 +2575,8 @@
       // dependent member types.
       // FIXME: This is a general property of the type system.
       auto interfaceTy = AFD->getInterfaceType();
-      Type unresolvedDependentTy;
-      interfaceTy.findIf([&](Type type) -> bool {
-        if (auto dependent = type->getAs<DependentMemberType>()) {
-          if (dependent->getAssocType() == nullptr) {
-            unresolvedDependentTy = dependent;
-            return true;
-          }
-        }
-        return false;
-      });
-
-      if (unresolvedDependentTy) {
+      if (auto unresolvedDependentTy
+            = interfaceTy->findUnresolvedDependentMemberType()) {
         Out << "Unresolved dependent member type ";
         unresolvedDependentTy->print(Out);
         abort();
@@ -2983,23 +2996,23 @@
                         [&]{ S->print(Out); });
     }
 
-    void checkSourceRanges(IfConfigStmt *S) {
-      checkSourceRangesBase(S);
+    void checkSourceRanges(IfConfigDecl *ICD) {
+      checkSourceRangesBase(ICD);
 
-      SourceLoc Location = S->getStartLoc();
-      for (auto &Clause : S->getClauses()) {
+      SourceLoc Location = ICD->getStartLoc();
+      for (auto &Clause : ICD->getClauses()) {
         // Clause start, note that the first clause start location is the
         // same as that of the whole statement
-        if (Location == S->getStartLoc()) {
+        if (Location == ICD->getStartLoc()) {
           if (Location != Clause.Loc) {
-            Out << "bad start location of IfConfigStmt first clause\n";
-            S->print(Out);
+            Out << "bad start location of IfConfigDecl first clause\n";
+            ICD->print(Out);
             abort();
           }
         } else {
           if (!Ctx.SourceMgr.isBeforeInBuffer(Location, Clause.Loc)) {
-            Out << "bad start location of IfConfigStmt clause\n";
-            S->print(Out);
+            Out << "bad start location of IfConfigDecl clause\n";
+            ICD->print(Out);
             abort();
           }
         }
@@ -3009,8 +3022,8 @@
         Expr *Cond = Clause.Cond;
         if (Cond) {
           if (!Ctx.SourceMgr.isBeforeInBuffer(Location, Cond->getStartLoc())) {
-            Out << "invalid IfConfigStmt clause condition start location\n";
-            S->print(Out);
+            Out << "invalid IfConfigDecl clause condition start location\n";
+            ICD->print(Out);
             abort();
           }
           Location = Cond->getEndLoc();
@@ -3025,8 +3038,8 @@
           }
           
           if (!Ctx.SourceMgr.isBeforeInBuffer(StoredLoc, StartLocation)) {
-            Out << "invalid IfConfigStmt clause element start location\n";
-            S->print(Out);
+            Out << "invalid IfConfigDecl clause element start location\n";
+            ICD->print(Out);
             abort();
           }
           
@@ -3038,9 +3051,9 @@
         }
       }
 
-      if (Ctx.SourceMgr.isBeforeInBuffer(S->getEndLoc(), Location)) {
-        Out << "invalid IfConfigStmt end location\n";
-        S->print(Out);
+      if (Ctx.SourceMgr.isBeforeInBuffer(ICD->getEndLoc(), Location)) {
+        Out << "invalid IfConfigDecl end location\n";
+        ICD->print(Out);
         abort();
       }
     }
diff --git a/lib/AST/ASTWalker.cpp b/lib/AST/ASTWalker.cpp
index f17ad77..f190b4c 100644
--- a/lib/AST/ASTWalker.cpp
+++ b/lib/AST/ASTWalker.cpp
@@ -177,7 +177,7 @@
   }
 
   bool visitIfConfigDecl(IfConfigDecl *ICD) {
-    // By default, just visit the declarations that are actually
+    // By default, just visit the elements that are actually
     // injected into the enclosing context.
     return false;
   }
@@ -1285,14 +1285,6 @@
   return US;
 }
 
-
-Stmt *Traversal::visitIfConfigStmt(IfConfigStmt *ICS) {
-  // Active members are attached to the enclosing declaration, so there's no
-  // need to walk anything within.
-  
-  return ICS;
-}
-
 Stmt *Traversal::visitDoStmt(DoStmt *DS) {
   if (Stmt *S2 = doIt(DS->getBody()))
     DS->setBody(S2);
diff --git a/lib/AST/Attr.cpp b/lib/AST/Attr.cpp
index bb065bb..64f5314 100644
--- a/lib/AST/Attr.cpp
+++ b/lib/AST/Attr.cpp
@@ -493,10 +493,10 @@
     break;
   }
 
-  case DAK_NSKeyedArchiverClassName: {
-    Printer.printAttrName("@NSKeyedArchiverClassName");
+  case DAK_ObjCRuntimeName: {
+    Printer.printAttrName("@objc");
     Printer << "(";
-    auto *attr = cast<NSKeyedArchiverClassNameAttr>(this);
+    auto *attr = cast<ObjCRuntimeNameAttr>(this);
     Printer << "\"" << attr->Name << "\"";
     Printer << ")";
     break;
@@ -571,6 +571,7 @@
   case DAK_AutoClosure:
     return "autoclosure";
   case DAK_ObjC:
+  case DAK_ObjCRuntimeName:
     return "objc";
   case DAK_Inline: {
     switch (cast<InlineAttr>(this)->getKind()) {
@@ -626,8 +627,6 @@
     return "_specialize";
   case DAK_Implements:
     return "_implements";
-  case DAK_NSKeyedArchiverClassName:
-    return "NSKeyedArchiverClassName";
   }
   llvm_unreachable("bad DeclAttrKind");
 }
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index 412a0ab..a98b3ba 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -1165,7 +1165,13 @@
 
   case DeclKind::Class:
     // Final properties can always be direct, even in classes.
-    return !storage->isFinal();
+    if (storage->isFinal())
+      return false;
+    // Extension properties are statically dispatched, unless they're @objc.
+    if (storage->getDeclContext()->isExtensionContext()
+        && !storage->isObjC())
+      return false;
+    return true;
   }
   llvm_unreachable("bad DeclKind");
 }
@@ -1353,7 +1359,8 @@
 
   // Private and (unversioned) internal variables always have a
   // fixed layout.
-  if (getEffectiveAccess() < Accessibility::Public)
+  if (!getFormalAccessScope(/*useDC=*/nullptr,
+                            /*respectVersionedAttr=*/true).isPublic())
     return true;
 
   // Check for an explicit @_fixed_layout attribute.
@@ -1909,18 +1916,18 @@
 
 /// Returns true if \p VD needs to be treated as publicly-accessible
 /// at the SIL, LLVM, and machine levels due to being versioned.
-static bool isVersionedInternalDecl(const ValueDecl *VD) {
-  assert(VD->getFormalAccess() == Accessibility::Internal);
+bool ValueDecl::isVersionedInternalDecl() const {
+  assert(getFormalAccess() == Accessibility::Internal);
 
-  if (VD->getAttrs().hasAttribute<VersionedAttr>())
+  if (getAttrs().hasAttribute<VersionedAttr>())
     return true;
 
-  if (auto *FD = dyn_cast<FuncDecl>(VD))
+  if (auto *FD = dyn_cast<FuncDecl>(this))
     if (auto *ASD = FD->getAccessorStorageDecl())
       if (ASD->getAttrs().hasAttribute<VersionedAttr>())
         return true;
 
-  if (auto *EED = dyn_cast<EnumElementDecl>(VD))
+  if (auto *EED = dyn_cast<EnumElementDecl>(this))
     if (EED->getParentEnum()->getAttrs().hasAttribute<VersionedAttr>())
       return true;
 
@@ -1947,21 +1954,17 @@
 }
 
 Accessibility ValueDecl::getEffectiveAccess() const {
-  Accessibility effectiveAccess = getFormalAccess();
+  auto effectiveAccess = getFormalAccess(/*useDC=*/nullptr,
+                                         /*respectVersionedAttr=*/true);
 
   // Handle @testable.
   switch (effectiveAccess) {
-  case Accessibility::Public:
-    if (getModuleContext()->isTestingEnabled())
-      effectiveAccess = getTestableAccess(this);
-    break;
   case Accessibility::Open:
     break;
+  case Accessibility::Public:
   case Accessibility::Internal:
     if (getModuleContext()->isTestingEnabled())
       effectiveAccess = getTestableAccess(this);
-    else if (isVersionedInternalDecl(this))
-      effectiveAccess = Accessibility::Public;
     break;
   case Accessibility::FilePrivate:
     break;
@@ -2002,23 +2005,28 @@
   return getFormalAccess();
 }
 
-AccessScope ValueDecl::getFormalAccessScope(const DeclContext *useDC) const {
+AccessScope ValueDecl::getFormalAccessScope(const DeclContext *useDC,
+                                            bool respectVersionedAttr) const {
   const DeclContext *result = getDeclContext();
-  Accessibility access = getFormalAccess(useDC);
+  Accessibility access = getFormalAccess(useDC, respectVersionedAttr);
 
   while (!result->isModuleScopeContext()) {
     if (result->isLocalContext() || access == Accessibility::Private)
       return AccessScope(result, true);
 
     if (auto enclosingNominal = dyn_cast<NominalTypeDecl>(result)) {
-      access = std::min(access, enclosingNominal->getFormalAccess(useDC));
+      access = std::min(access,
+                        enclosingNominal->getFormalAccess(useDC,
+                                                          respectVersionedAttr));
 
     } else if (auto enclosingExt = dyn_cast<ExtensionDecl>(result)) {
       // Just check the base type. If it's a constrained extension, Sema should
       // have already enforced access more strictly.
       if (auto extendedTy = enclosingExt->getExtendedType()) {
         if (auto nominal = extendedTy->getAnyNominal()) {
-          access = std::min(access, nominal->getFormalAccess(useDC));
+          access = std::min(access,
+                            nominal->getFormalAccess(useDC,
+                                                     respectVersionedAttr));
         }
       }
 
@@ -2067,10 +2075,52 @@
   return interfaceType->castTo<MetatypeType>()->getInstanceType();
 }
 
+int TypeDecl::compare(const TypeDecl *type1, const TypeDecl *type2) {
+  // Order based on the enclosing declaration.
+  auto dc1 = type1->getDeclContext();
+  auto dc2 = type2->getDeclContext();
+
+  // Prefer lower depths.
+  auto depth1 = dc1->getSemanticDepth();
+  auto depth2 = dc2->getSemanticDepth();
+  if (depth1 != depth2)
+    return depth1 < depth2 ? -1 : +1;
+
+  // Prefer module names earlier in the alphabet.
+  if (dc1->isModuleScopeContext() && dc2->isModuleScopeContext()) {
+    auto module1 = dc1->getParentModule();
+    auto module2 = dc2->getParentModule();
+    if (int result = module1->getName().str().compare(module2->getName().str()))
+      return result;
+  }
+
+  auto nominal1 = dc1->getAsNominalTypeOrNominalTypeExtensionContext();
+  auto nominal2 = dc2->getAsNominalTypeOrNominalTypeExtensionContext();
+  if (static_cast<bool>(nominal1) != static_cast<bool>(nominal2)) {
+    return static_cast<bool>(nominal1) ? -1 : +1;
+  }
+  if (nominal1 && nominal2) {
+    if (int result = compare(nominal1, nominal2))
+      return result;
+  }
+
+  if (int result = type1->getBaseName().getIdentifier().str().compare(
+                                  type2->getBaseName().getIdentifier().str()))
+    return result;
+
+  // Error case: two type declarations that cannot be distinguished.
+  if (type1 < type2)
+    return -1;
+  if (type1 > type2)
+    return +1;
+  return 0;
+}
+
 bool NominalTypeDecl::hasFixedLayout() const {
   // Private and (unversioned) internal types always have a
   // fixed layout.
-  if (getEffectiveAccess() < Accessibility::Public)
+  if (!getFormalAccessScope(/*useDC=*/nullptr,
+                            /*respectVersionedAttr=*/true).isPublic())
     return true;
 
   // Check for an explicit @_fixed_layout attribute.
@@ -2712,6 +2762,8 @@
     return objcClass->getObjCRuntimeNameAsString();
 
   // If there is an 'objc' attribute with a name, use that name.
+  if (auto attr = getAttrs().getAttribute<ObjCRuntimeNameAttr>())
+    return attr->Name;
   if (auto objc = getAttrs().getAttribute<ObjCAttr>()) {
     if (auto name = objc->getName())
       return name->getString(buffer);
@@ -2853,10 +2905,13 @@
         // Only protocols can appear in the inheritance clause
         // of a protocol -- anything else should get diagnosed
         // elsewhere.
-        if (auto *protoTy = type->getAs<ProtocolType>()) {
-          auto *protoDecl = protoTy->getDecl();
-          if (known.insert(protoDecl).second)
-            result.push_back(protoDecl);
+        if (type->isExistentialType()) {
+          auto layout = type->getExistentialLayout();
+          for (auto protoTy : layout.getProtocols()) {
+            auto *protoDecl = protoTy->getDecl();
+            if (known.insert(protoDecl).second)
+              result.push_back(protoDecl);
+          }
         }
       }
     }
diff --git a/lib/AST/DeclContext.cpp b/lib/AST/DeclContext.cpp
index 4926db3..8bfebde 100644
--- a/lib/AST/DeclContext.cpp
+++ b/lib/AST/DeclContext.cpp
@@ -445,6 +445,12 @@
     // outer types.
     return getModuleScopeContext();
   }
+  if (isa<NominalTypeDecl>(this)) {
+    // If we are inside a nominal type that is inside a protocol,
+    // skip the protocol.
+    if (isa<ProtocolDecl>(getParent()))
+      return getModuleScopeContext();
+  }
   return getParent();
 }
 
@@ -544,7 +550,8 @@
 
       // If the function is not externally visible, we will not be serializing
       // its body.
-      if (AFD->getEffectiveAccess() < Accessibility::Public)
+      if (!AFD->getFormalAccessScope(/*useDC=*/nullptr,
+                                     /*respectVersionedAttr=*/true).isPublic())
         break;
 
       // Bodies of public transparent and always-inline functions are
@@ -656,6 +663,30 @@
   return getParent()->isCascadingContextForLookup(true);
 }
 
+unsigned DeclContext::getSyntacticDepth() const {
+  // Module scope == depth 0.
+  if (isModuleScopeContext())
+    return 0;
+
+  return 1 + getParent()->getSyntacticDepth();
+}
+
+unsigned DeclContext::getSemanticDepth() const {
+  // For extensions, count the depth of the nominal type being extended.
+  if (auto ext = dyn_cast<ExtensionDecl>(this)) {
+    if (auto nominal = getAsNominalTypeOrNominalTypeExtensionContext())
+      return nominal->getSemanticDepth();
+
+    return 1;
+  }
+
+  // Module scope == depth 0.
+  if (isModuleScopeContext())
+    return 0;
+
+  return 1 + getParent()->getSemanticDepth();
+}
+
 bool DeclContext::walkContext(ASTWalker &Walker) {
   switch (getContextKind()) {
   case DeclContextKind::Module:
diff --git a/lib/AST/DiagnosticEngine.cpp b/lib/AST/DiagnosticEngine.cpp
index 3068351..c32a9ea 100644
--- a/lib/AST/DiagnosticEngine.cpp
+++ b/lib/AST/DiagnosticEngine.cpp
@@ -429,9 +429,9 @@
     break;
 
   case DiagnosticArgumentKind::ValueDecl:
-    Out << '\'';
+    Out << FormatOpts.OpeningQuotationMark;
     Arg.getAsValueDecl()->getFullName().printPretty(Out);
-    Out << '\'';
+    Out << FormatOpts.ClosingQuotationMark;
     break;
 
   case DiagnosticArgumentKind::Type: {
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp
index 952bbde..de07c17 100644
--- a/lib/AST/Expr.cpp
+++ b/lib/AST/Expr.cpp
@@ -261,22 +261,22 @@
     }
 
     void visitMemberRefExpr(MemberRefExpr *E, AccessKind accessKind) {
-      if (!GetType(E->getBase())->isLValueType()) return;
+      if (!GetType(E->getBase())->hasLValueType()) return;
       visit(E->getBase(), getBaseAccessKind(E->getMember(), accessKind));
     }
     void visitSubscriptExpr(SubscriptExpr *E, AccessKind accessKind) {
-      if (!GetType(E->getBase())->isLValueType()) return;
+      if (!GetType(E->getBase())->hasLValueType()) return;
       visit(E->getBase(), getBaseAccessKind(E->getDecl(), accessKind));
     }
     void visitKeyPathApplicationExpr(KeyPathApplicationExpr *E,
                                      AccessKind accessKind) {
-      if (!GetType(E->getBase())->isLValueType()) return;
-      auto kpDecl = E->getKeyPath()->getType()->castTo<BoundGenericType>()
+      if (!GetType(E->getBase())->hasLValueType()) return;
+      auto kpDecl = GetType(E->getKeyPath())->castTo<BoundGenericType>()
         ->getDecl();
       AccessKind baseAccess;
       // A ReferenceWritableKeyPath only reads its base.
       if (kpDecl ==
-            E->getType()->getASTContext().getReferenceWritableKeyPathDecl())
+          GetType(E)->getASTContext().getReferenceWritableKeyPathDecl())
         baseAccess = AccessKind::Read;
       else
         // Assuming a writable keypath projects a part of the base.
@@ -316,19 +316,25 @@
 
     void visitOpenExistentialExpr(OpenExistentialExpr *E,
                                   AccessKind accessKind) {
-      bool opaqueValueHadAK = E->getOpaqueValue()->hasLValueAccessKind();
-      AccessKind oldOpaqueValueAK =
-        (opaqueValueHadAK ? E->getOpaqueValue()->getLValueAccessKind()
-                          : AccessKind::Read);
+      AccessKind oldOpaqueValueAK;
+      bool opaqueValueHadAK;
+      if (E->getOpaqueValue()) {
+        opaqueValueHadAK = E->getOpaqueValue()->hasLValueAccessKind();
+        oldOpaqueValueAK =
+            (opaqueValueHadAK ? E->getOpaqueValue()->getLValueAccessKind()
+                              : AccessKind::Read);
+      }
 
       visit(E->getSubExpr(), accessKind);
 
-      // Propagate the new access kind from the OVE to the original existential
-      // if we just set or changed it on the OVE.
-      if (E->getOpaqueValue()->hasLValueAccessKind()) {
-        auto newOpaqueValueAK = E->getOpaqueValue()->getLValueAccessKind();
-        if (!opaqueValueHadAK || newOpaqueValueAK != oldOpaqueValueAK)
-          visit(E->getExistentialValue(), newOpaqueValueAK);
+      if (E->getOpaqueValue()) {
+        // Propagate the new access kind from the OVE to the original
+        // existential if we just set or changed it on the OVE.
+        if (E->getOpaqueValue()->hasLValueAccessKind()) {
+          auto newOpaqueValueAK = E->getOpaqueValue()->getLValueAccessKind();
+          if (!opaqueValueHadAK || newOpaqueValueAK != oldOpaqueValueAK)
+            visit(E->getExistentialValue(), newOpaqueValueAK);
+        }
       }
     }
 
@@ -496,6 +502,9 @@
   PASS_THROUGH_REFERENCE(PointerToPointer, getSubExpr);
   PASS_THROUGH_REFERENCE(ForeignObjectConversion, getSubExpr);
   PASS_THROUGH_REFERENCE(UnevaluatedInstance, getSubExpr);
+  PASS_THROUGH_REFERENCE(BridgeToObjC, getSubExpr);
+  PASS_THROUGH_REFERENCE(BridgeFromObjC, getSubExpr);
+  PASS_THROUGH_REFERENCE(ConditionalBridgeFromObjC, getSubExpr);
   NO_REFERENCE(Coerce);
   NO_REFERENCE(ForcedCheckedCast);
   NO_REFERENCE(ConditionalCheckedCast);
@@ -655,7 +664,7 @@
   } while (true);
 }
 
-bool Expr::canAppendCallParentheses() const {
+bool Expr::canAppendPostfixExpression(bool appendingPostfixOperator) const {
   switch (getKind()) {
   case ExprKind::Error:
   case ExprKind::CodeCompletion:
@@ -749,11 +758,13 @@
     return false;
 
   case ExprKind::Call:
-  case ExprKind::PostfixUnary:
   case ExprKind::DotSyntaxCall:
   case ExprKind::ConstructorRefCall:
     return true;
 
+  case ExprKind::PostfixUnary:
+    return !appendingPostfixOperator;
+
   case ExprKind::PrefixUnary:
   case ExprKind::Binary:
     return false;
@@ -781,10 +792,13 @@
   case ExprKind::ForeignObjectConversion:
   case ExprKind::UnevaluatedInstance:
   case ExprKind::EnumIsCase:
+  case ExprKind::ConditionalBridgeFromObjC:
+  case ExprKind::BridgeFromObjC:
+  case ExprKind::BridgeToObjC:
     // Implicit conversion nodes have no syntax of their own; defer to the
     // subexpression.
     return cast<ImplicitConversionExpr>(this)->getSubExpr()
-      ->canAppendCallParentheses();
+      ->canAppendPostfixExpression(appendingPostfixOperator);
 
   case ExprKind::ForcedCheckedCast:
   case ExprKind::ConditionalCheckedCast:
@@ -1842,12 +1856,12 @@
     P->setDeclContextOfParamDecls(this);
 }
 
+Type AbstractClosureExpr::getResultType(
+    llvm::function_ref<Type(const Expr *)> getType) const {
+  if (getType(this)->hasError())
+    return getType(this);
 
-Type AbstractClosureExpr::getResultType() const {
-  if (getType()->hasError())
-    return getType();
-
-  return getType()->castTo<FunctionType>()->getResult();
+  return getType(this)->castTo<FunctionType>()->getResult();
 }
 
 bool AbstractClosureExpr::isBodyThrowing() const {
diff --git a/lib/AST/GenericEnvironment.cpp b/lib/AST/GenericEnvironment.cpp
index 1292e2f..979f899 100644
--- a/lib/AST/GenericEnvironment.cpp
+++ b/lib/AST/GenericEnvironment.cpp
@@ -33,17 +33,6 @@
                           Type());
 }
 
-/// Compute the depth of the \c DeclContext chain.
-static unsigned declContextDepth(const DeclContext *dc) {
-  unsigned depth = 0;
-  while (auto parentDC = dc->getParent()) {
-    ++depth;
-    dc = parentDC;
-  }
-
-  return depth;
-}
-
 void GenericEnvironment::setOwningDeclContext(DeclContext *newOwningDC) {
   if (!OwningDC) {
     OwningDC = newOwningDC;
@@ -54,8 +43,8 @@
     return;
 
   // Find the least common ancestor context to be the owner.
-  unsigned oldDepth = declContextDepth(OwningDC);
-  unsigned newDepth = declContextDepth(newOwningDC);
+  unsigned oldDepth = OwningDC->getSyntacticDepth();
+  unsigned newDepth = newOwningDC->getSyntacticDepth();
 
   while (oldDepth > newDepth) {
     OwningDC = OwningDC->getParent();
diff --git a/lib/AST/GenericSignature.cpp b/lib/AST/GenericSignature.cpp
index 65cc6b6..880c4d8 100644
--- a/lib/AST/GenericSignature.cpp
+++ b/lib/AST/GenericSignature.cpp
@@ -869,11 +869,10 @@
       Type storedType = eraseAssociatedTypes(source->getStoredType());
 
       // Dig out the potential archetype for this stored type.
-      // FIXME: CompleteWellFormed here?
       auto pa =
         reqSigBuilder.resolveArchetype(
                                  storedType,
-                                 ArchetypeResolutionKind::AlwaysPartial);
+                                 ArchetypeResolutionKind::CompleteWellFormed);
       auto equivClass = pa->getOrCreateEquivalenceClass();
 
       // Find the conformance of this potential archetype to the protocol in
@@ -906,7 +905,8 @@
 
     // We are at an explicit or inferred requirement.
     assert(source->kind == RequirementSource::Explicit ||
-           source->kind == RequirementSource::Inferred);
+           source->kind == RequirementSource::Inferred ||
+           source->kind == RequirementSource::QuietlyInferred);
 
     // Skip trivial path elements. These occur when querying a requirement
     // signature.
diff --git a/lib/AST/GenericSignatureBuilder.cpp b/lib/AST/GenericSignatureBuilder.cpp
index 344891f..2d67320 100644
--- a/lib/AST/GenericSignatureBuilder.cpp
+++ b/lib/AST/GenericSignatureBuilder.cpp
@@ -113,6 +113,7 @@
   switch (kind) {
   case Explicit:
   case Inferred:
+  case QuietlyInferred:
   case RequirementSignatureSelf:
   case NestedTypeNameMatch:
     switch (storageKind) {
@@ -200,13 +201,16 @@
   return nullptr;
 }
 
-bool RequirementSource::isInferredRequirement() const {
+bool RequirementSource::isInferredRequirement(bool includeQuietInferred) const {
   for (auto source = this; source; source = source->parent) {
     switch (source->kind) {
     case Inferred:
     case InferredProtocolRequirement:
       return true;
 
+    case QuietlyInferred:
+      return includeQuietInferred;
+
     case Concrete:
     case Explicit:
     case NestedTypeNameMatch:
@@ -222,7 +226,7 @@
 }
 
 unsigned RequirementSource::classifyDiagKind() const {
-  if (isInferredRequirement()) return 2;
+  if (isInferredRequirement(/*includeQuietInferred=*/false)) return 2;
   if (isDerivedRequirement()) return 1;
   return 0;
 }
@@ -231,6 +235,7 @@
   switch (kind) {
   case Explicit:
   case Inferred:
+  case QuietlyInferred:
     return false;
 
   case NestedTypeNameMatch:
@@ -263,6 +268,7 @@
     switch (source->kind) {
     case RequirementSource::Explicit:
     case RequirementSource::Inferred:
+    case RequirementSource::QuietlyInferred:
     case RequirementSource::RequirementSignatureSelf:
       for (auto parent = currentPA->getParent(); parent;
            parent = parent->getParent()) {
@@ -397,6 +403,7 @@
       return false;
     case Explicit:
     case Inferred:
+    case QuietlyInferred:
     case NestedTypeNameMatch:
     case RequirementSignatureSelf:
       rootPA = parentPA;
@@ -464,14 +471,15 @@
 
 const RequirementSource *RequirementSource::forInferred(
                                               PotentialArchetype *root,
-                                              const TypeRepr *typeRepr) {
+                                              const TypeRepr *typeRepr,
+                                              bool quietly) {
   WrittenRequirementLoc writtenLoc = typeRepr;
   auto &builder = *root->getBuilder();
   REQUIREMENT_SOURCE_FACTORY_BODY(
-                        (nodeID, Inferred, nullptr, root,
-                         writtenLoc.getOpaqueValue(), nullptr),
-                        (Inferred, root, nullptr, writtenLoc),
-                        0, writtenLoc);
+      (nodeID, quietly ? QuietlyInferred : Inferred, nullptr, root,
+       writtenLoc.getOpaqueValue(), nullptr),
+       (quietly ? QuietlyInferred : Inferred, root, nullptr, writtenLoc),
+       0, writtenLoc);
 }
 
 const RequirementSource *RequirementSource::forRequirementSignature(
@@ -589,6 +597,7 @@
   case RequirementSource::NestedTypeNameMatch:
   case RequirementSource::Explicit:
   case RequirementSource::Inferred:
+  case RequirementSource::QuietlyInferred:
   case RequirementSource::RequirementSignatureSelf: {
     auto rootPA = getRootPotentialArchetype();
     if (visitor(rootPA, this)) return nullptr;
@@ -777,6 +786,10 @@
     out << "Inferred";
     break;
 
+  case QuietlyInferred:
+    out << "Quietly inferred";
+    break;
+
   case NestedTypeNameMatch:
     out << "Nested type match";
     break;
@@ -873,7 +886,12 @@
     return RequirementSource::forAbstract(pa);
 
   case Inferred:
-    return RequirementSource::forInferred(pa, storage.get<const TypeRepr *>());
+    return RequirementSource::forInferred(pa, storage.get<const TypeRepr *>(),
+                                          /*quietly=*/false);
+
+  case QuietlyInferred:
+    return RequirementSource::forInferred(pa, storage.get<const TypeRepr *>(),
+                                          /*quietly=*/true);
 
   case AbstractProtocol: {
     // Derive the dependent type on which this requirement was written. It is
@@ -926,6 +944,7 @@
     return true;
 
   case Inferred:
+  case QuietlyInferred:
   case NestedTypeNameMatch:
     return false;
 
@@ -941,6 +960,7 @@
     case RequirementSource::Concrete:
     case RequirementSource::Explicit:
     case RequirementSource::Inferred:
+    case RequirementSource::QuietlyInferred:
     case RequirementSource::NestedTypeNameMatch:
     case RequirementSource::Parent:
     case RequirementSource::ProtocolRequirement:
@@ -959,6 +979,7 @@
         == RequirementSource::RequirementSignatureSelf;
 
     case RequirementSource::Inferred:
+    case RequirementSource::QuietlyInferred:
     case RequirementSource::InferredProtocolRequirement:
     case RequirementSource::RequirementSignatureSelf:
     case RequirementSource::Concrete:
@@ -972,12 +993,13 @@
 
 
 FloatingRequirementSource FloatingRequirementSource::asInferred(
-                                              const TypeRepr *typeRepr) const {
+                                                  const TypeRepr *typeRepr) const {
   switch (kind) {
   case Explicit:
-    return forInferred(typeRepr);
+    return forInferred(typeRepr, /*quietly=*/false);
 
   case Inferred:
+  case QuietlyInferred:
   case Resolved:
   case NestedTypeNameMatch:
     return *this;
@@ -1057,8 +1079,9 @@
   ProtocolDecl *proto = nullptr;
   if (auto assocType = getResolvedAssociatedType()) {
     proto = assocType->getProtocol();
-  } else if (auto typeAlias = getTypeAliasDecl()) {
-    proto = typeAlias->getParent()->getAsProtocolOrProtocolExtensionContext();
+  } else if (auto concreteDecl = getConcreteTypeDecl()) {
+    proto = concreteDecl->getDeclContext()
+              ->getAsProtocolOrProtocolExtensionContext();
   }
 
   if (proto) {
@@ -1086,20 +1109,20 @@
        GenericSignatureBuilder &builder) {
   assert(isUnresolvedNestedType && "associated type is already resolved");
   isUnresolvedNestedType = false;
-  identifier.assocTypeOrAlias = assocType;
+  identifier.assocTypeOrConcrete = assocType;
   assert(assocType->getName() == getNestedName());
   assert(builder.Impl->NumUnresolvedNestedTypes > 0 &&
          "Mismatch in number of unresolved nested types");
   --builder.Impl->NumUnresolvedNestedTypes;
 }
 
-void GenericSignatureBuilder::PotentialArchetype::resolveTypeAlias(
-       TypeAliasDecl *typealias,
+void GenericSignatureBuilder::PotentialArchetype::resolveConcreteType(
+       TypeDecl *concreteDecl,
        GenericSignatureBuilder &builder) {
   assert(isUnresolvedNestedType && "nested type is already resolved");
   isUnresolvedNestedType = false;
-  identifier.assocTypeOrAlias = typealias;
-  assert(typealias->getName() == getNestedName());
+  identifier.assocTypeOrConcrete = concreteDecl;
+  assert(concreteDecl->getName() == getNestedName());
   assert(builder.Impl->NumUnresolvedNestedTypes > 0 &&
          "Mismatch in number of unresolved nested types");
   --builder.Impl->NumUnresolvedNestedTypes;
@@ -1285,7 +1308,7 @@
   if (!superSource) return;
 
   auto assocType = nestedPA->getResolvedAssociatedType();
-  assert(assocType && "Not resolved to an associated type?");
+  if (!assocType) return;
 
   // Dig out the type witness.
   auto superConformance = superSource->getProtocolConformance();
@@ -1408,30 +1431,6 @@
   return 0;
 }
 
-/// Compare two typealiases in protocols.
-static int compareTypeAliases(TypeAliasDecl *typealias1,
-                              TypeAliasDecl *typealias2) {
-  // - by name.
-  if (int result = typealias1->getName().str().compare(
-                                              typealias2->getName().str()))
-    return result;
-
-  // - by protocol, so t_n_m.`P.T` < t_n_m.`Q.T` (given P < Q)
-  auto proto1 =
-    typealias1->getDeclContext()->getAsProtocolOrProtocolExtensionContext();
-  auto proto2 =
-    typealias2->getDeclContext()->getAsProtocolOrProtocolExtensionContext();
-  if (int compareProtocols = ProtocolType::compareProtocols(&proto1, &proto2))
-    return compareProtocols;
-
-  // Error case: if we have two associated types with the same name in the
-  // same protocol, just tie-break based on address.
-  if (typealias1 != typealias2)
-    return typealias1 < typealias2 ? -1 : +1;
-
-  return 0;
-}
-
 /// Canonical ordering for dependent types in generic signatures.
 static int compareDependentTypes(PotentialArchetype * const* pa,
                                  PotentialArchetype * const* pb) {
@@ -1441,12 +1440,12 @@
   if (a == b)
     return 0;
 
-  // Typealiases must be ordered *after* everything else, to ensure they
-  // don't become representatives in the case where a typealias is equated
+  // Concrete types must be ordered *after* everything else, to ensure they
+  // don't become representatives in the case where a concrete type is equated
   // with an associated type.
   if (a->getParent() && b->getParent() &&
-      !!a->getTypeAliasDecl() != !!b->getTypeAliasDecl())
-    return a->getTypeAliasDecl() ? +1 : -1;
+      !!a->getConcreteTypeDecl() != !!b->getConcreteTypeDecl())
+    return a->getConcreteTypeDecl() ? +1 : -1;
 
   // Types that are equivalent to concrete types follow types that are still
   // type parameters.
@@ -1489,12 +1488,13 @@
       return +1;
   }
 
-  // Make sure typealiases are properly ordered, to avoid crashers.
-  if (auto *aa = a->getTypeAliasDecl()) {
-    auto *ab = b->getTypeAliasDecl();
+  // Make sure concrete type declarations are properly ordered, to avoid
+  // crashers.
+  if (auto *aa = a->getConcreteTypeDecl()) {
+    auto *ab = b->getConcreteTypeDecl();
     assert(ab != nullptr && "Should have handled this case above");
 
-    if (int result = compareTypeAliases(aa, ab))
+    if (int result = TypeDecl::compare(aa, ab))
       return result;
   }
 
@@ -1575,11 +1575,11 @@
     PotentialArchetype *pa;
 
     void operator()(Type type1, Type type2) const {
-      if (pa->getParent() && pa->getTypeAliasDecl() &&
+      if (pa->getParent() && pa->getConcreteTypeDecl() &&
           source->getLoc().isInvalid()) {
-        diags.diagnose(pa->getTypeAliasDecl()->getLoc(),
+        diags.diagnose(pa->getConcreteTypeDecl()->getLoc(),
                        diag::protocol_typealias_conflict,
-                       pa->getTypeAliasDecl()->getName(),
+                       pa->getConcreteTypeDecl()->getName(),
                        type1, type2);
         return;
       }
@@ -1658,9 +1658,9 @@
 }
 
 PotentialArchetype *PotentialArchetype::getNestedType(
-                                            TypeAliasDecl *typealias,
+                                            TypeDecl *getConcreteTypeDecl,
                                             GenericSignatureBuilder &builder) {
-  return updateNestedTypeForConformance(typealias,
+  return updateNestedTypeForConformance(getConcreteTypeDecl,
                                         NestedTypeUpdate::AddIfMissing);
 }
 
@@ -1668,24 +1668,28 @@
                                            Identifier name,
                                            GenericSignatureBuilder &builder,
                                            NestedTypeUpdate kind) {
-  // Look for the best associated type or typealias within the protocols
+  // Look for the best associated type or concrete type within the protocols
   // we know about.
   AssociatedTypeDecl *bestAssocType = nullptr;
-  TypeAliasDecl *bestTypeAlias = nullptr;
-  SmallVector<TypeAliasDecl *, 4> typealiases;
+  TypeDecl *bestConcreteDecl = nullptr;
+  SmallVector<TypeDecl *, 4> concreteDecls;
   auto rep = getRepresentative();
   for (auto proto : rep->getConformsTo()) {
-    // Look for an associated type and/or typealias with this name.
+    // Look for an associated type and/or concrete type with this name.
     AssociatedTypeDecl *assocType = nullptr;
-    TypeAliasDecl *typealias = nullptr;
+    TypeDecl *concreteDecl = nullptr;
     for (auto member : proto->lookupDirect(name,
                                            /*ignoreNewExtensions=*/true)) {
       if (!assocType)
         assocType = dyn_cast<AssociatedTypeDecl>(member);
 
-      // FIXME: Filter out typealiases that aren't in the protocol itself?
-      if (!typealias)
-        typealias = dyn_cast<TypeAliasDecl>(member);
+      // FIXME: Filter out type declarations that aren't in the protocol itself?
+      if (!concreteDecl && !isa<AssociatedTypeDecl>(member)) {
+        if (!member->hasInterfaceType())
+          builder.getLazyResolver()->resolveDeclSignature(member);
+        if (member->hasInterfaceType())
+          concreteDecl = dyn_cast<TypeDecl>(member);
+      }
     }
 
     if (assocType &&
@@ -1693,13 +1697,14 @@
          compareAssociatedTypes(assocType, bestAssocType) < 0))
       bestAssocType = assocType;
 
-    if (typealias) {
-      // Record every typealias.
-      typealiases.push_back(typealias);
+    if (concreteDecl) {
+      // Record every concrete type.
+      concreteDecls.push_back(concreteDecl);
 
-      // Track the best typealias.
-      if (!bestTypeAlias || compareTypeAliases(typealias, bestTypeAlias) < 0)
-        bestTypeAlias = typealias;
+      // Track the best concrete type.
+      if (!bestConcreteDecl ||
+          TypeDecl::compare(concreteDecl, bestConcreteDecl) < 0)
+        bestConcreteDecl = concreteDecl;
     }
   }
 
@@ -1710,25 +1715,47 @@
                                               NestedTypeUpdate::AddIfMissing);
   }
 
-  // If we have an associated type, drop any typealiases that aren't in
+  // If we have an associated type, drop any concrete decls that aren't in
   // the same module as the protocol.
   // FIXME: This is an unprincipled hack for an unprincipled feature.
-  typealiases.erase(
-    std::remove_if(typealiases.begin(), typealiases.end(),
-                   [&](TypeAliasDecl *typealias) {
-      return typealias->getParentModule() !=
-        typealias->getDeclContext()
+  concreteDecls.erase(
+    std::remove_if(concreteDecls.begin(), concreteDecls.end(),
+                   [&](TypeDecl *concreteDecl) {
+      return concreteDecl->getDeclContext()->getParentModule() !=
+        concreteDecl->getDeclContext()
           ->getAsNominalTypeOrNominalTypeExtensionContext()->getParentModule();
     }),
-    typealiases.end());
+    concreteDecls.end());
 
-  // Update for all of the typealiases with this name, which will introduce
+  // If we haven't found anything yet but have a superclass, look for a type
+  // in the superclass.
+  if (!resultPA && concreteDecls.empty()) {
+    if (auto superclass = getSuperclass()) {
+      if (auto classDecl = superclass->getClassOrBoundGenericClass()) {
+        SmallVector<ValueDecl *, 2> superclassMembers;
+        classDecl->getParentModule()->lookupQualified(superclass, name, NL_QualifiedDefault | NL_OnlyTypes | NL_ProtocolMembers, nullptr,
+            superclassMembers);
+        for (auto member : superclassMembers) {
+          if (auto concreteDecl = dyn_cast<TypeDecl>(member)) {
+            // Track the best concrete type.
+            if (!bestConcreteDecl ||
+                TypeDecl::compare(concreteDecl, bestConcreteDecl) < 0)
+              bestConcreteDecl = concreteDecl;
+
+            concreteDecls.push_back(concreteDecl);
+          }
+        }
+      }
+    }
+  }
+
+  // Update for all of the concrete decls with this name, which will introduce
   // various same-type constraints.
-  for (auto typealias : typealiases) {
-    auto typealiasPA = updateNestedTypeForConformance(typealias,
+  for (auto concreteDecl : concreteDecls) {
+    auto concreteDeclPA = updateNestedTypeForConformance(concreteDecl,
                                           NestedTypeUpdate::AddIfMissing);
-    if (!resultPA && typealias == bestTypeAlias)
-      resultPA = typealiasPA;
+    if (!resultPA && concreteDecl == bestConcreteDecl)
+      resultPA = concreteDeclPA;
   }
 
   if (resultPA)
@@ -1771,48 +1798,53 @@
                                                        Identifier name,
                                                        ProtocolDecl *proto,
                                                        NestedTypeUpdate kind) {
-  /// Determine whether there is an associated type or typealias with this name
-  /// in this protocol. If not, there's nothing to do.
+  /// Determine whether there is an associated type or concrete type with this
+  /// name in this protocol. If not, there's nothing to do.
   AssociatedTypeDecl *assocType = nullptr;
-  TypeAliasDecl *typealias = nullptr;
+  TypeDecl *concreteDecl = nullptr;
   for (auto member : proto->lookupDirect(name, /*ignoreNewExtensions=*/true)) {
     if (!assocType)
       assocType = dyn_cast<AssociatedTypeDecl>(member);
 
-    // FIXME: Filter out typealiases that aren't in the protocol itself?
-    if (!typealias)
-      typealias = dyn_cast<TypeAliasDecl>(member);
+    // FIXME: Filter out concrete types that aren't in the protocol itself?
+    if (!concreteDecl && !isa<AssociatedTypeDecl>(member)) {
+      if (!member->hasInterfaceType())
+        proto->getASTContext().getLazyResolver()->resolveDeclSignature(member);
+      if (member->hasInterfaceType())
+        concreteDecl = dyn_cast<TypeDecl>(member);
+    }
   }
 
-  // There is no associated type or typealias with this name in this protocol
-  if (!assocType && !typealias)
+  // There is no associated type or concrete type with this name in this
+  // protocol
+  if (!assocType && !concreteDecl)
     return nullptr;
 
-  // If we had both an associated type and a typealias, ignore the latter. This
-  // is for ill-formed code.
+  // If we had both an associated type and a concrete type, ignore the latter.
+  // This is for ill-formed code.
   if (assocType)
     return updateNestedTypeForConformance(assocType, kind);
 
-  return updateNestedTypeForConformance(typealias, kind);
+  return updateNestedTypeForConformance(concreteDecl, kind);
 }
 
 PotentialArchetype *PotentialArchetype::updateNestedTypeForConformance(
-                      PointerUnion<AssociatedTypeDecl *, TypeAliasDecl *> type,
+                      PointerUnion<AssociatedTypeDecl *, TypeDecl *> type,
                       NestedTypeUpdate kind) {
   auto *assocType = type.dyn_cast<AssociatedTypeDecl *>();
-  auto *typealias = type.dyn_cast<TypeAliasDecl *>();
-  if (!assocType && !typealias)
+  auto *concreteDecl = type.dyn_cast<TypeDecl *>();
+  if (!assocType && !concreteDecl)
     return nullptr;
 
-  Identifier name = assocType ? assocType->getName() : typealias->getName();
+  Identifier name = assocType ? assocType->getName() : concreteDecl->getName();
   ProtocolDecl *proto =
     assocType ? assocType->getProtocol()
-              : typealias->getDeclContext()
+              : concreteDecl->getDeclContext()
                   ->getAsProtocolOrProtocolExtensionContext();
 
   // Look for either an unresolved potential archetype (which we can resolve
   // now) or a potential archetype with the appropriate associated type or
-  // typealias.
+  // concrete type.
   PotentialArchetype *resultPA = nullptr;
   auto knownNestedTypes = NestedTypes.find(name);
   bool shouldUpdatePA = false;
@@ -1824,7 +1856,7 @@
         if (assocType) {
           existingPA->resolveAssociatedType(assocType, builder);
         } else {
-          existingPA->resolveTypeAlias(typealias, builder);
+          existingPA->resolveConcreteType(concreteDecl, builder);
         }
 
         // We've resolved this nested type; nothing more to do.
@@ -1839,8 +1871,8 @@
         break;
       }
 
-      // Do we have a typealias match?
-      if (typealias && existingPA->getTypeAliasDecl() == typealias) {
+      // Do we have a concrete type match?
+      if (concreteDecl && existingPA->getConcreteTypeDecl() == concreteDecl) {
         resultPA = existingPA;
         break;
       }
@@ -1860,7 +1892,7 @@
       if (assocType)
         resultPA = new PotentialArchetype(this, assocType);
       else
-        resultPA = new PotentialArchetype(this, typealias);
+        resultPA = new PotentialArchetype(this, concreteDecl);
 
       auto &allNested = NestedTypes[name];
       allNested.push_back(resultPA);
@@ -1903,28 +1935,38 @@
 
   // If we have a potential archetype that requires more processing, do so now.
   if (shouldUpdatePA) {
-    // For typealiases, introduce a same-type requirement to the aliased type.
-    if (typealias) {
+    // For concrete types, introduce a same-type requirement to the aliased
+    // type.
+    if (concreteDecl) {
       // FIXME (recursive decl validation): if the alias doesn't have an
       // interface type when getNestedType is called while building a
       // protocol's generic signature (i.e. during validation), then it'll
       // fail completely, because building that alias's interface type
       // requires the protocol to be validated. This seems to occur when the
       // alias's RHS involves archetypes from the protocol.
-      if (!typealias->hasInterfaceType())
-        builder.getLazyResolver()->resolveDeclSignature(typealias);
-      if (typealias->hasInterfaceType()) {
-        // The protocol typealias has an underlying type written in terms
+      if (!concreteDecl->hasInterfaceType())
+        builder.getLazyResolver()->resolveDeclSignature(concreteDecl);
+      if (concreteDecl->hasInterfaceType()) {
+        // The protocol concrete type has an underlying type written in terms
         // of the protocol's 'Self' type.
-        auto type = typealias->getDeclaredInterfaceType();
+        auto type = concreteDecl->getDeclaredInterfaceType();
 
-        // Substitute in the type of the current PotentialArchetype in
-        // place of 'Self' here.
-        auto subMap = SubstitutionMap::getProtocolSubstitutions(
-          proto, getDependentType(/*genericParams=*/{},
-                                  /*allowUnresolved=*/true),
-          ProtocolConformanceRef(proto));
-        type = type.subst(subMap, SubstFlags::UseErrorType);
+        if (proto) {
+          // Substitute in the type of the current PotentialArchetype in
+          // place of 'Self' here.
+          auto subMap = SubstitutionMap::getProtocolSubstitutions(
+            proto, getDependentType(/*genericParams=*/{},
+                                    /*allowUnresolved=*/true),
+            ProtocolConformanceRef(proto));
+          type = type.subst(subMap, SubstFlags::UseErrorType);
+        } else {
+          // Substitute in the superclass type.
+          auto superclass = getSuperclass();
+          auto superclassDecl = superclass->getClassOrBoundGenericClass();
+          type = superclass->getTypeOfMember(
+                   superclassDecl->getParentModule(), concreteDecl,
+                   concreteDecl->getDeclaredInterfaceType());
+        }
 
         builder.addSameTypeRequirement(
                          UnresolvedType(resultPA),
@@ -1936,8 +1978,12 @@
 
     // If there's a superclass constraint that conforms to the protocol,
     // add the appropriate same-type relationship.
-    if (auto superSource = builder.resolveSuperConformance(this, proto))
-      maybeAddSameTypeRequirementForNestedType(resultPA, superSource, builder);
+    if (proto) {
+      if (auto superSource = builder.resolveSuperConformance(this, proto)) {
+        maybeAddSameTypeRequirementForNestedType(resultPA, superSource,
+                                                 builder);
+      }
+    }
 
     // We know something concrete about the parent PA, so we need to propagate
     // that information to this new archetype.
@@ -2398,18 +2444,6 @@
     if (!pa) return None;
   }
 
-  auto rep = pa->getRepresentative();
-  if (!rep->getParent() || !rep->getTypeAliasDecl())
-    return ResolvedType::forPotentialArchetype(pa);
-
-  // We're assuming that an equivalence class with a type alias representative
-  // doesn't have a "true" (i.e. associated type) potential archetype.
-  assert(llvm::all_of(rep->getEquivalenceClassMembers(),
-                      [&](PotentialArchetype *pa) {
-                        return pa->getParent() && pa->getTypeAliasDecl();
-                      }) &&
-         "unexpected typealias representative with non-typealias equivalent");
-
   return ResolvedType::forPotentialArchetype(pa);
 }
 
@@ -2607,16 +2641,16 @@
                                assocType);
     }
 
-    if (auto typealias = dyn_cast<TypeAliasDecl>(typeDecl)) {
-      // Resolve the underlying type, if we haven't done so yet.
-      if (!typealias->hasInterfaceType()) {
-        getLazyResolver()->resolveDeclSignature(typealias);
-      }
+    // Resolve the underlying type, if we haven't done so yet.
+    if (!typeDecl->hasInterfaceType()) {
+      getLazyResolver()->resolveDeclSignature(typeDecl);
+    }
 
+    if (auto typealias = dyn_cast<TypeAliasDecl>(typeDecl)) {
       return typealias->getUnderlyingTypeLoc().getType();
     }
 
-    return Type();
+    return typeDecl->getDeclaredInterfaceType();
   };
 
   // An inferred same-type requirement between the two type declarations
@@ -2845,11 +2879,24 @@
     }
   };
 
+  // Local function to resolve nested types found in the superclass.
+  auto updateSuperclassNestedTypes = [&] {
+    for (auto &nested : T->getNestedTypes()) {
+      if (nested.second.empty()) continue;
+      if (nested.second.front()->isUnresolved()) {
+        (void)T->getNestedArchetypeAnchor(nested.first, *this,
+          PotentialArchetype::NestedTypeUpdate::ResolveExisting);
+      }
+    }
+  };
+
   // If we haven't yet recorded a superclass constraint for this equivalence
   // class, do so now.
   if (!equivClass->superclass) {
     equivClass->superclass = superclass;
     updateSuperclassConformances();
+    updateSuperclassNestedTypes();
+
     // Presence of a superclass constraint implies a _Class layout
     // constraint.
     auto layoutReqSource = source->viaSuperclass(*this, nullptr);
@@ -2880,6 +2927,7 @@
 
     // We've strengthened the bound, so update superclass conformances.
     updateSuperclassConformances();
+    updateSuperclassNestedTypes();
     return;
   }
 
@@ -3388,8 +3436,10 @@
     }
 
     // We are inferring requirements.
-    if (forInferred)
-      return FloatingRequirementSource::forInferred(typeRepr);
+    if (forInferred) {
+      return FloatingRequirementSource::forInferred(typeRepr,
+                                                    /*quietly=*/false);
+    }
 
     // Explicit requirement.
     if (typeRepr)
@@ -3552,9 +3602,11 @@
 
     if (inferForModule) {
       inferRequirements(*inferForModule, TypeLoc::withoutLoc(firstType),
-                        FloatingRequirementSource::forInferred(nullptr));
+                        FloatingRequirementSource::forInferred(
+                            nullptr, /*quietly=*/false));
       inferRequirements(*inferForModule, TypeLoc::withoutLoc(secondType),
-                        FloatingRequirementSource::forInferred(nullptr));
+                        FloatingRequirementSource::forInferred(
+                            nullptr, /*quietly=*/false));
     }
 
     return addTypeRequirement(firstType, secondType, source,
@@ -3568,7 +3620,8 @@
 
     if (inferForModule) {
       inferRequirements(*inferForModule, TypeLoc::withoutLoc(firstType),
-                        FloatingRequirementSource::forInferred(nullptr));
+                        FloatingRequirementSource::forInferred(
+                            nullptr, /*quietly=*/false));
     }
 
     return addLayoutRequirement(firstType, req.getLayoutConstraint(), source,
@@ -3583,9 +3636,11 @@
 
     if (inferForModule) {
       inferRequirements(*inferForModule, TypeLoc::withoutLoc(firstType),
-                        FloatingRequirementSource::forInferred(nullptr));
+                        FloatingRequirementSource::forInferred(
+                            nullptr, /*quietly=*/false));
       inferRequirements(*inferForModule, TypeLoc::withoutLoc(secondType),
-                        FloatingRequirementSource::forInferred(nullptr));
+                        FloatingRequirementSource::forInferred(
+                            nullptr, /*quietly=*/false));
     }
 
     return addSameTypeRequirement(
@@ -3659,7 +3714,7 @@
   for (auto P : *params) {
     inferRequirements(module, P->getTypeLoc(),
                       FloatingRequirementSource::forInferred(
-                                            P->getTypeLoc().getTypeRepr()));
+                          P->getTypeLoc().getTypeRepr(), /*quietly=*/false));
   }
 }
 
@@ -3767,8 +3822,11 @@
       // We prefer constraints rooted at inferred requirements to ones rooted
       // on explicit requirements, because the former won't be diagnosed
       // directly.
-      bool thisIsInferred = constraint.source->isInferredRequirement();
-      bool representativeIsInferred = representativeConstraint->source->isInferredRequirement();
+      bool thisIsInferred = constraint.source->isInferredRequirement(
+                              /*includeQuietInferred=*/false);
+      bool representativeIsInferred =
+          representativeConstraint->source->isInferredRequirement(
+            /*includeQuietInferred=*/false);
       if (thisIsInferred != representativeIsInferred) {
         if (thisIsInferred)
           representativeConstraint = constraint;
@@ -4023,10 +4081,7 @@
   if (Impl->NumUnresolvedNestedTypes > 0) {
     visitPotentialArchetypes([&](PotentialArchetype *pa) {
       // We only care about nested types that haven't been resolved.
-      if (pa->getParent() == nullptr || pa->getResolvedAssociatedType() ||
-          pa->getTypeAliasDecl() ||
-          /* FIXME: Should be able to handle this earlier */pa->getSuperclass())
-        return;
+      if (!pa->isUnresolved()) return;
 
       // Try to typo correct to a nested type name.
       Identifier correction = typoCorrectNestedType(pa);
@@ -4301,7 +4356,8 @@
       // If this requirement is not derived or inferred (but has a useful
       // location) complain that it is redundant.
       if (!constraint.source->isDerivedRequirement() &&
-          !constraint.source->isInferredRequirement() &&
+          !constraint.source->isInferredRequirement(
+            /*includeQuietInferred=*/true) &&
           constraint.source->getLoc().isValid()) {
         Diags.diagnose(constraint.source->getLoc(),
                        redundancyDiag,
@@ -4533,8 +4589,12 @@
         return lhs.target < rhs.target;
 
       // Prefer non-inferred requirement sources.
-      bool lhsIsInferred = lhs.constraint.source->isInferredRequirement();
-      bool rhsIsInferred = rhs.constraint.source->isInferredRequirement();
+      bool lhsIsInferred =
+        lhs.constraint.source->isInferredRequirement(
+          /*includeQuietInferred=*/false);
+      bool rhsIsInferred =
+        rhs.constraint.source->isInferredRequirement(
+          /*includeQuietInferred=*/false);
       if (lhsIsInferred != rhsIsInferred)
         return rhsIsInferred;;
 
@@ -4597,7 +4657,8 @@
       // If the source/destination are identical, complain.
       if (constraint.archetype == constraint.value) {
         if (!constraint.source->isDerivedRequirement() &&
-            !constraint.source->isInferredRequirement() &&
+            !constraint.source->isInferredRequirement(
+               /*includeQuietInferred=*/true) &&
             constraint.source->getLoc().isValid()) {
           Diags.diagnose(constraint.source->getLoc(),
                          diag::redundant_same_type_constraint,
@@ -4699,7 +4760,8 @@
           return true;
 
         // If the constraint source is inferred, don't diagnose it.
-        if (lhs.constraint.source->isInferredRequirement())
+        if (lhs.constraint.source->isInferredRequirement(
+              /*includeQuietInferred=*/true))
           return true;
 
         Diags.diagnose(lhs.constraint.source->getLoc(),
@@ -4731,7 +4793,8 @@
       // not part of the spanning tree.
       if (connected[edge.source] && connected[edge.target]) {
         if (edge.constraint.source->getLoc().isValid() &&
-            !edge.constraint.source->isInferredRequirement() &&
+            !edge.constraint.source->isInferredRequirement(
+              /*includeQuietInferred=*/true) &&
             firstEdge.constraint.source->getLoc().isValid()) {
           Diags.diagnose(edge.constraint.source->getLoc(),
                          diag::redundant_same_type_constraint,
@@ -4759,6 +4822,27 @@
   }
 }
 
+/// Resolve any unresolved dependent member types using the given builder.
+static Type resolveDependentMemberTypes(GenericSignatureBuilder &builder,
+                                        Type type) {
+  if (!type->hasTypeParameter()) return type;
+
+  return type.transformRec([&builder](TypeBase *type) -> Optional<Type> {
+    if (auto depTy = dyn_cast<DependentMemberType>(type)) {
+      if (depTy->getAssocType()) return None;
+
+      auto pa = builder.resolveArchetype(
+                             type, ArchetypeResolutionKind::CompleteWellFormed);
+      if (!pa)
+        return ErrorType::get(depTy);
+
+      return pa->getDependentType({ }, /*allowUnresolved=*/false);
+    }
+
+    return None;
+  });
+}
+
 void GenericSignatureBuilder::checkConcreteTypeConstraints(
                                  ArrayRef<GenericTypeParamType *> genericParams,
                                  PotentialArchetype *representative) {
@@ -4783,6 +4867,10 @@
     None,
     diag::redundant_same_type_to_concrete,
     diag::same_type_redundancy_here);
+
+  // Resolve any this-far-unresolved dependent types.
+  equivClass->concreteType =
+    resolveDependentMemberTypes(*this, equivClass->concreteType);
 }
 
 void GenericSignatureBuilder::checkSuperclassConstraints(
@@ -4821,6 +4909,10 @@
       diag::redundant_superclass_constraint,
       diag::superclass_redundancy_here);
 
+  // Resolve any this-far-unresolved dependent types.
+  equivClass->superclass =
+    resolveDependentMemberTypes(*this, equivClass->superclass);
+
   // If we have a concrete type, check it.
   // FIXME: Substitute into the concrete type.
   if (equivClass->concreteType) {
@@ -4936,13 +5028,17 @@
 namespace {
   /// Retrieve the best requirement source from a set of constraints.
   template<typename T>
-  const RequirementSource *getBestConstraintSource(
-                                        ArrayRef<Constraint<T>> constraints) {
-    auto bestSource = constraints.front().source;
+  Optional<const RequirementSource *>
+  getBestConstraintSource(ArrayRef<Constraint<T>> constraints,
+                          llvm::function_ref<bool(const T&)> matches) {
+    Optional<const RequirementSource *> bestSource;
     for (const auto &constraint : constraints) {
-      if (constraint.source->compare(bestSource) < 0)
+      if (!matches(constraint.value)) continue;
+
+      if (!bestSource || constraint.source->compare(*bestSource) < 0)
         bestSource = constraint.source;
     }
+
     return bestSource;
   }
 } // end anonymous namespace
@@ -5047,15 +5143,30 @@
 
     // If we have a superclass, produce a superclass requirement
     if (equivClass->superclass && !equivClass->recursiveSuperclassType) {
+      auto bestSource =
+        getBestConstraintSource<Type>(equivClass->superclassConstraints,
+           [&](const Type &type) {
+             return type->isEqual(equivClass->superclass);
+          });
+
+      if (!bestSource)
+        bestSource = RequirementSource::forAbstract(archetype);
+
       f(RequirementKind::Superclass, archetype, equivClass->superclass,
-        getBestConstraintSource<Type>(equivClass->superclassConstraints));
+        *bestSource);
     }
 
     // If we have a layout constraint, produce a layout requirement.
     if (equivClass->layout) {
-      f(RequirementKind::Layout, archetype, equivClass->layout,
-        getBestConstraintSource<LayoutConstraint>(
-                                              equivClass->layoutConstraints));
+      auto bestSource = getBestConstraintSource<LayoutConstraint>(
+                          equivClass->layoutConstraints,
+                          [&](const LayoutConstraint &layout) {
+                            return layout == equivClass->layout;
+                          });
+      if (!bestSource)
+        bestSource = RequirementSource::forAbstract(archetype);
+
+      f(RequirementKind::Layout, archetype, equivClass->layout, *bestSource);
     }
 
     // Enumerate conformance requirements.
@@ -5069,7 +5180,10 @@
 
         protocolSources.insert(
           {conforms.first,
-           getBestConstraintSource<ProtocolDecl *>(conforms.second)});
+           *getBestConstraintSource<ProtocolDecl *>(conforms.second,
+             [&](ProtocolDecl *proto) {
+               return proto == conforms.first;
+             })});
       }
     }
 
@@ -5192,14 +5306,8 @@
 
       // Drop requirements involving concrete types containing
       // unresolved associated types.
-      if (repTy.findIf([](Type t) -> bool {
-            if (auto *depTy = dyn_cast<DependentMemberType>(t.getPointer()))
-              if (depTy->getAssocType() == nullptr)
-                return true;
-            return false;
-          })) {
+      if (repTy->findUnresolvedDependentMemberType())
         return;
-      }
     } else if (auto layoutConstraint = type.dyn_cast<LayoutConstraint>()) {
       requirements.push_back(Requirement(kind, depTy, layoutConstraint));
       return;
diff --git a/lib/AST/LookupVisibleDecls.cpp b/lib/AST/LookupVisibleDecls.cpp
index ddefecb..b35593a 100644
--- a/lib/AST/LookupVisibleDecls.cpp
+++ b/lib/AST/LookupVisibleDecls.cpp
@@ -488,7 +488,7 @@
     VisitedSet &Visited) {
   // Just look through l-valueness.  It doesn't affect name lookup.
   assert(BaseTy && "lookup into null type");
-  assert(!BaseTy->isLValueType());
+  assert(!BaseTy->hasLValueType());
 
   // Handle metatype references, as in "some_type.some_member".  These are
   // special and can't have extensions.
@@ -557,6 +557,7 @@
     return;
   }
 
+  llvm::SmallPtrSet<ClassDecl *, 8> Ancestors;
   do {
     NominalTypeDecl *CurNominal = BaseTy->getAnyNominal();
     if (!CurNominal)
@@ -571,8 +572,13 @@
     auto *CurClass = dyn_cast<ClassDecl>(CurNominal);
 
     if (CurClass && CurClass->hasSuperclass()) {
-      assert(BaseTy.getPointer() != CurClass->getSuperclass().getPointer() &&
-             "type is its own superclass");
+      // FIXME: This path is no substitute for an actual circularity check.
+      // The real fix is to check that the superclass doesn't introduce a
+      // circular reference before it's written into the AST.
+      if (Ancestors.count(CurClass)) {
+        break;
+      }
+
       BaseTy = CurClass->getSuperclass();
       Reason = getReasonForSuper(Reason);
 
@@ -588,6 +594,7 @@
     } else {
       break;
     }
+    Ancestors.insert(CurClass);
   } while (1);
 }
 
@@ -687,7 +694,7 @@
   OverrideFilteringConsumer(Type BaseTy, const DeclContext *DC,
                             LazyResolver *resolver)
       : BaseTy(BaseTy), DC(DC), TypeResolver(resolver) {
-    assert(!BaseTy->isLValueType());
+    assert(!BaseTy->hasLValueType());
     if (auto *MetaTy = BaseTy->getAs<AnyMetatypeType>())
       BaseTy = MetaTy->getInstanceType();
     assert(DC && BaseTy);
diff --git a/lib/AST/Module.cpp b/lib/AST/Module.cpp
index 5075686..ef44b95 100644
--- a/lib/AST/Module.cpp
+++ b/lib/AST/Module.cpp
@@ -346,7 +346,7 @@
 ModuleDecl::ModuleDecl(Identifier name, ASTContext &ctx)
   : TypeDecl(DeclKind::Module, &ctx, name, SourceLoc(), { }),
     DeclContext(DeclContextKind::Module, nullptr),
-    Flags({0, 0, 0}), DSOHandle(nullptr) {
+    Flags({0, 0, 0}) {
   ctx.addDestructorCleanup(*this);
   setImplicit();
   setInterfaceType(ModuleType::get(this));
@@ -599,6 +599,10 @@
   // existential's list of conformances and the existential conforms to
   // itself.
   if (type->isExistentialType()) {
+    // FIXME: Recursion break.
+    if (!protocol->hasValidSignature())
+      return None;
+
     // If the existential type cannot be represented or the protocol does not
     // conform to itself, there's no point in looking further.
     if (!protocol->existentialConformsToSelf() ||
diff --git a/lib/AST/NameLookup.cpp b/lib/AST/NameLookup.cpp
index 9cebd69..67c9596 100644
--- a/lib/AST/NameLookup.cpp
+++ b/lib/AST/NameLookup.cpp
@@ -642,9 +642,12 @@
 
             DC = DC->getParent();
 
-            BaseDecl = selfParam;
             ExtendedType = DC->getSelfTypeInContext();
             MetaBaseDecl = DC->getAsNominalTypeOrNominalTypeExtensionContext();
+            if (Ctx.isSwiftVersion3())
+              BaseDecl = MetaBaseDecl;
+            else
+              BaseDecl = selfParam;
 
             isTypeLookup = PBD->isStatic();
           }
@@ -705,7 +708,7 @@
             // might be type checking a default argument expression and
             // performing name lookup from there), the base declaration
             // is the nominal type, not 'self'.
-            if (!AFD->isImplicit() &&
+            if ((Ctx.isSwiftVersion3() || !AFD->isImplicit()) &&
                 Loc.isValid() &&
                 AFD->getBodySourceRange().isValid() &&
                 !SM.rangeContainsTokenLoc(AFD->getBodySourceRange(), Loc)) {
diff --git a/lib/AST/NameLookupImpl.h b/lib/AST/NameLookupImpl.h
index 22da51b..0d8ff5a 100644
--- a/lib/AST/NameLookupImpl.h
+++ b/lib/AST/NameLookupImpl.h
@@ -151,10 +151,6 @@
     visit(S->getBody());
   }
 
-  void visitIfConfigStmt(IfConfigStmt * S) {
-    // Active members are attached to the enclosing declaration, so there's no
-    // need to walk anything within.
-  }
   void visitWhileStmt(WhileStmt *S) {
     if (!isReferencePointInRange(S->getSourceRange()))
       return;
diff --git a/lib/AST/Pattern.cpp b/lib/AST/Pattern.cpp
index c7d7d41..1ed64df 100644
--- a/lib/AST/Pattern.cpp
+++ b/lib/AST/Pattern.cpp
@@ -166,6 +166,24 @@
         fn(Named->getDecl());
       return P;
     }
+
+    // Only walk into an expression insofar as it doesn't open a new scope -
+    // that is, don't walk into a closure body.
+    std::pair<bool, Expr *> walkToExprPre(Expr *E) override {
+      if (isa<ClosureExpr>(E)) {
+        return { false, E };
+      }
+      return { true, E };
+    }
+
+    // Don't walk into anything else.
+    std::pair<bool, Stmt *> walkToStmtPre(Stmt *S) override {
+      return { false, S };
+    }
+    bool walkToTypeLocPre(TypeLoc &TL) override { return false; }
+    bool walkToTypeReprPre(TypeRepr *T) override { return false; }
+    bool walkToParameterListPre(ParameterList *PL) override { return false; }
+    bool walkToDeclPre(Decl *D) override { return false; }
   };
 } // end anonymous namespace
 
diff --git a/lib/AST/ProtocolConformance.cpp b/lib/AST/ProtocolConformance.cpp
index d6770f4..82c49ed 100644
--- a/lib/AST/ProtocolConformance.cpp
+++ b/lib/AST/ProtocolConformance.cpp
@@ -227,6 +227,12 @@
   return getTypeWitnessAndDecl(assocType, resolver, options).first;
 }
 
+ConcreteDeclRef
+ProtocolConformance::getWitnessDeclRef(ValueDecl *requirement,
+                                       LazyResolver *resolver) const {
+  CONFORMANCE_SUBCLASS_DISPATCH(getWitnessDeclRef, (requirement, resolver))
+}
+
 ValueDecl *ProtocolConformance::getWitnessDecl(ValueDecl *requirement,
                                                LazyResolver *resolver) const {
   switch (getKind()) {
@@ -252,18 +258,6 @@
   CONFORMANCE_SUBCLASS_DISPATCH(usesDefaultDefinition, (requirement))
 }
 
-bool ProtocolConformance::hasFixedLayout() const {
-  // A conformance/witness table has fixed layout if type has a fixed layout in
-  // all resilience domains, and the conformance is externally visible.
-  if (auto nominal = getType()->getAnyNominal())
-    if (nominal->hasFixedLayout() &&
-        getProtocol()->getEffectiveAccess() >= Accessibility::Public &&
-        nominal->getEffectiveAccess() >= Accessibility::Public)
-      return true;
-
-  return false;
-}
-
 GenericEnvironment *ProtocolConformance::getGenericEnvironment() const {
   switch (getKind()) {
   case ProtocolConformanceKind::Inherited:
@@ -618,7 +612,7 @@
     "requested conformance was not a direct requirement of the protocol");
 }
 
-  /// Retrieve the value witness corresponding to the given requirement.
+/// Retrieve the value witness corresponding to the given requirement.
 Witness NormalProtocolConformance::getWitness(ValueDecl *requirement,
                                               LazyResolver *resolver) const {
   assert(!isa<AssociatedTypeDecl>(requirement) && "Request type witness");
@@ -642,6 +636,14 @@
   }
 }
 
+ConcreteDeclRef
+NormalProtocolConformance::getWitnessDeclRef(ValueDecl *requirement,
+                                             LazyResolver *resolver) const {
+  if (auto witness = getWitness(requirement, resolver))
+    return witness.getDeclRef();
+  return ConcreteDeclRef();
+}
+
 void NormalProtocolConformance::setWitness(ValueDecl *requirement,
                                            Witness witness) const {
   assert(!isa<AssociatedTypeDecl>(requirement) && "Request type witness");
@@ -748,6 +750,35 @@
                            LookUpConformanceInSubstitutionMap(subMap));
 }
 
+ConcreteDeclRef
+SpecializedProtocolConformance::getWitnessDeclRef(ValueDecl *requirement,
+                                                  LazyResolver *resolver) const {
+  auto baseWitness = GenericConformance->getWitnessDeclRef(requirement, resolver);
+  if (!baseWitness || !baseWitness.isSpecialized())
+    return baseWitness;
+
+  auto genericSig = GenericConformance->getGenericSignature();
+  auto specializationMap =
+    genericSig->getSubstitutionMap(GenericSubstitutions);
+
+  auto witnessDecl = baseWitness.getDecl();
+  auto witnessSig =
+    witnessDecl->getInnermostDeclContext()->getGenericSignatureOfContext();
+  auto witnessMap =
+    witnessSig->getSubstitutionMap(baseWitness.getSubstitutions());
+
+  auto combinedMap = witnessMap.subst(specializationMap);
+
+  SmallVector<Substitution, 4> substSubs;
+  witnessSig->getSubstitutions(combinedMap, substSubs);
+
+  // Fast path if the substitutions didn't change.
+  if (SubstitutionList(substSubs) == baseWitness.getSubstitutions())
+    return baseWitness;
+
+  return ConcreteDeclRef(witnessDecl->getASTContext(), witnessDecl, substSubs);
+}
+
 ProtocolConformanceRef
 InheritedProtocolConformance::getAssociatedConformance(Type assocType,
                          ProtocolDecl *protocol,
@@ -770,6 +801,13 @@
   return underlying;
 }
 
+ConcreteDeclRef
+InheritedProtocolConformance::getWitnessDeclRef(ValueDecl *requirement,
+                                                LazyResolver *resolver) const {
+  // FIXME: substitutions?
+  return InheritedConformance->getWitnessDeclRef(requirement, resolver);
+}
+
 const NormalProtocolConformance *
 ProtocolConformance::getRootNormalConformance() const {
   const ProtocolConformance *C = this;
diff --git a/lib/AST/SourceEntityWalker.cpp b/lib/AST/SourceEntityWalker.cpp
index 7b45951..0a8d145 100644
--- a/lib/AST/SourceEntityWalker.cpp
+++ b/lib/AST/SourceEntityWalker.cpp
@@ -142,6 +142,15 @@
     if (Loc.isValid())
       NameLen = PrecD->getName().getLength();
 
+  } else if (auto *ICD = dyn_cast<IfConfigDecl>(D)) {
+    if (SEWalker.shouldWalkInactiveConfigRegion()) {
+      for (auto Clause : ICD->getClauses()) {
+        for (auto Member : Clause.Elements) {
+          Member.walk(*this);
+        }
+      }
+      return false;
+    }
   } else {
     return true;
   }
@@ -199,17 +208,6 @@
 std::pair<bool, Stmt *> SemaAnnotator::walkToStmtPre(Stmt *S) {
   bool TraverseChildren = SEWalker.walkToStmtPre(S);
   if (TraverseChildren) {
-    if (SEWalker.shouldWalkInactiveConfigRegion()) {
-      if (auto *ICS = dyn_cast<IfConfigStmt>(S)) {
-        TraverseChildren = false;
-        for (auto Clause : ICS->getClauses()) {
-          for (auto Member : Clause.Elements) {
-            Member.walk(*this);
-          }
-        }
-      }
-    }
-
     if (auto *DeferS = dyn_cast<DeferStmt>(S)) {
       if (auto *FD = DeferS->getTempDecl()) {
         auto *RetS = FD->getBody()->walk(*this);
diff --git a/lib/AST/SwiftNameTranslation.cpp b/lib/AST/SwiftNameTranslation.cpp
index c20aa5b..854a167 100644
--- a/lib/AST/SwiftNameTranslation.cpp
+++ b/lib/AST/SwiftNameTranslation.cpp
@@ -28,7 +28,8 @@
 StringRef swift::objc_translation::
 getNameForObjC(const ValueDecl *VD, CustomNamesOnly_t customNamesOnly) {
   assert(isa<ClassDecl>(VD) || isa<ProtocolDecl>(VD) || isa<StructDecl>(VD) ||
-         isa<EnumDecl>(VD) || isa<EnumElementDecl>(VD));
+         isa<EnumDecl>(VD) || isa<EnumElementDecl>(VD) ||
+         isa<TypeAliasDecl>(VD));
   if (auto objc = VD->getAttrs().getAttribute<ObjCAttr>()) {
     if (auto name = objc->getName()) {
       assert(name->getNumSelectorPieces() == 1);
diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp
index eff1302..764ef1c 100644
--- a/lib/AST/Type.cpp
+++ b/lib/AST/Type.cpp
@@ -467,7 +467,7 @@
 
 
 bool TypeBase::isAssignableType() {
-  if (isLValueType()) return true;
+  if (hasLValueType()) return true;
   if (auto tuple = getAs<TupleType>()) {
     for (auto eltType : tuple->getElementTypes()) {
       if (!eltType->isAssignableType())
@@ -480,7 +480,7 @@
 
 Type TypeBase::getRValueType() {
   // If the type is not an lvalue, this is a no-op.
-  if (!isLValueType())
+  if (!hasLValueType())
     return this;
 
   return Type(this).transform([](Type t) -> Type {
@@ -948,17 +948,7 @@
 /// \brief Compare two protocols to establish an ordering between them.
 int ProtocolType::compareProtocols(ProtocolDecl * const* PP1,
                                    ProtocolDecl * const* PP2) {
-  auto *P1 = *PP1;
-  auto *P2 = *PP2;
-  ModuleDecl *M1 = P1->getParentModule();
-  ModuleDecl *M2 = P2->getParentModule();
-
-  // Try ordering based on module name, first.
-  if (int result = M1->getName().str().compare(M2->getName().str()))
-    return result;
-
-  // Order based on protocol name.
-  return P1->getName().str().compare(P2->getName().str());
+  return TypeDecl::compare(*PP1, *PP2);
 }
 
 bool ProtocolType::visitAllProtocols(
@@ -3166,6 +3156,24 @@
                     SubstFlags::UseErrorType));
 }
 
+const DependentMemberType *TypeBase::findUnresolvedDependentMemberType() {
+  if (!hasTypeParameter()) return nullptr;
+
+  const DependentMemberType *unresolvedDepMemTy = nullptr;
+  Type(this).findIf([&](Type type) -> bool {
+    if (auto depMemTy = type->getAs<DependentMemberType>()) {
+      if (depMemTy->getAssocType() == nullptr) {
+        unresolvedDepMemTy = depMemTy;
+        return true;
+      }
+    }
+    return false;
+  });
+
+  return unresolvedDepMemTy;
+}
+
+
 Type TypeBase::getSuperclassForDecl(const ClassDecl *baseClass) {
   Type t(this);
   while (t) {
@@ -3195,7 +3203,7 @@
   assert(dc->isTypeContext());
   Type baseTy(this);
 
-  assert(!baseTy->isLValueType() && !baseTy->is<AnyMetatypeType>());
+  assert(!baseTy->hasLValueType() && !baseTy->is<AnyMetatypeType>());
 
   // The resulting set of substitutions. Always use this to ensure we
   // don't miss out on NRVO anywhere.
@@ -3633,6 +3641,9 @@
   case TypeKind::NameAlias: {
     auto alias = cast<NameAliasType>(base);
     auto underlyingTy = Type(alias->getSinglyDesugaredType());
+    if (!underlyingTy)
+      return Type();
+
     auto transformedTy = underlyingTy.transformRec(fn);
     if (!transformedTy)
       return Type();
@@ -3916,24 +3927,25 @@
 
   case TypeKind::ProtocolComposition: {
     auto pc = cast<ProtocolCompositionType>(base);
-    SmallVector<Type, 4> members;
+    SmallVector<Type, 4> substMembers;
+    auto members = pc->getMembers();
     bool anyChanged = false;
     unsigned index = 0;
-    for (auto member : pc->getMembers()) {
+    for (auto member : members) {
       auto substMember = member.transformRec(fn);
       if (!substMember)
         return Type();
       
       if (anyChanged) {
-        members.push_back(substMember);
+        substMembers.push_back(substMember);
         ++index;
         continue;
       }
       
       if (substMember.getPointer() != member.getPointer()) {
         anyChanged = true;
-        members.append(members.begin(), members.begin() + index);
-        members.push_back(substMember);
+        substMembers.append(members.begin(), members.begin() + index);
+        substMembers.push_back(substMember);
       }
       
       ++index;
@@ -3942,7 +3954,8 @@
     if (!anyChanged)
       return *this;
     
-    return ProtocolCompositionType::get(Ptr->getASTContext(), members,
+    return ProtocolCompositionType::get(Ptr->getASTContext(),
+                                        substMembers,
                                         pc->hasExplicitAnyObject());
   }
   }
@@ -4146,3 +4159,16 @@
   }
   return props;
 }
+
+Type TypeBase::openAnyExistentialType(ArchetypeType *&opened) {
+  assert(isAnyExistentialType());
+  if (auto metaty = getAs<ExistentialMetatypeType>()) {
+    opened = ArchetypeType::getOpened(metaty->getInstanceType());
+    if (metaty->hasRepresentation())
+      return MetatypeType::get(opened, metaty->getRepresentation());
+    else
+      return MetatypeType::get(opened);
+  }
+  opened = ArchetypeType::getOpened(this);
+  return opened;
+}
diff --git a/lib/Basic/Statistic.cpp b/lib/Basic/Statistic.cpp
index c19fdec..f3050de 100644
--- a/lib/Basic/Statistic.cpp
+++ b/lib/Basic/Statistic.cpp
@@ -13,24 +13,45 @@
 #include "swift/Basic/Statistic.h"
 #include "swift/Driver/DependencyGraph.h"
 #include "swift/SIL/SILModule.h"
+#include "llvm/Config/config.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Process.h"
 #include "llvm/Support/raw_ostream.h"
 #include <chrono>
 
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_SYS_RESOURCE_H
+#include <sys/resource.h>
+#endif
+
 namespace swift {
 using namespace llvm;
 using namespace llvm::sys;
 
+static size_t
+getChildrenMaxResidentSetSize() {
+#if defined(HAVE_GETRUSAGE)
+  struct rusage RU;
+  ::getrusage(RUSAGE_CHILDREN, &RU);
+  return RU.ru_maxrss;
+#else
+  return 0;
+#endif
+}
+
 static std::string
-makeFileName(StringRef ProcessName) {
+makeFileName(StringRef ProgramName,
+             StringRef AuxName) {
   std::string tmp;
   raw_string_ostream stream(tmp);
   auto now = std::chrono::system_clock::now();
   stream << "stats"
          << "-" << now.time_since_epoch().count()
-         << "-" << ProcessName
+         << "-" << ProgramName
+         << "-" << AuxName
          << "-" << Process::GetRandomNumber()
          << ".json";
   return stream.str();
@@ -39,15 +60,17 @@
 // LLVM's statistics-reporting machinery is sensitive to filenames containing
 // YAML-quote-requiring characters, which occur surprisingly often in the wild;
 // we only need a recognizable and likely-unique name for a target here, not an
-// exact filename, so we go with a crude approximation.
+// exact filename, so we go with a crude approximation. Furthermore, to avoid
+// parse ambiguities when "demangling" counters and filenames we exclude hyphens
+// and slashes.
 static std::string
-cleanTargetName(StringRef TargetName) {
+cleanName(StringRef n) {
   std::string tmp;
-  for (auto c : TargetName) {
+  for (auto c : n) {
     if (('a' <= c && c <= 'z') ||
         ('A' <= c && c <= 'Z') ||
         ('0' <= c && c <= '9') ||
-        (c == '-') || (c == '.') || (c == '/'))
+        (c == '.'))
       tmp += c;
     else
       tmp += '_';
@@ -55,15 +78,57 @@
   return tmp;
 }
 
+static std::string
+auxName(StringRef ModuleName,
+        StringRef InputName,
+        StringRef TripleName,
+        StringRef OutputType,
+        StringRef OptType) {
+  if (InputName.empty()) {
+    InputName = "all";
+  }
+  if (OptType.empty()) {
+    InputName = "Onone";
+  }
+  if (!OutputType.empty() && OutputType.front() == '.') {
+    OutputType = OutputType.substr(1);
+  }
+  if (!OptType.empty() && OptType.front() == '-') {
+    OptType = OptType.substr(1);
+  }
+  return (cleanName(ModuleName)
+          + "-" + cleanName(InputName)
+          + "-" + cleanName(TripleName)
+          + "-" + cleanName(OutputType)
+          + "-" + cleanName(OptType));
+}
+
 UnifiedStatsReporter::UnifiedStatsReporter(StringRef ProgramName,
-                                           StringRef TargetName,
+                                           StringRef ModuleName,
+                                           StringRef InputName,
+                                           StringRef TripleName,
+                                           StringRef OutputType,
+                                           StringRef OptType,
+                                           StringRef Directory)
+  : UnifiedStatsReporter(ProgramName,
+                         auxName(ModuleName,
+                                 InputName,
+                                 TripleName,
+                                 OutputType,
+                                 OptType),
+                         Directory)
+{
+}
+
+UnifiedStatsReporter::UnifiedStatsReporter(StringRef ProgramName,
+                                           StringRef AuxName,
                                            StringRef Directory)
   : Filename(Directory),
-    Timer(make_unique<NamedRegionTimer>(cleanTargetName(TargetName),
+    Timer(make_unique<NamedRegionTimer>(AuxName,
                                         "Building Target",
                                         ProgramName, "Running Program"))
 {
-  path::append(Filename, makeFileName(ProgramName));
+  path::append(Filename, makeFileName(ProgramName, AuxName));
   EnableStatistics(/*PrintOnExit=*/false);
   SharedTimer::enableCompilationTimers();
 }
@@ -148,6 +213,8 @@
     PUBLISH_STAT(C, "IRModule", NumIRComdatSymbols);
     PUBLISH_STAT(C, "IRModule", NumIRBasicBlocks);
     PUBLISH_STAT(C, "IRModule", NumIRInsts);
+
+    PUBLISH_STAT(C, "LLVM", NumLLVMBytesOutput);
   }
   if (DriverCounters) {
     auto &C = getDriverCounters();
@@ -165,6 +232,7 @@
     PUBLISH_STAT(C, "Driver", DriverDepNominal);
     PUBLISH_STAT(C, "Driver", DriverDepMember);
     PUBLISH_STAT(C, "Driver", DriverDepExternal);
+    PUBLISH_STAT(C, "Driver", ChildrenMaxRSS);
   }
 }
 
@@ -235,6 +303,8 @@
     PRINT_STAT(OS, delim, C, "IRModule", NumIRComdatSymbols);
     PRINT_STAT(OS, delim, C, "IRModule", NumIRBasicBlocks);
     PRINT_STAT(OS, delim, C, "IRModule", NumIRInsts);
+
+    PRINT_STAT(OS, delim, C, "LLVM", NumLLVMBytesOutput);
   }
   if (DriverCounters) {
     auto &C = getDriverCounters();
@@ -252,6 +322,7 @@
     PRINT_STAT(OS, delim, C, "Driver", DriverDepNominal);
     PRINT_STAT(OS, delim, C, "Driver", DriverDepMember);
     PRINT_STAT(OS, delim, C, "Driver", DriverDepExternal);
+    PRINT_STAT(OS, delim, C, "Driver", ChildrenMaxRSS);
   }
   // Print timers.
   TimerGroup::printAllJSONValues(OS, delim);
@@ -268,6 +339,11 @@
   // we're repurposing a bit here.
   Timer.reset();
 
+  if (DriverCounters) {
+    auto &C = getDriverCounters();
+    C.ChildrenMaxRSS = getChildrenMaxResidentSetSize();
+  }
+
   std::error_code EC;
   raw_fd_ostream ostream(Filename, EC, fs::F_Append | fs::F_Text);
   if (EC)
diff --git a/lib/ClangImporter/ImportDecl.cpp b/lib/ClangImporter/ImportDecl.cpp
index fba937f..479bd45 100644
--- a/lib/ClangImporter/ImportDecl.cpp
+++ b/lib/ClangImporter/ImportDecl.cpp
@@ -1768,10 +1768,10 @@
   // the SwiftImportAsNonGeneric API note. Once we can guarantee that that
   // attribute is present in all contexts, we can remove this check.
   auto isFromFoundationModule = [](const clang::Decl *decl) -> bool {
-    Optional<clang::Module *> module = getClangSubmoduleForDecl(decl);
+    clang::Module *module = getClangSubmoduleForDecl(decl).getValue();
     if (!module)
       return false;
-    return module.getValue()->getTopLevelModuleName() == "Foundation";
+    return module->getTopLevelModuleName() == "Foundation";
   };
 
   if (langOpts.isSwiftVersion3() || isFromFoundationModule(decl)) {
@@ -3768,8 +3768,11 @@
                                  methodTy->getExtInfo());
       }
 
-      // Add the 'self' parameter to the function type.
-      type = FunctionType::get(selfInterfaceType, type);
+      // Add the 'self' parameter to the function type. NB. a method's formal
+      // type should be (Type) -> (Args...) -> Ret, not Type -> (Args...) ->
+      // Ret.
+      auto parenSelfType = ParenType::get(Impl.SwiftContext, selfInterfaceType);
+      type = FunctionType::get(parenSelfType, type);
 
       auto interfaceType = getGenericMethodType(dc, type->castTo<AnyFunctionType>());
       result->setInterfaceType(interfaceType);
diff --git a/lib/ClangImporter/ImportMacro.cpp b/lib/ClangImporter/ImportMacro.cpp
index e038eb3..54ed2ce 100644
--- a/lib/ClangImporter/ImportMacro.cpp
+++ b/lib/ClangImporter/ImportMacro.cpp
@@ -190,10 +190,6 @@
                                       const clang::Token &tok,
                                       MappedStringLiteralKind kind,
                                       const clang::MacroInfo *ClangN) {
-  DeclContext *dc = Impl.getClangModuleForMacro(MI);
-  if (!dc)
-    return nullptr;
-
   assert(isStringToken(tok));
 
   clang::ActionResult<clang::Expr*> result =
@@ -209,7 +205,7 @@
   if (!importTy)
     return nullptr;
 
-  return Impl.createConstant(name, dc, importTy, parsed->getString(),
+  return Impl.createConstant(name, DC, importTy, parsed->getString(),
                              ConstantConvertKind::Coerce, /*static*/ false,
                              ClangN);
 }
diff --git a/lib/ClangImporter/SwiftLookupTable.h b/lib/ClangImporter/SwiftLookupTable.h
index ef315b7..e09e7aa 100644
--- a/lib/ClangImporter/SwiftLookupTable.h
+++ b/lib/ClangImporter/SwiftLookupTable.h
@@ -273,20 +273,6 @@
     return bits | 0x01;
   }
 
-  /// Encode a declaration ID as an entry in the table.
-  static uintptr_t encodeDeclID(clang::serialization::DeclID id) {
-    auto upper = static_cast<uintptr_t>(id) << 2;
-    assert(upper >> 2 == id);
-    return upper | 0x02;
-  }
-
-  /// Encode a macro ID as an entry in the table.
-  static uintptr_t encodeMacroID(clang::serialization::MacroID id) {
-    auto upper = static_cast<uintptr_t>(id) << 2;
-    assert(upper >> 2 == id);
-    return upper | 0x02 | 0x01;
-  }
-
 private:
   /// A table mapping from the base name of Swift entities to all of
   /// the C entities that have that name, in all contexts.
diff --git a/lib/Demangling/Demangler.cpp b/lib/Demangling/Demangler.cpp
index 553615b..777d6d6 100644
--- a/lib/Demangling/Demangler.cpp
+++ b/lib/Demangling/Demangler.cpp
@@ -641,6 +641,10 @@
     NodePointer name = popNode(isDeclName);
     return createWithChildren(Node::Kind::PrivateDeclName, discriminator, name);
   }
+  if (nextIf('l')) {
+    NodePointer discriminator = popNode(Node::Kind::Identifier);
+    return createWithChild(Node::Kind::PrivateDeclName, discriminator);
+  }
   NodePointer discriminator = demangleIndexAsNode();
   NodePointer name = popNode(isDeclName);
   return createWithChildren(Node::Kind::LocalDeclName, discriminator, name);
@@ -1672,7 +1676,14 @@
 }
 
 NodePointer Demangler::demangleFunctionEntity() {
-  enum { None, Type, TypeAndName, TypeAndIndex, Index } Args;
+  enum {
+    None,
+    Type,
+    TypeAndName,
+    TypeAndMaybePrivateName,
+    TypeAndIndex,
+    Index
+  } Args;
 
   Node::Kind Kind = Node::Kind::EmptyList;
   switch (nextChar()) {
@@ -1681,8 +1692,10 @@
     case 'E': Args = None; Kind = Node::Kind::IVarDestroyer; break;
     case 'e': Args = None; Kind = Node::Kind::IVarInitializer; break;
     case 'i': Args = None; Kind = Node::Kind::Initializer; break;
-    case 'C': Args = Type; Kind = Node::Kind::Allocator; break;
-    case 'c': Args = Type; Kind = Node::Kind::Constructor; break;
+    case 'C':
+      Args = TypeAndMaybePrivateName; Kind = Node::Kind::Allocator; break;
+    case 'c':
+      Args = TypeAndMaybePrivateName; Kind = Node::Kind::Constructor; break;
     case 'g': Args = TypeAndName; Kind = Node::Kind::Getter; break;
     case 'G': Args = TypeAndName; Kind = Node::Kind::GlobalGetter; break;
     case 's': Args = TypeAndName; Kind = Node::Kind::Setter; break;
@@ -1727,6 +1740,10 @@
       Child2 = popNode(Node::Kind::Type);
       Child1 = popNode(isDeclName);
       break;
+    case TypeAndMaybePrivateName:
+      Child1 = popNode(Node::Kind::PrivateDeclName);
+      Child2 = popNode(Node::Kind::Type);
+      break;
     case TypeAndIndex:
       Child1 = demangleIndexAsNode();
       Child2 = popNode(Node::Kind::Type);
@@ -1743,6 +1760,11 @@
     case Index:
       Entity = addChild(Entity, Child1);
       break;
+    case TypeAndMaybePrivateName:
+      if (Child1)
+        Entity = addChild(Entity, Child1);
+      Entity = addChild(Entity, Child2);
+      break;
     case TypeAndName:
     case TypeAndIndex:
       Entity = addChild(Entity, Child1);
diff --git a/lib/Demangling/NodePrinter.cpp b/lib/Demangling/NodePrinter.cpp
index fe322e6..48b0124 100644
--- a/lib/Demangling/NodePrinter.cpp
+++ b/lib/Demangling/NodePrinter.cpp
@@ -867,13 +867,19 @@
     Printer << " #" << (Node->getChild(0)->getIndex() + 1);
     return nullptr;
   case Node::Kind::PrivateDeclName:
-    if (Options.ShowPrivateDiscriminators)
-      Printer << '(';
+    if (Node->getNumChildren() > 1) {
+      if (Options.ShowPrivateDiscriminators)
+        Printer << '(';
 
-    print(Node->getChild(1));
+      print(Node->getChild(1));
 
-    if (Options.ShowPrivateDiscriminators)
-      Printer << " in " << Node->getChild(0)->getText() << ')';
+      if (Options.ShowPrivateDiscriminators)
+        Printer << " in " << Node->getChild(0)->getText() << ')';
+    } else {
+      if (Options.ShowPrivateDiscriminators) {
+        Printer << "(in " << Node->getChild(0)->getText() << ')';
+      }
+    }
     return nullptr;
   case Node::Kind::Module:
     if (Options.DisplayModuleNames)
@@ -1472,7 +1478,7 @@
                                          "__allocating_init" : "init");
   case Node::Kind::Constructor:
     return printEntity(Node, asPrefixContext, TypePrinting::FunctionStyle,
-                       /*hasName*/false, "init");
+                       /*hasName*/Node->getNumChildren() > 2, "init");
   case Node::Kind::Destructor:
     return printEntity(Node, asPrefixContext, TypePrinting::NoType,
                        /*hasName*/false, "deinit");
@@ -1771,8 +1777,9 @@
       Printer << " of ";
       ExtraName = "";
     }
+    size_t CurrentPos = Printer.getStringRef().size();
     print(Entity->getChild(1));
-    if (!ExtraName.empty())
+    if (Printer.getStringRef().size() != CurrentPos && !ExtraName.empty())
       Printer << '.';
   }
   if (!ExtraName.empty()) {
diff --git a/lib/Demangling/Remangler.cpp b/lib/Demangling/Remangler.cpp
index afa2671..4ef488d 100644
--- a/lib/Demangling/Remangler.cpp
+++ b/lib/Demangling/Remangler.cpp
@@ -273,6 +273,7 @@
   void mangleAnyNominalType(Node *node);
   void mangleAnyGenericType(Node *node, char TypeOp);
   void mangleGenericArgs(Node *node, char &Separator);
+  void mangleAnyConstructor(Node *node, char kindOp);
 
 #define NODE(ID)                                                        \
   void mangle##ID(Node *node);
@@ -478,8 +479,7 @@
 }
 
 void Remangler::mangleAllocator(Node *node) {
-  mangleChildNodes(node);
-  Buffer << "fC";
+  mangleAnyConstructor(node, 'C');
 }
 
 void Remangler::mangleArgumentTuple(Node *node) {
@@ -600,9 +600,18 @@
   mangleAnyNominalType(node);
 }
 
+void Remangler::mangleAnyConstructor(Node *node, char kindOp) {
+  mangleChildNode(node, 0);
+  if (node->getNumChildren() > 2) {
+    assert(node->getNumChildren() == 3);
+    mangleChildNode(node, 2);
+  }
+  mangleChildNode(node, 1);
+  Buffer << "f" << kindOp;
+}
+
 void Remangler::mangleConstructor(Node *node) {
-  mangleChildNodes(node);
-  Buffer << "fc";
+  mangleAnyConstructor(node, 'c');
 }
 
 void Remangler::mangleDeallocator(Node *node) {
@@ -1385,7 +1394,7 @@
 
 void Remangler::manglePrivateDeclName(Node *node) {
   mangleChildNodesReversed(node);
-  Buffer << "LL";
+  Buffer << (node->getNumChildren() == 1 ? "Ll" : "LL");
 }
 
 void Remangler::mangleProtocol(Node *node) {
diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
index 016c650..a9f4eba 100644
--- a/lib/Driver/Driver.cpp
+++ b/lib/Driver/Driver.cpp
@@ -35,6 +35,7 @@
 #include "swift/Option/SanitizerOptions.h"
 #include "swift/Parse/Lexer.h"
 #include "swift/Config.h"
+#include "llvm/ADT/APInt.h"
 #include "llvm/ADT/DenseSet.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/SmallString.h"
@@ -141,6 +142,10 @@
       if (triple.isOSVersionLT(7))
         diags.diagnose(SourceLoc(), diag::error_os_minimum_deployment,
                        "iOS 7");
+      if (triple.isArch32Bit() && !triple.isOSVersionLT(11)) {
+        diags.diagnose(SourceLoc(), diag::error_ios_maximum_deployment_32,
+                       triple.getOSMajorVersion());
+      }
     } else if (triple.isWatchOS()) {
       if (triple.isOSVersionLT(2, 0)) {
           diags.diagnose(SourceLoc(), diag::error_os_minimum_deployment,
@@ -156,7 +161,7 @@
     diags.diagnose(SourceLoc(), diag::error_conflicting_options,
                    "-warnings-as-errors", "-suppress-warnings");
   }
-  
+
   // Check for missing debug option when verifying debug info.
   if (Args.hasArg(options::OPT_verify_debug_info)) {
     bool hasDebugOption = true;
@@ -167,6 +172,18 @@
       diags.diagnose(SourceLoc(),
                      diag::verify_debug_info_requires_debug_option);
   }
+
+  for (const Arg *A : make_range(Args.filtered_begin(options::OPT_D),
+                                 Args.filtered_end())) {
+    StringRef name = A->getValue();
+    if (name.find('=') != StringRef::npos)
+      diags.diagnose(SourceLoc(),
+                     diag::cannot_assign_value_to_conditional_compilation_flag,
+                     name);
+    else if (!Lexer::isIdentifier(name))
+      diags.diagnose(SourceLoc(), diag::invalid_conditional_compilation_flag,
+                     name);
+  }
 }
 
 /// Creates an appropriate ToolChain for a given driver and target triple.
@@ -558,8 +575,21 @@
   std::unique_ptr<UnifiedStatsReporter> StatsReporter;
   if (const Arg *A =
       ArgList->getLastArgNoClaim(options::OPT_stats_output_dir)) {
+    StringRef OptType;
+    if (const Arg *OptA = ArgList->getLastArgNoClaim(options::OPT_O_Group)) {
+      OptType = OptA->getSpelling();
+    }
+    StringRef InputName;
+    if (Inputs.size() == 1) {
+      InputName = Inputs[0].second->getSpelling();
+    }
+    StringRef OutputType = types::getTypeTempSuffix(OI.CompilerOutputType);
     StatsReporter = llvm::make_unique<UnifiedStatsReporter>("swift-driver",
                                                             OI.ModuleName,
+                                                            InputName,
+                                                            DefaultTargetTriple,
+                                                            OutputType,
+                                                            OptType,
                                                             A->getValue());
   }
 
@@ -1008,14 +1038,14 @@
 /// the given target.
 static bool isSDKTooOld(StringRef sdkPath, const llvm::Triple &target) {
   if (target.isMacOSX()) {
-    return isSDKTooOld(sdkPath, clang::VersionTuple(10, 12), "OSX");
+    return isSDKTooOld(sdkPath, clang::VersionTuple(10, 13), "OSX");
 
   } else if (target.isiOS()) {
     // Includes both iOS and TVOS.
-    return isSDKTooOld(sdkPath, clang::VersionTuple(10, 0), "Simulator", "OS");
+    return isSDKTooOld(sdkPath, clang::VersionTuple(11, 0), "Simulator", "OS");
 
   } else if (target.isWatchOS()) {
-    return isSDKTooOld(sdkPath, clang::VersionTuple(3, 0), "Simulator", "OS");
+    return isSDKTooOld(sdkPath, clang::VersionTuple(4, 0), "Simulator", "OS");
 
   } else {
     return false;
@@ -1287,7 +1317,11 @@
 
   OI.SelectedSanitizer = SanitizerKind::None;
   if (const Arg *A = Args.getLastArg(options::OPT_sanitize_EQ))
-    OI.SelectedSanitizer = parseSanitizerArgValues(A, TC.getTriple(), Diags);
+    OI.SelectedSanitizer = parseSanitizerArgValues(
+        A, TC.getTriple(), Diags,
+        [&](StringRef sanitizerName) {
+          return TC.sanitizerRuntimeLibExists(Args, sanitizerName);
+        });
 
   // Check that the sanitizer coverage flags are supported if supplied.
   if (const Arg *A = Args.getLastArg(options::OPT_sanitize_coverage_EQ))
@@ -1831,7 +1865,8 @@
 
 static void addAuxiliaryOutput(Compilation &C, CommandOutput &output,
                                types::ID outputType, const OutputInfo &OI,
-                               const TypeToPathMap *outputMap) {
+                               const TypeToPathMap *outputMap,
+                               StringRef outputPath = StringRef()) {
   StringRef outputMapPath;
   if (outputMap) {
     auto iter = outputMap->find(outputType);
@@ -1842,6 +1877,8 @@
   if (!outputMapPath.empty()) {
     // Prefer a path from the OutputMap.
     output.setAdditionalOutputForType(outputType, outputMapPath);
+  } else if (!outputPath.empty()) {
+    output.setAdditionalOutputForType(outputType, outputPath);
   } else {
     // Put the auxiliary output file next to the primary output file.
     llvm::SmallString<128> path;
@@ -1861,6 +1898,58 @@
   }
 }
 
+static void addDiagFileOutputForPersistentPCHAction(Compilation &C,
+                                                 const GeneratePCHJobAction *JA,
+                                                    CommandOutput &output,
+                                                    const OutputInfo &OI,
+                                                 const TypeToPathMap *outputMap,
+                                                    DiagnosticEngine &diags) {
+  assert(JA->isPersistentPCH());
+
+  // For a persistent PCH we don't use an output, the frontend determines
+  // the filename to use for the PCH. For the diagnostics file, try to
+  // determine an invocation-specific path inside the directory where the
+  // PCH is going to be written, and fallback to a temporary file if we
+  // cannot determine such a path.
+
+  StringRef pchOutDir = JA->getPersistentPCHDir();
+  StringRef headerPath = output.getBaseInput(JA->getInputIndex());
+  StringRef stem = llvm::sys::path::stem(headerPath);
+  StringRef suffix = types::getTypeTempSuffix(types::TY_SerializedDiagnostics);
+  SmallString<256> outPathBuf;
+
+  if (const Arg *A = C.getArgs().getLastArg(options::OPT_emit_module_path)) {
+    // The module file path is unique for a specific module and architecture
+    // (it won't be concurrently written to) so we can use the path as hash
+    // for determining the filename to use for the diagnostic file.
+    StringRef ModuleOutPath = A->getValue();
+    outPathBuf = pchOutDir;
+    llvm::sys::path::append(outPathBuf, stem);
+    outPathBuf += '-';
+    auto code = llvm::hash_value(ModuleOutPath);
+    outPathBuf += llvm::APInt(64, code).toString(36, /*Signed=*/false);
+    llvm::sys::path::replace_extension(outPathBuf, suffix);
+  }
+
+  if (outPathBuf.empty()) {
+    // Fallback to creating a temporary file.
+    std::error_code EC =
+    llvm::sys::fs::createTemporaryFile(stem, suffix, outPathBuf);
+    if (EC) {
+      diags.diagnose(SourceLoc(),
+                     diag::error_unable_to_make_temporary_file,
+                     EC.message());
+      return;
+    }
+    C.addTemporaryFile(outPathBuf.str());
+  }
+
+  if (!outPathBuf.empty()) {
+    addAuxiliaryOutput(C, output, types::TY_SerializedDiagnostics, OI,
+                       outputMap, outPathBuf.str());
+  }
+}
+
 /// If the file at \p input has not been modified since the last build (i.e. its
 /// mtime has not changed), adjust the Job's condition accordingly.
 static void
@@ -2095,8 +2184,14 @@
   if (isa<CompileJobAction>(JA) || isa<GeneratePCHJobAction>(JA)) {
     // Choose the serialized diagnostics output path.
     if (C.getArgs().hasArg(options::OPT_serialize_diagnostics)) {
-      addAuxiliaryOutput(C, *Output, types::TY_SerializedDiagnostics, OI,
-                         OutputMap);
+      auto pchJA = dyn_cast<GeneratePCHJobAction>(JA);
+      if (pchJA && pchJA->isPersistentPCH()) {
+        addDiagFileOutputForPersistentPCHAction(C, pchJA, *Output, OI,
+                                                OutputMap, Diags);
+      } else {
+        addAuxiliaryOutput(C, *Output, types::TY_SerializedDiagnostics, OI,
+                           OutputMap);
+      }
 
       // Remove any existing diagnostics files so that clients can detect their
       // presence to determine if a command was run.
diff --git a/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp
index 2e1a004..7edf218 100644
--- a/lib/Driver/ToolChain.cpp
+++ b/lib/Driver/ToolChain.cpp
@@ -149,3 +149,11 @@
 types::ID ToolChain::lookupTypeForExtension(StringRef Ext) const {
   return types::lookupTypeForExtension(Ext);
 }
+
+bool
+ToolChain::sanitizerRuntimeLibExists(const ArgList &args,
+                                     StringRef sanitizerName) const {
+  // Assume no sanitizers are supported by default.
+  // This method should be overriden by a platform-specific subclass.
+  return false;
+}
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp
index eafeb20..f3339b0 100644
--- a/lib/Driver/ToolChains.cpp
+++ b/lib/Driver/ToolChains.cpp
@@ -965,6 +965,15 @@
                           getPlatformNameForTriple(TC.getTriple()));
 }
 
+static void getClangLibraryPathOnDarwin(SmallVectorImpl<char> &libPath,
+                                        const ArgList &args,
+                                        const ToolChain &TC) {
+  getRuntimeLibraryPath(libPath, args, TC);
+  // Remove platform name.
+  llvm::sys::path::remove_filename(libPath);
+  llvm::sys::path::append(libPath, "clang", "lib", "darwin");
+}
+
 /// Get the runtime library link path for static linking,
 /// which is platform-specific and found relative to the compiler.
 static void getRuntimeStaticLibraryPath(SmallVectorImpl<char> &runtimeLibPath,
@@ -1025,16 +1034,31 @@
   llvm_unreachable("Unsupported Darwin platform");
 }
 
+static std::string
+getSanitizerRuntimeLibNameForDarwin(StringRef Sanitizer, const llvm::Triple &Triple) {
+  return (Twine("libclang_rt.")
+      + Sanitizer + "_"
+      + getDarwinLibraryNameSuffixForTriple(Triple) + "_dynamic.dylib").str();
+}
+
+bool toolchains::Darwin::sanitizerRuntimeLibExists(
+    const ArgList &args, StringRef sanitizer) const {
+  SmallString<128> sanitizerLibPath;
+  getClangLibraryPathOnDarwin(sanitizerLibPath, args, *this);
+  llvm::sys::path::append(sanitizerLibPath,
+      getSanitizerRuntimeLibNameForDarwin(sanitizer, this->getTriple()));
+  return llvm::sys::fs::exists(sanitizerLibPath.str());
+}
+
+
 static void
 addLinkRuntimeLibForDarwin(const ArgList &Args, ArgStringList &Arguments,
                            StringRef DarwinLibName, bool AddRPath,
                            const ToolChain &TC) {
-  SmallString<128> Dir;
-  getRuntimeLibraryPath(Dir, Args, TC);
-  // Remove platform name.
-  llvm::sys::path::remove_filename(Dir);
-  llvm::sys::path::append(Dir, "clang", "lib", "darwin");
-  SmallString<128> P(Dir);
+  SmallString<128> ClangLibraryPath;
+  getClangLibraryPathOnDarwin(ClangLibraryPath, Args, TC);
+
+  SmallString<128> P(ClangLibraryPath);
   llvm::sys::path::append(P, DarwinLibName);
   Arguments.push_back(Args.MakeArgString(P));
 
@@ -1053,7 +1077,7 @@
     // Add the path to the resource dir to rpath to support using the dylib
     // from the default location without copying.
     Arguments.push_back("-rpath");
-    Arguments.push_back(Args.MakeArgString(Dir));
+    Arguments.push_back(Args.MakeArgString(ClangLibraryPath));
   }
 }
 
@@ -1068,10 +1092,8 @@
   Arguments.push_back("-lc++abi");
 
   addLinkRuntimeLibForDarwin(Args, Arguments,
-                    (Twine("libclang_rt.") + Sanitizer + "_" +
-                     getDarwinLibraryNameSuffixForTriple(TC.getTriple()) +
-                     "_dynamic.dylib").str(),
-                     /*AddRPath*/ true, TC);
+      getSanitizerRuntimeLibNameForDarwin(Sanitizer, TC.getTriple()),
+      /*AddRPath=*/ true, TC);
 }
 
 ToolChain::InvocationInfo
diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h
index eb0c2e3..6d980cc 100644
--- a/lib/Driver/ToolChains.h
+++ b/lib/Driver/ToolChains.h
@@ -33,7 +33,9 @@
 public:
   Darwin(const Driver &D, const llvm::Triple &Triple) : ToolChain(D, Triple) {}
   ~Darwin() = default;
-
+  bool sanitizerRuntimeLibExists(const llvm::opt::ArgList &args,
+                                 StringRef sanitizerLibName)
+      const override;
 };
 
 class LLVM_LIBRARY_VISIBILITY GenericUnix : public ToolChain {
diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp
index 151cfed..5ef2ec7 100644
--- a/lib/Frontend/CompilerInvocation.cpp
+++ b/lib/Frontend/CompilerInvocation.cpp
@@ -216,6 +216,16 @@
     }
   }
 
+  if (const Arg *A = Args.getLastArg(OPT_warn_long_expression_type_checking)) {
+    unsigned attempt;
+    if (StringRef(A->getValue()).getAsInteger(10, attempt)) {
+      Diags.diagnose(SourceLoc(), diag::error_invalid_arg_value,
+                     A->getAsString(Args), A->getValue());
+    } else {
+      Opts.WarnLongExpressionTypeChecking = attempt;
+    }
+  }
+
   Opts.PlaygroundTransform |= Args.hasArg(OPT_playground);
   if (Args.hasArg(OPT_disable_playground_transform))
     Opts.PlaygroundTransform = false;
@@ -849,7 +859,6 @@
       Args.hasArg(OPT_serialize_debugging_options);
   Opts.EnableSourceImport |= Args.hasArg(OPT_enable_source_import);
   Opts.ImportUnderlyingModule |= Args.hasArg(OPT_import_underlying_module);
-  Opts.SILSerializeAll |= Args.hasArg(OPT_sil_serialize_all);
   Opts.EnableSerializationNestedTypeLookupTable &=
       !Args.hasArg(OPT_disable_serialization_nested_type_lookup_table);
 
@@ -1319,6 +1328,7 @@
   if (Args.hasArg(OPT_sil_merge_partial_modules))
     Opts.MergePartialModules = true;
 
+  Opts.SILSerializeAll |= Args.hasArg(OPT_sil_serialize_all);
   // Parse the optimization level.
   if (const Arg *A = Args.getLastArg(OPT_O_Group)) {
     if (A->getOption().matches(OPT_Onone)) {
@@ -1410,18 +1420,23 @@
   }
 
   if (const Arg *A = Args.getLastArg(options::OPT_sanitize_EQ)) {
-    Opts.Sanitize = parseSanitizerArgValues(A, Triple, Diags);
+    Opts.Sanitize = parseSanitizerArgValues(
+        A, Triple, Diags,
+        /* sanitizerRuntimeLibExists= */[](StringRef libName) {
+
+          // The driver has checked the existence of the library
+          // already.
+          return true;
+        });
     IRGenOpts.Sanitize = Opts.Sanitize;
   }
 
+  if (Opts.Optimization > SILOptions::SILOptMode::None)
+    Opts.EnforceExclusivityDynamic = false;
   if (const Arg *A = Args.getLastArg(options::OPT_enforce_exclusivity_EQ)) {
     parseExclusivityEnforcementOptions(A, Opts, Diags);
   }
 
-  /// Should we use the copy-on-write implementation of opaque existentials.
-  /// FIXME: Use during bootstraping this feature. Remove later.
-  Opts.UseCOWExistentials |= Args.hasArg(OPT_enable_cow_existentials);
-
   return false;
 }
 
diff --git a/lib/Frontend/Frontend.cpp b/lib/Frontend/Frontend.cpp
index cbf3fe7..6225c16 100644
--- a/lib/Frontend/Frontend.cpp
+++ b/lib/Frontend/Frontend.cpp
@@ -55,8 +55,7 @@
 void CompilerInstance::createSILModule(bool WholeModule) {
   assert(MainModule && "main module not created yet");
   TheSILModule = SILModule::createEmptyModule(
-      getMainModule(), Invocation.getSILOptions(), WholeModule,
-      Invocation.getFrontendOptions().SILSerializeAll);
+    getMainModule(), Invocation.getSILOptions(), WholeModule);
 }
 
 void CompilerInstance::setPrimarySourceFile(SourceFile *SF) {
@@ -250,7 +249,7 @@
 
     if (Invocation.getFrontendOptions().EnableResilience)
       MainModule->setResilienceStrategy(ResilienceStrategy::Resilient);
-    else if (Invocation.getFrontendOptions().SILSerializeAll)
+    else if (Invocation.getSILOptions().SILSerializeAll)
       MainModule->setResilienceStrategy(ResilienceStrategy::Fragile);
   }
   return MainModule;
@@ -519,7 +518,8 @@
       if (mainIsPrimary) {
         performTypeChecking(MainFile, PersistentState.getTopLevelContext(),
                             TypeCheckOptions, CurTUElem,
-                            options.WarnLongFunctionBodies);
+                            options.WarnLongFunctionBodies,
+                            options.WarnLongExpressionTypeChecking);
       }
       CurTUElem = MainFile.Decls.size();
     } while (!Done);
@@ -546,8 +546,9 @@
     if (auto SF = dyn_cast<SourceFile>(File))
       if (PrimaryBufferID == NO_SUCH_BUFFER || SF == PrimarySourceFile)
         performTypeChecking(*SF, PersistentState.getTopLevelContext(),
-                            TypeCheckOptions, /*curElem*/0,
-                            options.WarnLongFunctionBodies);
+                            TypeCheckOptions, /*curElem*/ 0,
+                            options.WarnLongFunctionBodies,
+                            options.WarnLongExpressionTypeChecking);
 
   // Even if there were no source files, we should still record known
   // protocols.
diff --git a/lib/FrontendTool/FrontendTool.cpp b/lib/FrontendTool/FrontendTool.cpp
index 986a0da..c188aaa 100644
--- a/lib/FrontendTool/FrontendTool.cpp
+++ b/lib/FrontendTool/FrontendTool.cpp
@@ -511,7 +511,7 @@
     // TODO: remove once the frontend understands what action it should perform
     IRGenOpts.OutputKind = getOutputKind(Action);
 
-    return performLLVM(IRGenOpts, Instance.getASTContext(), Module.get());
+    return performLLVM(IRGenOpts, Instance.getASTContext(), Module.get(), Stats);
   }
 
   ReferencedNameTracker nameTracker;
@@ -691,13 +691,13 @@
       }
       astGuaranteedToCorrespondToSIL = !fileIsSIB(PrimaryFile);
       SM = performSILGeneration(*PrimaryFile, Invocation.getSILOptions(),
-                                None, opts.SILSerializeAll);
+                                None);
     } else {
       auto mod = Instance.getMainModule();
       astGuaranteedToCorrespondToSIL =
           llvm::none_of(mod->getFiles(), fileIsSIB);
       SM = performSILGeneration(mod, Invocation.getSILOptions(),
-                                opts.SILSerializeAll, true);
+                                true);
     }
   }
 
@@ -835,7 +835,8 @@
       serializationOpts.OutputPath = opts.ModuleOutputPath.c_str();
       serializationOpts.DocOutputPath = opts.ModuleDocOutputPath.c_str();
       serializationOpts.GroupInfoPath = opts.GroupInfoPath.c_str();
-      serializationOpts.SerializeAllSIL = opts.SILSerializeAll;
+      serializationOpts.SerializeAllSIL =
+          Invocation.getSILOptions().SILSerializeAll;
       if (opts.SerializeBridgingHeader)
         serializationOpts.ImportedHeader = opts.ImplicitObjCHeaderPath;
       serializationOpts.ModuleLinkName = opts.ModuleLinkName;
@@ -967,7 +968,7 @@
   // Now that we have a single IR Module, hand it over to performLLVM.
   return performLLVM(IRGenOpts, &Instance.getDiags(), nullptr, HashGlobal,
                   IRModule.get(), TargetMachine.get(), EffectiveLanguageVersion,
-                  opts.getSingleOutputFilename()) || HadError;
+                  opts.getSingleOutputFilename(), Stats) || HadError;
 }
 
 /// Returns true if an error occurred.
@@ -1032,6 +1033,18 @@
   return false;
 }
 
+static StringRef
+silOptModeArgStr(SILOptions::SILOptMode mode) {
+  switch (mode) {
+ case SILOptions::SILOptMode::Optimize:
+   return "O";
+ case SILOptions::SILOptMode::OptimizeUnchecked:
+   return "Ounchecked";
+ default:
+   return "Onone";
+  }
+}
+
 int swift::performFrontend(ArrayRef<const char *> Args,
                            const char *Argv0, void *MainAddr,
                            FrontendObserver *observer) {
@@ -1183,16 +1196,26 @@
       Invocation.getFrontendOptions().StatsOutputDir;
   std::unique_ptr<UnifiedStatsReporter> StatsReporter;
   if (!StatsOutputDir.empty()) {
-    auto &opts = Invocation.getFrontendOptions();
-    std::string TargetName = opts.ModuleName;
-    if (opts.PrimaryInput.hasValue() &&
-        opts.PrimaryInput.getValue().isFilename()) {
-      auto Index = opts.PrimaryInput.getValue().Index;
-      TargetName += ".";
-      TargetName += llvm::sys::path::filename(opts.InputFilenames[Index]);
+    auto &FEOpts = Invocation.getFrontendOptions();
+    auto &LangOpts = Invocation.getLangOptions();
+    auto &SILOpts = Invocation.getSILOptions();
+    StringRef InputName;
+    std::string TargetName = FEOpts.ModuleName;
+    if (FEOpts.PrimaryInput.hasValue() &&
+        FEOpts.PrimaryInput.getValue().isFilename()) {
+      auto Index = FEOpts.PrimaryInput.getValue().Index;
+      InputName = FEOpts.InputFilenames[Index];
     }
+    StringRef OptType = silOptModeArgStr(SILOpts.Optimization);
+    StringRef OutFile = FEOpts.getSingleOutputFilename();
+    StringRef OutputType = llvm::sys::path::extension(OutFile);
+    std::string TripleName = LangOpts.Target.normalize();
     StatsReporter = llvm::make_unique<UnifiedStatsReporter>("swift-frontend",
-                                                            TargetName,
+                                                            FEOpts.ModuleName,
+                                                            InputName,
+                                                            TripleName,
+                                                            OutputType,
+                                                            OptType,
                                                             StatsOutputDir);
   }
 
diff --git a/lib/FrontendTool/ReferenceDependencies.cpp b/lib/FrontendTool/ReferenceDependencies.cpp
index fa89c6e..b3c8fce 100644
--- a/lib/FrontendTool/ReferenceDependencies.cpp
+++ b/lib/FrontendTool/ReferenceDependencies.cpp
@@ -256,7 +256,8 @@
     case DeclKind::Destructor:
     case DeclKind::EnumElement:
     case DeclKind::MissingMember:
-      llvm_unreachable("cannot appear at the top level of a file");
+      // These can occur in malformed ASTs.
+      break;
     }
   }
 
diff --git a/lib/IDE/APIDigesterData.cpp b/lib/IDE/APIDigesterData.cpp
index 09e998d..8e7450d 100644
--- a/lib/IDE/APIDigesterData.cpp
+++ b/lib/IDE/APIDigesterData.cpp
@@ -119,7 +119,10 @@
   DeclNameViewer NewName = getNewName();
   if (!OldName.isFunction()) {
     assert(!NewName.isFunction());
-    return TypeMemberDiffItemSubKind::SimpleReplacement;
+    if (oldTypeName.empty())
+      return TypeMemberDiffItemSubKind::SimpleReplacement;
+    else
+      return TypeMemberDiffItemSubKind::QualifiedReplacement;
   }
   assert(OldName.isFunction());
   bool ToProperty = !NewName.isFunction();
@@ -134,17 +137,23 @@
     } else if (ToProperty) {
       assert(OldName.argSize() == 1);
       return TypeMemberDiffItemSubKind::HoistSelfAndUseProperty;
-    } else {
+    } else if (oldTypeName.empty()) {
       assert(NewName.argSize() + 1 == OldName.argSize());
       return TypeMemberDiffItemSubKind::HoistSelfOnly;
+    } else {
+      assert(NewName.argSize() == OldName.argSize());
+      return TypeMemberDiffItemSubKind::QualifiedReplacement;
     }
   } else if (ToProperty) {
     assert(OldName.argSize() == 0);
     assert(!removedIndex);
     return TypeMemberDiffItemSubKind::GlobalFuncToStaticProperty;
-  } else {
+  } else if (oldTypeName.empty()){
     assert(NewName.argSize() == OldName.argSize());
     return TypeMemberDiffItemSubKind::SimpleReplacement;
+  } else {
+    assert(NewName.argSize() == OldName.argSize());
+    return TypeMemberDiffItemSubKind::QualifiedReplacement;
   }
 }
 
@@ -242,7 +251,9 @@
   case APIDiffItemKind::ADK_CommonDiffItem: {
     auto *Left = static_cast<const CommonDiffItem*>(this);
     auto *Right = static_cast<const CommonDiffItem*>(&Other);
-    return Left->ChildIndex == Right->ChildIndex;
+    return
+      Left->DiffKind == Right->DiffKind &&
+      Left->ChildIndex == Right->ChildIndex;
   }
   case APIDiffItemKind::ADK_NoEscapeFuncParam: {
     auto *Left = static_cast<const NoEscapeFuncParam*>(this);
@@ -325,7 +336,7 @@
       RemovedIndexShort = RemovedIndex.getValue();
     return new (Alloc.Allocate<TypeMemberDiffItem>())
       TypeMemberDiffItem(Usr, NewTypeName, NewPrintedName, SelfIndexShort,
-                         RemovedIndexShort, OldPrintedName);
+                         RemovedIndexShort, OldTypeName, OldPrintedName);
   }
   case APIDiffItemKind::ADK_NoEscapeFuncParam: {
     return new (Alloc.Allocate<NoEscapeFuncParam>())
@@ -393,6 +404,8 @@
       out.mapRequired(getKeyContent(DiffItemKeyKind::KK_Usr), Item->usr);
       out.mapRequired(getKeyContent(DiffItemKeyKind::KK_OldPrintedName),
                       Item->oldPrintedName);
+      out.mapRequired(getKeyContent(DiffItemKeyKind::KK_OldTypeName),
+                      Item->oldTypeName);
       out.mapRequired(getKeyContent(DiffItemKeyKind::KK_NewPrintedName),
                       Item->newPrintedName);
       out.mapRequired(getKeyContent(DiffItemKeyKind::KK_NewTypeName),
diff --git a/lib/IDE/CodeCompletion.cpp b/lib/IDE/CodeCompletion.cpp
index 0f4c553..30b546e 100644
--- a/lib/IDE/CodeCompletion.cpp
+++ b/lib/IDE/CodeCompletion.cpp
@@ -3465,7 +3465,7 @@
     }
 
     if (leadingSequence.empty() && LHS->getType() &&
-        LHS->getType()->isLValueType()) {
+        LHS->getType()->hasLValueType()) {
       addAssignmentOperator(LHS->getType()->getRValueType(),
                             CurrDeclContext->getASTContext().TheEmptyTupleType);
     }
diff --git a/lib/IDE/Formatting.cpp b/lib/IDE/Formatting.cpp
index 35499c1..2952cbc 100644
--- a/lib/IDE/Formatting.cpp
+++ b/lib/IDE/Formatting.cpp
@@ -652,7 +652,7 @@
   /// Sometimes, target is a part of "parent", for instance, "#else" is a part
   /// of an ifconfigstmt, so that ifconfigstmt is not really the parent of "#else".
   bool isTargetPartOf(swift::ASTWalker::ParentTy Parent) {
-    if (auto Conf = dyn_cast_or_null<IfConfigStmt>(Parent.getAsStmt())) {
+    if (auto Conf = dyn_cast_or_null<IfConfigDecl>(Parent.getAsDecl())) {
       for (auto Clause : Conf->getClauses()) {
         if (Clause.Loc == TargetLocation)
           return true;
diff --git a/lib/IDE/SwiftSourceDocInfo.cpp b/lib/IDE/SwiftSourceDocInfo.cpp
index e38581f..400c3ba 100644
--- a/lib/IDE/SwiftSourceDocInfo.cpp
+++ b/lib/IDE/SwiftSourceDocInfo.cpp
@@ -533,8 +533,7 @@
                  unsigned StartIdx, unsigned EndIdx) :
     File(File), Ctx(File.getASTContext()), SM(Ctx.SourceMgr),
     AllTokens(AllTokens), StartTok(AllTokens[StartIdx]), EndTok(AllTokens[EndIdx]),
-    Start(StartTok.getLoc()), End(EndTok.getLoc()),
-    Content(getContentRange()) {
+    Start(StartTok.getLoc()), End(EndTok.getLoc()), Content(getContentRange()) {
       assert(Start.isValid() && End.isValid());
   }
 
@@ -579,8 +578,8 @@
     ContextStack.pop_back();
   }
 
-  static Implementation *createInstance(SourceFile &File, unsigned StartOff,
-                                        unsigned Length) {
+  static std::unique_ptr<Implementation>
+  createInstance(SourceFile &File, unsigned StartOff, unsigned Length) {
     SourceManager &SM = File.getASTContext().SourceMgr;
     unsigned BufferId = File.getBufferID().getValue();
 
@@ -609,11 +608,12 @@
 
     // The end token is exclusive.
     unsigned EndIdx = EndIt - 1 - AllTokens.begin();
-    return new Implementation(File, std::move(AllTokens), StartIdx, EndIdx);
+    return std::unique_ptr<Implementation>(new Implementation(File,
+      std::move(AllTokens), StartIdx, EndIdx));
   }
 
-  static Implementation *createInstance(SourceFile &File, SourceLoc Start,
-                                        SourceLoc End) {
+  static std::unique_ptr<Implementation>
+  createInstance(SourceFile &File, SourceLoc Start, SourceLoc End) {
     if (Start.isInvalid() || End.isInvalid())
       return nullptr;
     SourceManager &SM = File.getASTContext().SourceMgr;
@@ -645,7 +645,7 @@
     bool visitDeclReference(ValueDecl *D, CharSourceRange Range,
                             TypeDecl *CtorTyRef, ExtensionDecl *ExtTyRef, Type T,
                             ReferenceMetaData Data) override {
-      Impl->analyzeDeclRef(D, Range, T, Data);
+      Impl->analyzeDeclRef(D, Range.getStart(), T, Data);
       return true;
     }
   public:
@@ -700,6 +700,8 @@
   }
 
   OrphanKind getOrphanKind(ArrayRef<ASTNode> Nodes) {
+    if (Nodes.empty())
+      return OrphanKind::None;
 
     // Prepare the entire range.
     SourceRange WholeRange(Nodes.front().getStartLoc(),
@@ -828,13 +830,13 @@
     return ResolvedRangeInfo(Content);
   }
 
-  void analyzeDeclRef(ValueDecl *VD, CharSourceRange Range, Type Ty,
+  void analyzeDeclRef(ValueDecl *VD, SourceLoc Start, Type Ty,
                       ReferenceMetaData Data) {
     // Only collect decl ref.
     if (Data.Kind != SemaReferenceKind::DeclRef)
       return;
 
-    if (!isContainedInSelection(Range))
+    if (!isContainedInSelection(CharSourceRange(Start, 0)))
       return;
 
     // If the VD is declared outside of current file, exclude such decl.
@@ -859,7 +861,7 @@
       ReferencedDecls.emplace_back(VD, Ty);
     } else {
       // LValue type should take precedence.
-      if (!It->Ty->isLValueType() && Ty->isLValueType()) {
+      if (!It->Ty->hasLValueType() && Ty->hasLValueType()) {
         It->Ty = Ty;
       }
     }
@@ -893,7 +895,7 @@
 RangeResolver::RangeResolver(SourceFile &File, unsigned Offset, unsigned Length) :
   Impl(Implementation::createInstance(File, Offset, Length)) {}
 
-RangeResolver::~RangeResolver() { if (Impl) delete Impl; }
+RangeResolver::~RangeResolver() = default;
 
 bool RangeResolver::walkToExprPre(Expr *E) {
   if (!Impl->shouldEnter(E))
@@ -940,7 +942,7 @@
 bool RangeResolver::
 visitDeclReference(ValueDecl *D, CharSourceRange Range, TypeDecl *CtorTyRef,
                    ExtensionDecl *ExtTyRef, Type T, ReferenceMetaData Data) {
-  Impl->analyzeDeclRef(D, Range, T, Data);
+  Impl->analyzeDeclRef(D, Range.getStart(), T, Data);
   return true;
 }
 
diff --git a/lib/IDE/SyntaxModel.cpp b/lib/IDE/SyntaxModel.cpp
index b6a2c1a..5e15694 100644
--- a/lib/IDE/SyntaxModel.cpp
+++ b/lib/IDE/SyntaxModel.cpp
@@ -336,7 +336,7 @@
   bool searchForURL(CharSourceRange Range);
   bool findFieldsInDocCommentLine(SyntaxNode Node);
   bool findFieldsInDocCommentBlock(SyntaxNode Node);
-  bool isVisitedBeforeInIfConfigStmt(ASTNode Node) {
+  bool isVisitedBeforeInIfConfig(ASTNode Node) {
     return VisitedNodesInsideIfConfig.count(Node) > 0;
   }
 };
@@ -438,7 +438,7 @@
 }
 
 std::pair<bool, Expr *> ModelASTWalker::walkToExprPre(Expr *E) {
-  if (isVisitedBeforeInIfConfigStmt(E))
+  if (isVisitedBeforeInIfConfig(E))
     return {false, E};
 
   if (E->isImplicit())
@@ -556,7 +556,7 @@
 
 
 std::pair<bool, Stmt *> ModelASTWalker::walkToStmtPre(Stmt *S) {
-  if (isVisitedBeforeInIfConfigStmt(S)) {
+  if (isVisitedBeforeInIfConfig(S)) {
     return {false, S};
   }
   auto addExprElem = [&](SyntaxStructureElementKind K, const Expr *Elem,
@@ -699,39 +699,6 @@
       pushStructureNode(SN, SW);
     }
 
-  } else if (auto ConfigS = dyn_cast<IfConfigStmt>(S)) {
-    for (auto &Clause : ConfigS->getClauses()) {
-      unsigned TokLen;
-      if (&Clause == &*ConfigS->getClauses().begin())
-        TokLen = 3; // '#if'
-      else if (Clause.Cond == nullptr)
-        TokLen = 5; // '#else'
-      else
-        TokLen = 7; // '#elseif'
-      if (!passNonTokenNode({SyntaxNodeKind::BuildConfigKeyword,
-        CharSourceRange(Clause.Loc, TokLen) }))
-        return { false, nullptr };
-
-      if (Clause.Cond && !annotateIfConfigConditionIdentifiers(Clause.Cond))
-        return { false, nullptr };
-
-      for (auto &Element : Clause.Elements) {
-        if (auto *E = Element.dyn_cast<Expr*>()) {
-          E->walk(*this);
-        } else if (auto *S = Element.dyn_cast<Stmt*>()) {
-          S->walk(*this);
-        } else {
-          Element.get<Decl*>()->walk(*this);
-        }
-        VisitedNodesInsideIfConfig.insert(Element);
-      }
-    }
-    
-    if (!ConfigS->hadMissingEnd())
-      if (!passNonTokenNode({ SyntaxNodeKind::BuildConfigKeyword,
-        CharSourceRange(ConfigS->getEndLoc(), 6/*'#endif'*/) }))
-        return { false, nullptr };
-
   } else if (auto *DeferS = dyn_cast<DeferStmt>(S)) {
     if (auto *FD = DeferS->getTempDecl()) {
       auto *RetS = FD->getBody()->walk(*this);
@@ -752,7 +719,7 @@
 }
 
 bool ModelASTWalker::walkToDeclPre(Decl *D) {
-  if (isVisitedBeforeInIfConfigStmt(D))
+  if (isVisitedBeforeInIfConfig(D))
     return false;
   if (D->isImplicit())
     return false;
@@ -916,9 +883,16 @@
       if (Clause.Cond && !annotateIfConfigConditionIdentifiers(Clause.Cond))
         return false;
 
-      for (auto *D : Clause.Elements)
-        if (D->walk(*this))
-          return false;
+      for (auto &Element : Clause.Elements) {
+        if (auto *E = Element.dyn_cast<Expr*>()) {
+          E->walk(*this);
+        } else if (auto *S = Element.dyn_cast<Stmt*>()) {
+          S->walk(*this);
+        } else {
+          Element.get<Decl*>()->walk(*this);
+        }
+        VisitedNodesInsideIfConfig.insert(Element);
+      }
     }
     
     if (!ConfigD->hadMissingEnd())
diff --git a/lib/IDE/Utils.cpp b/lib/IDE/Utils.cpp
index bf5ff05..11e4307 100644
--- a/lib/IDE/Utils.cpp
+++ b/lib/IDE/Utils.cpp
@@ -45,15 +45,15 @@
       case ')':
         done = --ParenCount == 0;
         break;
-                  
+
       case '(':
         ++ParenCount;
         break;
-              
+
       case '"':
         e = skipStringInCode (e, End);
         break;
-              
+
       default:
         break;
       }
@@ -76,7 +76,7 @@
       case '"':
         done = true;
         break;
-                  
+
       case '\\':
         ++e;
         if (e >= End)
@@ -84,7 +84,7 @@
         else if (*e == '(')
           e = skipParenExpression (e, End);
         break;
-              
+
       default:
         break;
       }
@@ -113,8 +113,8 @@
 
   SourceCompleteResult SCR;
   SCR.IsComplete = !P.isInputIncomplete();
-    
-  // Use the same code that was in the REPL code to track the indent level 
+
+  // Use the same code that was in the REPL code to track the indent level
   // for now. In the future we should get this from the Parser if possible.
 
   CharSourceRange entireRange = SM.getRangeForBuffer(BufferID);
@@ -167,7 +167,7 @@
       if (!IndentInfos.empty())
         IndentInfos.pop_back();
       break;
-  
+
     default:
       if (LineSourceStart == nullptr && !isspace(*p))
         LineSourceStart = p;
@@ -781,8 +781,7 @@
   }
 }
 
-
-DeclNameViewer::DeclNameViewer(StringRef Text): HasParen(false) {
+DeclNameViewer::DeclNameViewer(StringRef Text): IsValid(true), HasParen(false) {
   auto ArgStart = Text.find_first_of('(');
   if (ArgStart == StringRef::npos) {
     BaseName = Text;
@@ -791,13 +790,21 @@
   HasParen = true;
   BaseName = Text.substr(0, ArgStart);
   auto ArgEnd = Text.find_last_of(')');
-  assert(ArgEnd != StringRef::npos);
+  if (ArgEnd == StringRef::npos) {
+    IsValid = false;
+    return;
+  }
   StringRef AllArgs = Text.substr(ArgStart + 1, ArgEnd - ArgStart - 1);
   AllArgs.split(Labels, ":");
   if (Labels.empty())
     return;
-  assert(Labels.back().empty());
-  Labels.pop_back();
+  if ((IsValid = Labels.back().empty())) {
+    Labels.pop_back();
+    std::transform(Labels.begin(), Labels.end(), Labels.begin(),
+        [](StringRef Label) {
+      return Label == "_" ? StringRef() : Label;
+    });
+  }
 }
 
 unsigned DeclNameViewer::commonPartsCount(DeclNameViewer &Other) const {
diff --git a/lib/IRGen/AllocStackHoisting.cpp b/lib/IRGen/AllocStackHoisting.cpp
index 90f6c43..5c47e78 100644
--- a/lib/IRGen/AllocStackHoisting.cpp
+++ b/lib/IRGen/AllocStackHoisting.cpp
@@ -111,8 +111,7 @@
 /// Hack to workaround a clang LTO bug.
 LLVM_ATTRIBUTE_NOINLINE
 void moveAllocStackToBeginningOfBlock(AllocStackInst* AS, SILBasicBlock *BB) {
-  AS->removeFromParent();
-  BB->push_front(AS);
+  AS->moveFront(BB);
 }
 
 /// Assign a single alloc_stack instruction to all the alloc_stacks in the
@@ -388,8 +387,7 @@
     auto *EntryBB = F->getEntryBlock();
     for (auto *AllocStack : AllocStackToHoist) {
       // Insert at the beginning of the entry block.
-      AllocStack->removeFromParent();
-      EntryBB->push_front(AllocStack);
+      AllocStack->moveFront(EntryBB);
       // Delete dealloc_stacks.
       eraseDeallocStacks(AllocStack);
     }
diff --git a/lib/IRGen/DebugTypeInfo.h b/lib/IRGen/DebugTypeInfo.h
index 417a669..8b67a23 100644
--- a/lib/IRGen/DebugTypeInfo.h
+++ b/lib/IRGen/DebugTypeInfo.h
@@ -100,8 +100,7 @@
   // instead? Otherwise optionals of archetypes etc will still have
   // 'isImplicitlyIndirect()' return false.
   bool isImplicitlyIndirect() const {
-    return Type->isLValueType() || isArchetype() ||
-      Type->is<InOutType>();
+    return Type->hasLValueType() || isArchetype() || Type->is<InOutType>();
   }
 
   bool isNull() const { return Type == nullptr; }
diff --git a/lib/IRGen/GenClass.cpp b/lib/IRGen/GenClass.cpp
index 7db597d..b123200 100644
--- a/lib/IRGen/GenClass.cpp
+++ b/lib/IRGen/GenClass.cpp
@@ -181,14 +181,30 @@
     // If not, we can have to access stored properties through the field
     // offset vector in the instantiated type metadata.
     bool ClassHasConcreteLayout = true;
-
+    
   public:
-    ClassLayoutBuilder(IRGenModule &IGM, SILType classType)
+    ClassLayoutBuilder(IRGenModule &IGM, SILType classType,
+                       ReferenceCounting refcounting)
       : StructLayoutBuilder(IGM)
     {
       // Start by adding a heap header.
-      addHeapHeader();
-
+      switch (refcounting) {
+      case swift::irgen::ReferenceCounting::Native:
+        // For native classes, place a full object header.
+        addHeapHeader();
+        break;
+      case swift::irgen::ReferenceCounting::ObjC:
+        // For ObjC-inheriting classes, we don't reliably know the size of the
+        // base class, but NSObject only has an `isa` pointer at most.
+        addNSObjectHeader();
+        break;
+      case swift::irgen::ReferenceCounting::Block:
+      case swift::irgen::ReferenceCounting::Unknown:
+      case swift::irgen::ReferenceCounting::Bridge:
+      case swift::irgen::ReferenceCounting::Error:
+        llvm_unreachable("not a class refcounting kind");
+      }
+      
       // Next, add the fields for the given class.
       auto theClass = classType.getClassOrBoundGenericClass();
       assert(theClass);
@@ -243,6 +259,25 @@
           // the field offset vector.
           ClassHasFixedSize = false;
 
+          // We can't use global offset variables if we are generic and layout
+          // dependent on a generic parameter because the objective-c layout might
+          // depend on the alignment of the generic stored property('t' in the
+          // example below).
+          //
+          // class Foo<T> : NSFoobar {
+          //   var x : AKlass = AKlass()
+          //   var y : AKlass = AKlass()
+          //   var t : T?
+          // }
+          if (classType.hasArchetype())
+            for (VarDecl *var : theClass->getStoredProperties()) {
+              SILType type = classType.getFieldType(var, IGM.getSILModule());
+              auto &eltType = IGM.getTypeInfo(type);
+              if (!eltType.isFixedSize()) {
+                if (type.hasArchetype())
+                  ClassHasConcreteLayout = false;
+              }
+            }
         } else if (IGM.isResilient(superclass, ResilienceExpansion::Maximal)) {
           ClassMetadataRequiresDynamicInitialization = true;
 
@@ -363,7 +398,7 @@
          "already generated layout");
 
   // Add the heap header.
-  ClassLayoutBuilder builder(IGM, classType);
+  ClassLayoutBuilder builder(IGM, classType, Refcount);
 
   // generateLayout can call itself recursively in order to compute a layout
   // for the abstract type.  If classType shares an exemplar types with the
@@ -390,7 +425,8 @@
 const StructLayout &
 ClassTypeInfo::getLayout(IRGenModule &IGM, SILType classType) const {
   // Return the cached layout if available.
-  if (Layout) return *Layout;
+  if (Layout)
+    return *Layout;
 
   generateLayout(IGM, classType);
   return *Layout;
@@ -470,7 +506,13 @@
   }
 }
 
-
+FieldAccess
+irgen::getClassFieldAccess(IRGenModule &IGM, SILType baseType, VarDecl *field) {
+  auto &baseClassTI = IGM.getTypeInfo(baseType).as<ClassTypeInfo>();
+  auto &classLayout = baseClassTI.getClassLayout(IGM, baseType);
+  unsigned fieldIndex = classLayout.getFieldIndex(field);
+  return classLayout.AllFieldAccesses[fieldIndex];
+}
 
 OwnedAddress irgen::projectPhysicalClassMemberAddress(IRGenFunction &IGF,
                                                       llvm::Value *base,
@@ -952,7 +994,7 @@
                     classTI.getLayout(*this, selfType),
                     classTI.getClassLayout(*this, selfType));
 
-  IRGen.addClassForArchiveNameRegistration(D);
+  IRGen.addClassForEagerInitialization(D);
 
   emitNestedTypeDecls(D->getMembers());
   emitFieldMetadataRecord(D);
diff --git a/lib/IRGen/GenClass.h b/lib/IRGen/GenClass.h
index 505f512..55f664c 100644
--- a/lib/IRGen/GenClass.h
+++ b/lib/IRGen/GenClass.h
@@ -48,6 +48,7 @@
   enum class ReferenceCounting : unsigned char;
   enum class IsaEncoding : unsigned char;
   enum class ClassDeallocationKind : unsigned char;
+  enum class FieldAccess : uint8_t;
   
   OwnedAddress projectPhysicalClassMemberAddress(IRGenFunction &IGF,
                                                  llvm::Value *base,
@@ -138,6 +139,10 @@
   tryEmitConstantClassFragilePhysicalMemberOffset(IRGenModule &IGM,
                                                   SILType baseType,
                                                   VarDecl *field);
+                                                  
+  FieldAccess getClassFieldAccess(IRGenModule &IGM,
+                                  SILType baseType,
+                                  VarDecl *field);
 
   /// What reference counting mechanism does a class-like type use?
   ReferenceCounting getReferenceCountingForType(IRGenModule &IGM,
diff --git a/lib/IRGen/GenDecl.cpp b/lib/IRGen/GenDecl.cpp
index b036575..5d6c4f7 100644
--- a/lib/IRGen/GenDecl.cpp
+++ b/lib/IRGen/GenDecl.cpp
@@ -948,8 +948,8 @@
   }
 }
 
-void IRGenerator::emitNSArchiveClassNameRegistration() {
-  if (ClassesForArchiveNameRegistration.empty())
+void IRGenerator::emitEagerClassInitialization() {
+  if (ClassesForEagerInitialization.empty())
     return;
 
   // Emit the register function in the primary module.
@@ -957,37 +957,28 @@
 
   llvm::Function *RegisterFn = llvm::Function::Create(
                                 llvm::FunctionType::get(IGM->VoidTy, false),
-                                llvm::GlobalValue::InternalLinkage,
-                                "_swift_register_class_names_for_archives");
+                                llvm::GlobalValue::PrivateLinkage,
+                                "_swift_eager_class_initialization");
   IRGenFunction RegisterIGF(*IGM, RegisterFn);
   RegisterFn->setAttributes(IGM->constructInitialAttributes());
   IGM->Module.getFunctionList().push_back(RegisterFn);
   RegisterFn->setCallingConv(IGM->DefaultCC);
 
-  for (ClassDecl *CD : ClassesForArchiveNameRegistration) {
+  for (ClassDecl *CD : ClassesForEagerInitialization) {
     Type Ty = CD->getDeclaredType();
     llvm::Value *MetaData = RegisterIGF.emitTypeMetadataRef(getAsCanType(Ty));
-    if (auto *LegacyAttr = CD->getAttrs().
-          getAttribute<NSKeyedArchiverClassNameAttr>()) {
-      // Register the name for the class in the NSKeyed(Un)Archiver.
-      llvm::Value *NameStr = IGM->getAddrOfGlobalString(LegacyAttr->Name);
-      RegisterIGF.Builder.CreateCall(IGM->getRegisterClassNameForArchivingFn(),
-                                     {NameStr, MetaData});
-    } else {
-      assert(CD->getAttrs().hasAttribute<StaticInitializeObjCMetadataAttr>());
+    assert(CD->getAttrs().hasAttribute<StaticInitializeObjCMetadataAttr>());
 
-      // In this case we don't add a name mapping, but just get the metadata
-      // to make sure that the class is registered. But: we need to add a use
-      // (empty inline asm instruction) for the metadata. Otherwise
-      // llvm would optimize the metadata accessor call away because it's
-      // defined as "readnone".
-      llvm::FunctionType *asmFnTy =
-        llvm::FunctionType::get(IGM->VoidTy, {MetaData->getType()},
-                                false /* = isVarArg */);
-      llvm::InlineAsm *inlineAsm =
-        llvm::InlineAsm::get(asmFnTy, "", "r", true /* = SideEffects */);
-      RegisterIGF.Builder.CreateCall(inlineAsm, MetaData);
-    }
+    // Get the metadata to make sure that the class is registered. We need to 
+    // add a use (empty inline asm instruction) for the metadata. Otherwise
+    // llvm would optimize the metadata accessor call away because it's
+    // defined as "readnone".
+    llvm::FunctionType *asmFnTy =
+      llvm::FunctionType::get(IGM->VoidTy, {MetaData->getType()},
+                              false /* = isVarArg */);
+    llvm::InlineAsm *inlineAsm =
+      llvm::InlineAsm::get(asmFnTy, "", "r", true /* = SideEffects */);
+    RegisterIGF.Builder.CreateCall(inlineAsm, MetaData);
   }
   RegisterIGF.Builder.CreateRetVoid();
 
@@ -1361,9 +1352,8 @@
     auto isCompletelySerialized = conformanceModule->getResilienceStrategy() ==
                                   ResilienceStrategy::Fragile;
 
-    // The conformance is fragile if it is in a -sil-serialize-all module, or
-    // has a fully publicly determined layout.
-    return isCompletelySerialized || conformance->hasFixedLayout();
+    // The conformance is fragile if it is in a -sil-serialize-all module.
+    return isCompletelySerialized;
   }
   return false;
 }
diff --git a/lib/IRGen/GenExistential.cpp b/lib/IRGen/GenExistential.cpp
index 5202921..fcf5fc8 100644
--- a/lib/IRGen/GenExistential.cpp
+++ b/lib/IRGen/GenExistential.cpp
@@ -61,9 +61,6 @@
     unsigned NumTables;
     // If you add anything to the layout computation, you might need
     // to update certain uses;  check the external uses of getNumTables().
-    // For example, getAssignExistentialsFunction relies on being uniqued
-    // for different layout kinds.
-
   public:
     explicit OpaqueExistentialLayout(unsigned numTables)
       : NumTables(numTables) {}
@@ -121,19 +118,6 @@
 } // end anonymous namespace
 
 
-/// Given the address of an existential object, destroy it.
-static void emitDestroyExistential(IRGenFunction &IGF, Address addr,
-                                   OpaqueExistentialLayout layout) {
-  llvm::Value *metadata = layout.loadMetadataRef(IGF, addr);
-
-  Address object = layout.projectExistentialBuffer(IGF, addr);
-  emitDestroyBufferCall(IGF, metadata, object);
-}
-
-static llvm::Constant *getAssignExistentialsFunction(IRGenModule &IGM,
-                                               llvm::Type *objectPtrTy,
-                                               OpaqueExistentialLayout layout);
-
 static llvm::Constant *getAssignBoxedOpaqueExistentialBufferFunction(
     IRGenModule &IGM, OpaqueExistentialLayout existLayout,
     llvm::Type *existContainerPointerTy);
@@ -312,21 +296,13 @@
     auto objPtrTy = dest.getAddress()->getType();
 
     // Use copy-on-write existentials?
-    if (IGF.IGM.getSILModule().getOptions().UseCOWExistentials) {
-      auto fn = getAssignBoxedOpaqueExistentialBufferFunction(
-          IGF.IGM, getLayout(), objPtrTy);
-      auto call =
-          IGF.Builder.CreateCall(fn, {dest.getAddress(), src.getAddress()});
-      call->setCallingConv(IGF.IGM.DefaultCC);
-      call->setDoesNotThrow();
-      return;
-    }
-
-    auto fn = getAssignExistentialsFunction(IGF.IGM, objPtrTy, getLayout());
-    auto call = IGF.Builder.CreateCall(
-        fn, {dest.getAddress(), src.getAddress()});
+    auto fn = getAssignBoxedOpaqueExistentialBufferFunction(
+        IGF.IGM, getLayout(), objPtrTy);
+    auto call =
+        IGF.Builder.CreateCall(fn, {dest.getAddress(), src.getAddress()});
     call->setCallingConv(IGF.IGM.DefaultCC);
     call->setDoesNotThrow();
+    return;
   }
 
   llvm::Value *copyType(IRGenFunction &IGF, Address dest, Address src) const {
@@ -376,16 +352,12 @@
   void destroy(IRGenFunction &IGF, Address addr, SILType T) const override {
 
     // Use copy-on-write existentials?
-    if (IGF.IGM.getSILModule().getOptions().UseCOWExistentials) {
-      auto fn = getDestroyBoxedOpaqueExistentialBufferFunction(
-          IGF.IGM, getLayout(), addr.getAddress()->getType());
-      auto call = IGF.Builder.CreateCall(fn, {addr.getAddress()});
-      call->setCallingConv(IGF.IGM.DefaultCC);
-      call->setDoesNotThrow();
-      return;
-    }
-
-    emitDestroyExistential(IGF, addr, getLayout());
+    auto fn = getDestroyBoxedOpaqueExistentialBufferFunction(
+        IGF.IGM, getLayout(), addr.getAddress()->getType());
+    auto call = IGF.Builder.CreateCall(fn, {addr.getAddress()});
+    call->setCallingConv(IGF.IGM.DefaultCC);
+    call->setDoesNotThrow();
+    return;
   }
 };
 
@@ -1531,112 +1503,6 @@
                                              align, baseTI);
 }
 
-/// Return a function which performs an assignment operation on two
-/// existentials.
-///
-/// Existential types are nominal, so we potentially need to cast the
-/// function to the appropriate object-pointer type.
-static llvm::Constant *getAssignExistentialsFunction(IRGenModule &IGM,
-                                                     llvm::Type *objectPtrTy,
-                                                     OpaqueExistentialLayout layout) {
-  llvm::Type *argTys[] = { objectPtrTy, objectPtrTy };
-
-  // __swift_assign_existentials_N is the well-known function for
-  // assigning existential types with N witness tables.
-  llvm::SmallString<40> fnName;
-  llvm::raw_svector_ostream(fnName)
-    << "__swift_assign_existentials_" << layout.getNumTables();
-
-  return IGM.getOrCreateHelperFunction(fnName, IGM.VoidTy, argTys,
-                                       [&](IRGenFunction &IGF) {
-    auto it = IGF.CurFn->arg_begin();
-    Address dest(&*(it++), getFixedBufferAlignment(IGM));
-    Address src(&*(it++), getFixedBufferAlignment(IGM));
-
-    // If doing a self-assignment, we're done.
-    llvm::BasicBlock *doneBB = IGF.createBasicBlock("done");
-    llvm::BasicBlock *contBB = IGF.createBasicBlock("cont");
-    llvm::Value *isSelfAssign =
-      IGF.Builder.CreateICmpEQ(dest.getAddress(), src.getAddress(),
-                               "isSelfAssign");
-    IGF.Builder.CreateCondBr(isSelfAssign, doneBB, contBB);
-
-    // Project down to the buffers.
-    IGF.Builder.emitBlock(contBB);
-    // We don't need a ConditionalDominanceScope here because (1) there's no
-    // code in the other condition and (2) we immediately return.
-    Address destBuffer = layout.projectExistentialBuffer(IGF, dest);
-    Address srcBuffer = layout.projectExistentialBuffer(IGF, src);
-
-    // Load the metadata tables.
-    Address destMetadataSlot = layout.projectMetadataRef(IGF, dest);
-    llvm::Value *destMetadata = IGF.Builder.CreateLoad(destMetadataSlot);
-    llvm::Value *srcMetadata = layout.loadMetadataRef(IGF, src);
-
-    // Check whether the metadata match.
-    llvm::BasicBlock *matchBB = IGF.createBasicBlock("match");
-    llvm::BasicBlock *noMatchBB = IGF.createBasicBlock("no-match");
-    llvm::Value *sameMetadata =
-      IGF.Builder.CreateICmpEQ(destMetadata, srcMetadata, "sameMetadata");
-    IGF.Builder.CreateCondBr(sameMetadata, matchBB, noMatchBB);
-
-    // If so, do a direct assignment.
-    IGF.Builder.emitBlock(matchBB);
-    {
-      ConditionalDominanceScope matchCondition(IGF);
-
-      llvm::Value *destObject =
-        emitProjectBufferCall(IGF, destMetadata, destBuffer);
-      llvm::Value *srcObject =
-        emitProjectBufferCall(IGF, destMetadata, srcBuffer);
-      emitAssignWithCopyCall(IGF, destMetadata,
-                             Address(destObject, Alignment(1)),
-                             Address(srcObject, Alignment(1)));
-      IGF.Builder.CreateBr(doneBB);
-    }
-
-    // Otherwise, destroy and copy-initialize.
-    // TODO: should we copy-initialize and then destroy?  That's
-    // possible if we copy aside, which is a small expense but
-    // always safe.  Otherwise the destroy (which can invoke user code)
-    // could see invalid memory at this address.  These are basically
-    // the madnesses that boost::variant has to go through, with the
-    // advantage of address-invariance.
-    IGF.Builder.emitBlock(noMatchBB);
-    {
-      ConditionalDominanceScope noMatchCondition(IGF);
-
-      // Store the metadata ref.
-      IGF.Builder.CreateStore(srcMetadata, destMetadataSlot);
-
-      // Store the protocol witness tables.
-      unsigned numTables = layout.getNumTables();
-      for (unsigned i = 0, e = numTables; i != e; ++i) {
-        Address destTableSlot = layout.projectWitnessTable(IGF, dest, i);
-        llvm::Value *srcTable = layout.loadWitnessTable(IGF, src, i);
-
-        // Overwrite the old witness table.
-        IGF.Builder.CreateStore(srcTable, destTableSlot);
-      }
-
-      // Destroy the old value.
-      emitDestroyBufferCall(IGF, destMetadata, destBuffer);
-
-      // Copy-initialize with the new value.  Again, pull a value
-      // witness table from the source metadata if we can't use a
-      // protocol witness table.
-      emitInitializeBufferWithCopyOfBufferCall(IGF, srcMetadata,
-                                               destBuffer,
-                                               srcBuffer);
-      IGF.Builder.CreateBr(doneBB);
-    }
-
-    // All done.
-    IGF.Builder.emitBlock(doneBB);
-    IGF.Builder.CreateRetVoid();
-  }, true /*noinline*/);
-}
-
 /// Emit protocol witness table pointers for the given protocol conformances,
 /// passing each emitted witness table index into the given function body.
 static void forEachProtocolWitnessTable(IRGenFunction &IGF,
@@ -1778,21 +1644,6 @@
   IGF.Builder.CreateCall(IGF.IGM.getDeallocErrorFn(), {box, srcMetadata});
 }
 
-/// "Deinitialize" an existential container whose contained value is allocated
-/// but uninitialized, by deallocating the buffer owned by the container if any.
-void irgen::emitOpaqueExistentialContainerDeinit(IRGenFunction &IGF,
-                                                 Address container,
-                                                 SILType type) {
-  assert(type.isExistentialType());
-  assert(!type.isClassExistentialType());
-  auto &ti = IGF.getTypeInfo(type).as<OpaqueExistentialTypeInfo>();
-  auto layout = ti.getLayout();
-
-  llvm::Value *metadata = layout.loadMetadataRef(IGF, container);
-  Address buffer = layout.projectExistentialBuffer(IGF, container);
-  emitDeallocateBufferCall(IGF, metadata, buffer);
-}
-
 /// Emit a class existential container from a class instance value
 /// as an explosion.
 void irgen::emitClassExistentialContainer(IRGenFunction &IGF,
@@ -1910,16 +1761,13 @@
   Address buffer = existLayout.projectExistentialBuffer(IGF, addr);
   llvm::Value *object;
 
-  if (IGF.getSILModule().getOptions().UseCOWExistentials) {
-    auto *projectFunc = getProjectBoxedOpaqueExistentialFunction(
-        IGF, OpenedExistentialAccess::Immutable, existLayout);
-    auto *addrOfValue =
-        IGF.Builder.CreateCall(projectFunc, {buffer.getAddress(), metadata});
-    addrOfValue->setCallingConv(IGF.IGM.DefaultCC);
-    addrOfValue->setDoesNotThrow();
-    object = addrOfValue;
-  } else
-    object = emitProjectBufferCall(IGF, metadata, buffer);
+  auto *projectFunc = getProjectBoxedOpaqueExistentialFunction(
+      IGF, OpenedExistentialAccess::Immutable, existLayout);
+  auto *addrOfValue =
+      IGF.Builder.CreateCall(projectFunc, {buffer.getAddress(), metadata});
+  addrOfValue->setCallingConv(IGF.IGM.DefaultCC);
+  addrOfValue->setDoesNotThrow();
+  object = addrOfValue;
 
   llvm::Value *dynamicType =
     IGF.Builder.CreateCall(IGF.IGM.getGetDynamicTypeFn(),
@@ -2020,74 +1868,6 @@
   out.add(tablesAndValue.first);
 }
 
-/// Emit a projection from an existential container to its concrete value
-/// buffer with the type metadata for the contained value.
-///
-/// \param _openedArchetype When non-null, the opened archetype
-/// that captures the details of this existential.
-std::pair<Address, llvm::Value*>
-irgen::emitIndirectExistentialProjectionWithMetadata(IRGenFunction &IGF,
-                                                     Address base,
-                                                     SILType baseTy,
-                                                     CanType _openedArchetype) {
-  CanArchetypeType openedArchetype;
-  if (_openedArchetype) openedArchetype = cast<ArchetypeType>(_openedArchetype);
-
-  assert(baseTy.isExistentialType());
-  if (baseTy.isClassExistentialType()) {
-    auto &baseTI = IGF.getTypeInfo(baseTy).as<ClassExistentialTypeInfo>();
-    auto valueAddr = baseTI.projectValue(IGF, base);
-    auto value = IGF.Builder.CreateLoad(valueAddr);
-    auto metadata = emitDynamicTypeOfOpaqueHeapObject(IGF, value);
-
-    // If we are projecting into an opened archetype, capture the
-    // witness tables.
-    if (openedArchetype) {
-      SmallVector<llvm::Value *, 4> wtables;
-      for (unsigned i = 0, n = baseTI.getNumStoredProtocols(); i != n; ++i) {
-        auto wtableAddr = baseTI.projectWitnessTable(IGF, base, i);
-        wtables.push_back(IGF.Builder.CreateLoad(wtableAddr));
-      }
-
-      IGF.bindArchetype(openedArchetype, metadata, wtables);
-    }
-
-    return {valueAddr, metadata};
-  } else {
-    auto &baseTI = IGF.getTypeInfo(baseTy).as<OpaqueExistentialTypeInfo>();
-    auto layout = baseTI.getLayout();
-
-    llvm::Value *metadata = layout.loadMetadataRef(IGF, base);
-    Address buffer = layout.projectExistentialBuffer(IGF, base);
-    llvm::Value *object =
-      emitProjectBufferCall(IGF, metadata, buffer);
-
-    // If we are projecting into an opened archetype, capture the
-    // witness tables.
-    if (openedArchetype) {
-      SmallVector<llvm::Value *, 4> wtables;
-      for (unsigned i = 0, n = layout.getNumTables(); i != n; ++i) {
-        wtables.push_back(layout.loadWitnessTable(IGF, base, i));
-      }
-      IGF.bindArchetype(openedArchetype, metadata, wtables);
-    }
-
-    return {Address(object, Alignment(1)), metadata};
-  }
-}
-
-/// Emit a projection from an existential container to its concrete value
-/// buffer.
-Address irgen::emitOpaqueExistentialProjection(IRGenFunction &IGF,
-                                               Address base,
-                                               SILType baseTy,
-                                               CanArchetypeType openedArchetype)
-{
-  return emitIndirectExistentialProjectionWithMetadata(IGF, base, baseTy,
-                                                       openedArchetype)
-    .first;
-}
-
 /// Extract the instance pointer from a class existential value.
 llvm::Value *
 irgen::emitClassExistentialProjection(IRGenFunction &IGF,
diff --git a/lib/IRGen/GenExistential.h b/lib/IRGen/GenExistential.h
index 3b38c20..c4327cb 100644
--- a/lib/IRGen/GenExistential.h
+++ b/lib/IRGen/GenExistential.h
@@ -71,28 +71,12 @@
                                   CanType formalSrcType,
                                  ArrayRef<ProtocolConformanceRef> conformances);
   
-  /// "Deinitialize" an existential container whose contained value is allocated
-  /// but uninitialized, by deallocating the buffer owned by the container if any.
-  void emitOpaqueExistentialContainerDeinit(IRGenFunction &IGF,
-                                            Address container,
-                                            SILType type);
-  
   /// Deallocate a boxed existential container with uninitialized space to hold
   /// a value of a given type.
   void emitBoxedExistentialContainerDeallocation(IRGenFunction &IGF,
                                                  Explosion &container,
                                                  SILType containerType,
                                                  CanType valueType);
-  
-  /// Emit a projection from an existential container address to the address
-  /// of its concrete value buffer.
-  ///
-  /// \param openedArchetype If non-null, the archetype that will capture the
-  /// metadata and witness tables produced by projecting the archetype.
-  Address emitOpaqueExistentialProjection(IRGenFunction &IGF,
-                                          Address base,
-                                          SILType baseTy,
-                                          CanArchetypeType openedArchetype);
 
   /// Allocate the storage for an opaque existential in the existential
   /// container.
@@ -162,12 +146,6 @@
   void emitMetatypeOfMetatype(IRGenFunction &IGF, Explosion &value,
                               SILType existentialType, Explosion &out);
 
-  std::pair<Address, llvm::Value*>
-  emitIndirectExistentialProjectionWithMetadata(IRGenFunction &IGF,
-                                                Address base,
-                                                SILType baseTy,
-                                                CanType openedArchetype);
-  
 } // end namespace irgen
 } // end namespace swift
 
diff --git a/lib/IRGen/GenKeyPath.cpp b/lib/IRGen/GenKeyPath.cpp
index 4bb4429..daf39d9 100644
--- a/lib/IRGen/GenKeyPath.cpp
+++ b/lib/IRGen/GenKeyPath.cpp
@@ -25,6 +25,7 @@
 #include "IRGenFunction.h"
 #include "IRGenModule.h"
 #include "ProtocolInfo.h"
+#include "StructLayout.h"
 #include "llvm/ADT/SetVector.h"
 #include "swift/SIL/SILInstruction.h"
 #include "swift/SIL/SILLocation.h"
@@ -209,18 +210,10 @@
     auto &component = pattern->getComponents()[i];
     switch (auto kind = component.getKind()) {
     case KeyPathPatternComponent::Kind::StoredProperty: {
-      // Try to get a constant offset if we can.
       auto property = cast<VarDecl>(component.getStoredPropertyDecl());
-      llvm::Constant *offset;
-      bool isResolved;
-      std::tie(offset, isResolved)
-        = getPropertyOffsetOrIndirectOffset(loweredBaseTy, property);
-      offset = llvm::ConstantExpr::getTruncOrBitCast(offset, Int32Ty);
-      bool isStruct = (bool)loweredBaseTy.getStructOrBoundGenericStruct();
       
-      // If the projection is a statically known integer, try to pack it into
-      // the key path payload.
-      if (isResolved) {
+      auto addFixedOffset = [&](bool isStruct, llvm::Constant *offset) {
+        offset = llvm::ConstantExpr::getTruncOrBitCast(offset, Int32Ty);
         if (auto offsetInt = dyn_cast_or_null<llvm::ConstantInt>(offset)) {
           auto offsetValue = offsetInt->getValue().getZExtValue();
           if (KeyPathComponentHeader::offsetCanBeInline(offsetValue)) {
@@ -228,28 +221,87 @@
               ? KeyPathComponentHeader::forStructComponentWithInlineOffset(offsetValue)
               : KeyPathComponentHeader::forClassComponentWithInlineOffset(offsetValue);
             fields.addInt32(header.getData());
-            break;
+            return;
           }
         }
-      
         auto header = isStruct
           ? KeyPathComponentHeader::forStructComponentWithOutOfLineOffset()
           : KeyPathComponentHeader::forClassComponentWithOutOfLineOffset();
         fields.addInt32(header.getData());
+        fields.add(offset);
+      };
+      
+      // For a struct stored property, we may know the fixed offset of the field,
+      // or we may need to fetch it out of the type's metadata at instantiation
+      // time.
+      if (loweredBaseTy.getStructOrBoundGenericStruct()) {
+        if (auto offset = emitPhysicalStructMemberFixedOffset(*this,
+                                                              loweredBaseTy,
+                                                              property)) {
+          // We have a known constant fixed offset.
+          addFixedOffset(/*struct*/ true, offset);
+          break;
+        }
         
-        fields.add(offset);
-      } else {
-        // Otherwise, stash the offset of the field offset within the metadata
-        // object, so we can pull it out at instantiation time.
-        // TODO: We'll also need a way to handle resilient field offsets, once
-        // field offset vectors no longer cover all fields in the type.
-        KeyPathComponentHeader header = isStruct
-          ? KeyPathComponentHeader::forStructComponentWithUnresolvedOffset()
-          : KeyPathComponentHeader::forClassComponentWithUnresolvedOffset();
+        // If the offset isn't fixed, try instead to get the field offset out
+        // of the type metadata at instantiation time.
+        auto fieldOffset = emitPhysicalStructMemberOffsetOfFieldOffset(
+                                                *this, loweredBaseTy, property);
+        fieldOffset = llvm::ConstantExpr::getTruncOrBitCast(fieldOffset,
+                                                            Int32Ty);
+        auto header = KeyPathComponentHeader::forStructComponentWithUnresolvedFieldOffset();
         fields.addInt32(header.getData());
-        fields.add(offset);
+        fields.add(fieldOffset);
+        break;
       }
-      break;
+      
+      // For a class, we may know the fixed offset of a field at compile time,
+      // or we may need to fetch it at instantiation time. Depending on the
+      // ObjC-ness and resilience of the class hierarchy, there might be a few
+      // different ways we need to go about this.
+      if (loweredBaseTy.getClassOrBoundGenericClass()) {
+        switch (getClassFieldAccess(*this, loweredBaseTy, property)) {
+        case FieldAccess::ConstantDirect: {
+          // Known constant fixed offset.
+          auto offset = tryEmitConstantClassFragilePhysicalMemberOffset(*this,
+                                                                  loweredBaseTy,
+                                                                  property);
+          assert(offset && "no constant offset for ConstantDirect field?!");
+          addFixedOffset(/*struct*/ false, offset);
+          break;
+        }
+        case FieldAccess::NonConstantDirect: {
+          // A constant offset that's determined at class realization time.
+          // We have to load the offset from a global ivar.
+          auto header =
+            KeyPathComponentHeader::forClassComponentWithUnresolvedIndirectOffset();
+          fields.addInt32(header.getData());
+          auto offsetVar = getAddrOfFieldOffset(property, /*indirect*/ false,
+                                                NotForDefinition);
+          fields.add(cast<llvm::Constant>(offsetVar.getAddress()));
+          break;
+        }
+        case FieldAccess::ConstantIndirect: {
+          // An offset that depends on the instance's generic parameterization,
+          // but whose field offset is at a known vtable offset.
+          auto header =
+            KeyPathComponentHeader::forClassComponentWithUnresolvedFieldOffset();
+          fields.addInt32(header.getData());
+          auto fieldOffset =
+            getClassFieldOffset(*this, loweredBaseTy.getClassOrBoundGenericClass(),
+                                property);
+          fields.addInt32(fieldOffset.getValue());
+          break;
+        }
+        case FieldAccess::NonConstantIndirect:
+          // An offset that depends on the instance's generic parameterization,
+          // whose vtable offset is also unknown.
+          // TODO: This doesn't happen until class resilience is enabled.
+          llvm_unreachable("not implemented");
+        }
+        break;
+      }
+      llvm_unreachable("not struct or class");
     }
     case KeyPathPatternComponent::Kind::GettableProperty:
     case KeyPathPatternComponent::Kind::SettableProperty: {
diff --git a/lib/IRGen/GenMeta.cpp b/lib/IRGen/GenMeta.cpp
index 1823255..8b76bfd 100644
--- a/lib/IRGen/GenMeta.cpp
+++ b/lib/IRGen/GenMeta.cpp
@@ -19,6 +19,7 @@
 #include "swift/AST/CanTypeVisitor.h"
 #include "swift/AST/ExistentialLayout.h"
 #include "swift/AST/Decl.h"
+#include "swift/AST/Attr.h"
 #include "swift/AST/IRGenOptions.h"
 #include "swift/AST/SubstitutionMap.h"
 #include "swift/AST/Types.h"
@@ -3349,6 +3350,14 @@
         flags |= ClassFlags::UsesSwift1Refcounting;
       }
 
+      DeclAttributes attrs = Target->getAttrs();
+      if (auto objc = attrs.getAttribute<ObjCAttr>()) {
+        if (objc->getName())
+          flags |= ClassFlags::HasCustomObjCName;
+      }
+      if (attrs.hasAttribute<ObjCRuntimeNameAttr>())
+        flags |= ClassFlags::HasCustomObjCName;
+
       B.addInt32((uint32_t) flags);
     }
 
@@ -5525,6 +5534,7 @@
   case KnownProtocolKind::ExpressibleByImageLiteral:
   case KnownProtocolKind::ExpressibleByFileReferenceLiteral:
   case KnownProtocolKind::ExpressibleByBuiltinBooleanLiteral:
+  case KnownProtocolKind::ExpressibleByBuiltinUTF16ExtendedGraphemeClusterLiteral:
   case KnownProtocolKind::ExpressibleByBuiltinExtendedGraphemeClusterLiteral:
   case KnownProtocolKind::ExpressibleByBuiltinFloatLiteral:
   case KnownProtocolKind::ExpressibleByBuiltinIntegerLiteral:
diff --git a/lib/IRGen/GenOpaque.cpp b/lib/IRGen/GenOpaque.cpp
index 0a17ba0..39db7e0 100644
--- a/lib/IRGen/GenOpaque.cpp
+++ b/lib/IRGen/GenOpaque.cpp
@@ -56,16 +56,6 @@
 
 static llvm::Type *createWitnessType(IRGenModule &IGM, ValueWitness index) {
   switch (index) {
-  // void (*deallocateBuffer)(B *buffer, M *self);
-  // void (*destroyBuffer)(B *buffer, M *self);
-  case ValueWitness::DeallocateBuffer:
-  case ValueWitness::DestroyBuffer: {
-    llvm::Type *bufPtrTy = IGM.getFixedBufferTy()->getPointerTo(0);
-    llvm::Type *args[] = { bufPtrTy, IGM.TypeMetadataPtrTy };
-    return llvm::FunctionType::get(IGM.VoidTy, args, /*isVarArg*/ false)
-      ->getPointerTo();
-  }
-
   // void (*destroy)(T *object, witness_t *self);
   case ValueWitness::Destroy: {
     llvm::Type *args[] = { IGM.OpaquePtrTy, IGM.TypeMetadataPtrTy };
@@ -90,26 +80,6 @@
       ->getPointerTo();
   }
 
-  // T *(*allocateBuffer)(B *buffer, M *self);
-  // T *(*projectBuffer)(B *buffer, M *self);
-  case ValueWitness::AllocateBuffer:
-  case ValueWitness::ProjectBuffer: {
-    llvm::Type *bufPtrTy = IGM.getFixedBufferTy()->getPointerTo(0);
-    llvm::Type *args[] = { bufPtrTy, IGM.TypeMetadataPtrTy };
-    return llvm::FunctionType::get(IGM.OpaquePtrTy, args, /*isVarArg*/ false)
-      ->getPointerTo();
-  }
-
-  // T *(*initializeBufferWithCopy)(B *dest, T *src, M *self);
-  // T *(*initializeBufferWithTake)(B *dest, T *src, M *self);
-  case ValueWitness::InitializeBufferWithCopy:
-  case ValueWitness::InitializeBufferWithTake: {
-    llvm::Type *bufPtrTy = IGM.getFixedBufferTy()->getPointerTo(0);
-    llvm::Type *args[] = { bufPtrTy, IGM.OpaquePtrTy, IGM.TypeMetadataPtrTy };
-    return llvm::FunctionType::get(IGM.OpaquePtrTy, args, /*isVarArg*/ false)
-      ->getPointerTo();
-  }
-
   // T *(*assignWithCopy)(T *dest, T *src, M *self);
   // T *(*assignWithTake)(T *dest, T *src, M *self);
   // T *(*initializeWithCopy)(T *dest, T *src, M *self);
@@ -220,22 +190,10 @@
 
 static StringRef getValueWitnessLabel(ValueWitness index) {
   switch (index) {
-  case ValueWitness::DeallocateBuffer:
-    return "deallocateBuffer";
-  case ValueWitness::DestroyBuffer:
-    return "destroyBuffer";
   case ValueWitness::Destroy:
     return "destroy";
   case ValueWitness::InitializeBufferWithCopyOfBuffer:
     return "initializeBufferWithCopyOfBuffer";
-  case ValueWitness::AllocateBuffer:
-    return "allocateBuffer";
-  case ValueWitness::ProjectBuffer:
-    return "projectBuffer";
-  case ValueWitness::InitializeBufferWithCopy:
-    return "initializeBufferWithCopy";
-  case ValueWitness::InitializeBufferWithTake:
-    return "initializeBufferWithTake";
   case ValueWitness::AssignWithCopy:
     return "assignWithCopy";
   case ValueWitness::AssignWithTake:
@@ -474,47 +432,6 @@
   IGF.Builder.CreateCall(stackRestoreFn, address.getSavedSP());
 }
 
-/// Emit a call to do an 'allocateBuffer' operation.
-llvm::Value *irgen::emitAllocateBufferCall(IRGenFunction &IGF,
-                                           SILType T,
-                                           Address buffer) {
-  llvm::Value *metadata = IGF.emitTypeMetadataRefForLayout(T);
-  llvm::Value *allocateFn
-    = IGF.emitValueWitnessForLayout(T, ValueWitness::AllocateBuffer);
-  llvm::CallInst *result =
-    IGF.Builder.CreateCall(allocateFn, {buffer.getAddress(), metadata});
-  result->setCallingConv(IGF.IGM.DefaultCC);
-  result->setDoesNotThrow();
-  return result;
-}
-
-/// Emit a call to do a 'projectBuffer' operation.
-llvm::Value *irgen::emitProjectBufferCall(IRGenFunction &IGF,
-                                          SILType T,
-                                          Address buffer) {
-  llvm::Value *metadata = IGF.emitTypeMetadataRefForLayout(T);
-  llvm::Value *fn
-    = IGF.emitValueWitnessForLayout(T, ValueWitness::ProjectBuffer);
-  llvm::CallInst *result =
-    IGF.Builder.CreateCall(fn, {buffer.getAddress(), metadata});
-  result->setCallingConv(IGF.IGM.DefaultCC);
-  result->setDoesNotThrow();
-  return result;
-}
-
-/// Emit a call to do a 'projectBuffer' operation.
-llvm::Value *irgen::emitProjectBufferCall(IRGenFunction &IGF,
-                                          llvm::Value *metadata,
-                                          Address buffer) {
-  llvm::Value *projectFn = emitLoadOfValueWitnessFromMetadata(IGF, metadata,
-                                            ValueWitness::ProjectBuffer);
-  llvm::CallInst *result =
-    IGF.Builder.CreateCall(projectFn, {buffer.getAddress(), metadata});
-  result->setCallingConv(IGF.IGM.DefaultCC);
-  result->setDoesNotThrow();
-  return result;
-}
-
 /// Emit a call to do an 'initializeWithCopy' operation.
 void irgen::emitInitializeWithCopyCall(IRGenFunction &IGF,
                                        SILType T,
@@ -530,36 +447,6 @@
   call->setDoesNotThrow();
 }
 
-llvm::Value *irgen::emitInitializeBufferWithTakeCall(IRGenFunction &IGF,
-                                                     SILType T,
-                                                     Address destObject,
-                                                     Address srcObject) {
-  auto metadata = IGF.emitTypeMetadataRefForLayout(T);
-  llvm::Value *copyFn = IGF.emitValueWitnessForLayout(T,
-                                       ValueWitness::InitializeBufferWithTake);
-  llvm::CallInst *call =
-    IGF.Builder.CreateCall(copyFn,
-      {destObject.getAddress(), srcObject.getAddress(), metadata});
-  call->setCallingConv(IGF.IGM.DefaultCC);
-  call->setDoesNotThrow();
-  return call;
-}
-
-llvm::Value *irgen::emitInitializeBufferWithCopyCall(IRGenFunction &IGF,
-                                                     SILType T,
-                                                     Address destObject,
-                                                     Address srcObject) {
-  auto metadata = IGF.emitTypeMetadataRefForLayout(T);
-  llvm::Value *copyFn = IGF.emitValueWitnessForLayout(T,
-                                       ValueWitness::InitializeBufferWithCopy);
-  llvm::CallInst *call =
-    IGF.Builder.CreateCall(copyFn,
-      {destObject.getAddress(), srcObject.getAddress(), metadata});
-  call->setCallingConv(IGF.IGM.DefaultCC);
-  call->setDoesNotThrow();
-  return call;
-}
-
 /// Emit a call to do an 'initializeArrayWithCopy' operation.
 void irgen::emitInitializeArrayWithCopyCall(IRGenFunction &IGF,
                                             SILType T,
@@ -699,52 +586,6 @@
   setHelperAttributes(call);
 }
 
-/// Emit a call to do a 'destroyBuffer' operation.
-void irgen::emitDestroyBufferCall(IRGenFunction &IGF,
-                                  SILType T,
-                                  Address buffer) {
-  auto metadata = IGF.emitTypeMetadataRefForLayout(T);
-  llvm::Value *fn = IGF.emitValueWitnessForLayout(T,
-                                   ValueWitness::DestroyBuffer);
-  llvm::CallInst *call =
-    IGF.Builder.CreateCall(fn, {buffer.getAddress(), metadata});
-  call->setCallingConv(IGF.IGM.DefaultCC);
-  setHelperAttributes(call);
-}
-void irgen::emitDestroyBufferCall(IRGenFunction &IGF,
-                                  llvm::Value *metadata,
-                                  Address buffer) {
-  auto fn = emitLoadOfValueWitnessFromMetadata(IGF, metadata,
-                                   ValueWitness::DestroyBuffer);
-  llvm::CallInst *call =
-    IGF.Builder.CreateCall(fn, {buffer.getAddress(), metadata});
-  call->setCallingConv(IGF.IGM.DefaultCC);
-  setHelperAttributes(call);
-}
-
-/// Emit a call to do a 'deallocateBuffer' operation.
-void irgen::emitDeallocateBufferCall(IRGenFunction &IGF,
-                                     llvm::Value *metadata,
-                                     Address buffer) {
-  auto fn = emitLoadOfValueWitnessFromMetadata(IGF, metadata,
-                                   ValueWitness::DeallocateBuffer);
-  llvm::CallInst *call =
-    IGF.Builder.CreateCall(fn, {buffer.getAddress(), metadata});
-  call->setCallingConv(IGF.IGM.DefaultCC);
-  setHelperAttributes(call);
-}
-void irgen::emitDeallocateBufferCall(IRGenFunction &IGF,
-                                     SILType T,
-                                     Address buffer) {
-  auto metadata = IGF.emitTypeMetadataRefForLayout(T);
-  llvm::Value *fn = IGF.emitValueWitnessForLayout(T,
-                                   ValueWitness::DeallocateBuffer);
-  llvm::CallInst *call =
-    IGF.Builder.CreateCall(fn, {buffer.getAddress(), metadata});
-  call->setCallingConv(IGF.IGM.DefaultCC);
-  setHelperAttributes(call);
-}
-
 /// Emit a call to the 'getExtraInhabitantIndex' operation.
 /// The type must be dynamically known to have extra inhabitant witnesses.
 llvm::Value *irgen::emitGetExtraInhabitantIndexCall(IRGenFunction &IGF,
diff --git a/lib/IRGen/GenOpaque.h b/lib/IRGen/GenOpaque.h
index 3fd1ba7..b197136 100644
--- a/lib/IRGen/GenOpaque.h
+++ b/lib/IRGen/GenOpaque.h
@@ -70,21 +70,6 @@
                                                         Address destBuffer,
                                                         Address srcBuffer);
 
-  /// Emit a call to do an 'allocateBuffer' operation.
-  llvm::Value *emitAllocateBufferCall(IRGenFunction &IGF,
-                                      SILType T,
-                                      Address buffer);
-
-  /// Emit a call to do a 'projectBuffer' operation.
-  llvm::Value *emitProjectBufferCall(IRGenFunction &IGF,
-                                     llvm::Value *metadata,
-                                     Address buffer);
-
-  /// Emit a call to do a 'projectBuffer' operation.
-  llvm::Value *emitProjectBufferCall(IRGenFunction &IGF,
-                                     SILType T,
-                                     Address buffer);
-
   /// Emit a call to do an 'initializeWithCopy' operation.
   void emitInitializeWithCopyCall(IRGenFunction &IGF,
                                   SILType T,
@@ -94,18 +79,6 @@
                                           llvm::Value *metadata, Address dest,
                                           Address src);
 
-  /// Emit a call to do an 'initializeBufferWithCopy' operation.
-  llvm::Value *emitInitializeBufferWithCopyCall(IRGenFunction &IGF,
-                                                SILType T,
-                                                Address destBuffer,
-                                                Address srcObject);
-
-  /// Emit a call to do an 'initializeBufferWithTake' operation.
-  llvm::Value *emitInitializeBufferWithTakeCall(IRGenFunction &IGF,
-                                                SILType T,
-                                                Address destBuffer,
-                                                Address srcObject);
-
   /// Emit a call to do an 'initializeArrayWithCopy' operation.
   void emitInitializeArrayWithCopyCall(IRGenFunction &IGF,
                                        SILType T,
@@ -166,22 +139,6 @@
                             Address object,
                             llvm::Value *count);
 
-  /// Emit a call to do a 'destroyBuffer' operation.
-  void emitDestroyBufferCall(IRGenFunction &IGF,
-                             llvm::Value *metadata,
-                             Address buffer);
-  void emitDestroyBufferCall(IRGenFunction &IGF,
-                             SILType T,
-                             Address buffer);
-  
-  /// Emit a call to do a 'deallocateBuffer' operation.
-  void emitDeallocateBufferCall(IRGenFunction &IGF,
-                                llvm::Value *metadata,
-                                Address buffer);
-  void emitDeallocateBufferCall(IRGenFunction &IGF,
-                                SILType T,
-                                Address buffer);
-  
   /// Emit a call to the 'getExtraInhabitantIndex' operation.
   /// The type must be dynamically known to have extra inhabitant witnesses.
   llvm::Value *emitGetExtraInhabitantIndexCall(IRGenFunction &IGF,
diff --git a/lib/IRGen/GenRecord.h b/lib/IRGen/GenRecord.h
index 2b7a803..4e01538 100644
--- a/lib/IRGen/GenRecord.h
+++ b/lib/IRGen/GenRecord.h
@@ -245,83 +245,6 @@
 
 public:
   using super::getStorageType;
-  Address allocateBuffer(IRGenFunction &IGF, Address buffer,
-                         SILType type) const override {
-    if (auto field = getUniqueNonEmptyField()) {
-      Address address =
-        field->getTypeInfo().allocateBuffer(IGF, buffer,
-                                            field->getType(IGF.IGM, type));
-      return IGF.Builder.CreateElementBitCast(address, getStorageType());
-    } else {
-      return super::allocateBuffer(IGF, buffer, type);
-    }
-  }
-
-  Address projectBuffer(IRGenFunction &IGF, Address buffer,
-                        SILType type) const override {
-    if (auto field = getUniqueNonEmptyField()) {
-      Address address =
-        field->getTypeInfo().projectBuffer(IGF, buffer,
-                                           field->getType(IGF.IGM, type));
-      return IGF.Builder.CreateElementBitCast(address, getStorageType());
-    } else {
-      return super::projectBuffer(IGF, buffer, type);
-    }
-  }
-
-  void destroyBuffer(IRGenFunction &IGF, Address buffer,
-                     SILType type) const override {
-    if (auto field = getUniqueNonEmptyField()) {
-      field->getTypeInfo().destroyBuffer(IGF, buffer,
-                                         field->getType(IGF.IGM, type));
-    } else {
-      super::destroyBuffer(IGF, buffer, type);
-    }
-  }
-
-  void deallocateBuffer(IRGenFunction &IGF, Address buffer,
-                        SILType type) const override {
-    if (auto field = getUniqueNonEmptyField()) {
-      field->getTypeInfo().deallocateBuffer(IGF, buffer,
-                                            field->getType(IGF.IGM, type));
-    } else {
-      super::deallocateBuffer(IGF, buffer, type);
-    }
-  }
-
-  Address initializeBufferWithTake(IRGenFunction &IGF,
-                                   Address destBuffer,
-                                   Address srcAddr,
-                                   SILType type) const override {
-    if (auto field = getUniqueNonEmptyField()) {
-      auto &fieldTI = field->getTypeInfo();
-      Address srcFieldAddr =
-        IGF.Builder.CreateElementBitCast(srcAddr, fieldTI.getStorageType());
-      Address fieldResult =
-        fieldTI.initializeBufferWithTake(IGF, destBuffer, srcFieldAddr,
-                                         field->getType(IGF.IGM, type));
-      return IGF.Builder.CreateElementBitCast(fieldResult, getStorageType());
-    } else {
-      return super::initializeBufferWithTake(IGF, destBuffer, srcAddr, type);
-    }
-  }
-
-  Address initializeBufferWithCopy(IRGenFunction &IGF,
-                                   Address destBuffer,
-                                   Address srcAddr,
-                                   SILType type) const override {
-    if (auto field = getUniqueNonEmptyField()) {
-      auto &fieldTI = field->getTypeInfo();
-      Address srcFieldAddr =
-        IGF.Builder.CreateElementBitCast(srcAddr, fieldTI.getStorageType());
-      Address fieldResult =
-        fieldTI.initializeBufferWithCopy(IGF, destBuffer, srcFieldAddr,
-                                         field->getType(IGF.IGM, type));
-      return IGF.Builder.CreateElementBitCast(fieldResult, getStorageType());
-    } else {
-      return super::initializeBufferWithCopy(IGF, destBuffer, srcAddr, type);
-    }
-  }
 
   Address initializeBufferWithTakeOfBuffer(IRGenFunction &IGF,
                                            Address destBuffer,
diff --git a/lib/IRGen/GenValueWitness.cpp b/lib/IRGen/GenValueWitness.cpp
index 4461be7..900b68a 100644
--- a/lib/IRGen/GenValueWitness.cpp
+++ b/lib/IRGen/GenValueWitness.cpp
@@ -49,19 +49,13 @@
 const char *irgen::getValueWitnessName(ValueWitness witness) {
   switch (witness) {
 #define CASE(NAME) case ValueWitness::NAME: return #NAME;
-  CASE(AllocateBuffer)
   CASE(AssignWithCopy)
   CASE(AssignWithTake)
-  CASE(DeallocateBuffer)
   CASE(Destroy)
-  CASE(DestroyBuffer)
   CASE(DestroyArray)
   CASE(InitializeBufferWithCopyOfBuffer)
-  CASE(InitializeBufferWithCopy)
   CASE(InitializeWithCopy)
-  CASE(InitializeBufferWithTake)
   CASE(InitializeWithTake)
-  CASE(ProjectBuffer)
   CASE(InitializeBufferWithTakeOfBuffer)
   CASE(InitializeArrayWithCopy)
   CASE(InitializeArrayWithTakeFrontToBack)
@@ -80,15 +74,6 @@
   llvm_unreachable("bad value witness kind");
 }
 
-static bool isNeverAllocated(FixedPacking packing) {
-  switch (packing) {
-  case FixedPacking::OffsetZero: return true;
-  case FixedPacking::Allocate: return false;
-  case FixedPacking::Dynamic: return false;
-  }
-  llvm_unreachable("bad FixedPacking value");
-}
-
 namespace {
   /// An operation to be performed for various kinds of packing.
   struct DynamicPackingOperation {
@@ -253,29 +238,22 @@
     // Use copy-on-write existentials?
     auto &IGM = IGF.IGM;
     auto &Builder = IGF.Builder;
-    if (IGM.getSILModule().getOptions().UseCOWExistentials) {
-      Address boxAddress(
-          Builder.CreateBitCast(buffer.getAddress(),
-                                IGM.RefCountedPtrTy->getPointerTo()),
-          buffer.getAlignment());
-      auto *boxStart = IGF.Builder.CreateLoad(boxAddress);
-      auto *alignmentMask = type.getAlignmentMask(IGF, T);
-      auto *heapHeaderSize =
-          llvm::ConstantInt::get(IGM.SizeTy, getHeapHeaderSize(IGM).getValue());
-      auto *startOffset =
+    Address boxAddress(
+        Builder.CreateBitCast(buffer.getAddress(),
+                              IGM.RefCountedPtrTy->getPointerTo()),
+        buffer.getAlignment());
+    auto *boxStart = IGF.Builder.CreateLoad(boxAddress);
+    auto *alignmentMask = type.getAlignmentMask(IGF, T);
+    auto *heapHeaderSize =
+        llvm::ConstantInt::get(IGM.SizeTy, getHeapHeaderSize(IGM).getValue());
+    auto *startOffset =
         Builder.CreateAnd(Builder.CreateAdd(heapHeaderSize, alignmentMask),
-                              Builder.CreateNot(alignmentMask));
-      auto *addressInBox =
-          IGF.emitByteOffsetGEP(boxStart, startOffset, IGM.OpaqueTy);
+                          Builder.CreateNot(alignmentMask));
+    auto *addressInBox =
+        IGF.emitByteOffsetGEP(boxStart, startOffset, IGM.OpaqueTy);
 
-      addressInBox = Builder.CreateBitCast(addressInBox, resultTy);
-      return type.getAddressForPointer(addressInBox);
-    }
-
-    Address slot =
-        Builder.CreateBitCast(buffer, resultTy->getPointerTo(), "storage-slot");
-    llvm::Value *address = Builder.CreateLoad(slot);
-    return type.getAddressForPointer(address);
+    addressInBox = Builder.CreateBitCast(addressInBox, resultTy);
+    return type.getAddressForPointer(addressInBox);
   }
 
   case FixedPacking::OffsetZero: {
@@ -297,44 +275,17 @@
                                          FixedPacking packing) {
   switch (packing) {
   case FixedPacking::Allocate: {
+    llvm::Value *box, *address;
+    auto *metadata = IGF.emitTypeMetadataRefForLayout(T);
+    IGF.emitAllocBoxCall(metadata, box, address);
+    IGF.Builder.CreateStore(
+        box, Address(IGF.Builder.CreateBitCast(buffer.getAddress(),
+                                               box->getType()->getPointerTo()),
+                     buffer.getAlignment()));
 
-    // Use copy-on-write existentials?
-    auto &IGM = IGF.IGM;
-    if (IGM.getSILModule().getOptions().UseCOWExistentials) {
-      // This would be faster but what do we pass as genericEnv?
-#if 0
-      if (isa<FixedTypeInfo>(T)) {
-        assert(T->getFixedPacking() == FixedPacking::Allocate);
-        auto *genericEnv = nullptr; //???;
-          // Otherwise, allocate a box with enough storage.
-        Address addr = emitAllocateExistentialBoxInBuffer(
-          IGF, valueType, buffer, genericEnv, "exist.box.addr");
-        return type.getAddressForPointer(addr);
-      }
-#endif
-
-      llvm::Value *box, *address;
-      auto *metadata = IGF.emitTypeMetadataRefForLayout(T);
-      IGF.emitAllocBoxCall(metadata, box, address);
-      IGF.Builder.CreateStore(
-          box, Address(IGF.Builder.CreateBitCast(
-                           buffer.getAddress(), box->getType()->getPointerTo()),
-                       buffer.getAlignment()));
-
-      llvm::PointerType *resultTy = type.getStorageType()->getPointerTo();
-      address = IGF.Builder.CreateBitCast(address, resultTy);
-      return type.getAddressForPointer(address);
-    }
-
-    auto sizeAndAlign = type.getSizeAndAlignmentMask(IGF, T);
-    llvm::Value *addr =
-      IGF.emitAllocRawCall(sizeAndAlign.first, sizeAndAlign.second);
-    buffer = IGF.Builder.CreateBitCast(buffer, IGM.Int8PtrPtrTy);
-    IGF.Builder.CreateStore(addr, buffer);
-
-    addr = IGF.Builder.CreateBitCast(addr,
-                                     type.getStorageType()->getPointerTo());
-    return type.getAddressForPointer(addr);
+    llvm::PointerType *resultTy = type.getStorageType()->getPointerTo();
+    address = IGF.Builder.CreateBitCast(address, resultTy);
+    return type.getAddressForPointer(address);
   }
 
   case FixedPacking::OffsetZero:
@@ -347,92 +298,37 @@
   llvm_unreachable("bad packing!");
 }
 
-/// Emit a 'deallocateBuffer' operation.
-static void emitDefaultDeallocateBuffer(IRGenFunction &IGF,
-                                        Address buffer,
-                                        SILType T,
-                                        const TypeInfo &type,
-                                        FixedPacking packing) {
-  switch (packing) {
-  case FixedPacking::Allocate: {
-    Address slot =
-      IGF.Builder.CreateBitCast(buffer, IGF.IGM.Int8PtrPtrTy);
-    llvm::Value *addr = IGF.Builder.CreateLoad(slot, "storage");
-    auto sizeAndAlignMask = type.getSizeAndAlignmentMask(IGF, T);
-    IGF.emitDeallocRawCall(addr, sizeAndAlignMask.first,
-                           sizeAndAlignMask.second);
-    return;
-  }
-
-  case FixedPacking::OffsetZero:
-    return;
-
-  case FixedPacking::Dynamic:
-    return emitForDynamicPacking(IGF, &emitDefaultDeallocateBuffer,
-                                 T, type, buffer);
-  }
-  llvm_unreachable("bad packing!");
-}
-
-/// Emit a 'destroyBuffer' operation.
-static void emitDefaultDestroyBuffer(IRGenFunction &IGF, Address buffer,
-                                     SILType T, const TypeInfo &type,
-                                     FixedPacking packing) {
-  // Special-case dynamic packing in order to thread the jumps.
-  if (packing == FixedPacking::Dynamic)
-    return emitForDynamicPacking(IGF, &emitDefaultDestroyBuffer,
-                                 T, type, buffer);
-
-  Address object = emitDefaultProjectBuffer(IGF, buffer, T, type, packing);
-  type.destroy(IGF, object, T);
-  emitDefaultDeallocateBuffer(IGF, buffer, T, type, packing);
-}
-
 /// Emit an 'initializeBufferWithCopyOfBuffer' operation.
 /// Returns the address of the destination object.
-static Address
-emitDefaultInitializeBufferWithCopyOfBuffer(IRGenFunction &IGF,
-                                            Address destBuffer,
-                                            Address srcBuffer,
-                                            SILType T,
-                                            const TypeInfo &type,
-                                            FixedPacking packing) {
+static Address emitDefaultInitializeBufferWithCopyOfBuffer(
+    IRGenFunction &IGF, Address destBuffer, Address srcBuffer, SILType T,
+    const TypeInfo &type, FixedPacking packing) {
   // Special-case dynamic packing in order to thread the jumps.
   if (packing == FixedPacking::Dynamic)
     return emitForDynamicPacking(IGF,
                                  &emitDefaultInitializeBufferWithCopyOfBuffer,
                                  T, type, destBuffer, srcBuffer);
 
-  if (IGF.IGM.getSILModule().getOptions().UseCOWExistentials) {
-    if (packing == FixedPacking::OffsetZero) {
-      Address destObject =
+  if (packing == FixedPacking::OffsetZero) {
+    Address destObject =
         emitDefaultAllocateBuffer(IGF, destBuffer, T, type, packing);
-      Address srcObject =
+    Address srcObject =
         emitDefaultProjectBuffer(IGF, srcBuffer, T, type, packing);
-      type.initializeWithCopy(IGF, destObject, srcObject, T);
-      return destObject;
-    } else {
-      assert(packing == FixedPacking::Allocate);
-      auto *destReferenceAddr = IGF.Builder.CreateBitCast(
-          destBuffer.getAddress(), IGF.IGM.RefCountedPtrTy->getPointerTo());
-      auto *srcReferenceAddr = IGF.Builder.CreateBitCast(
-          srcBuffer.getAddress(), IGF.IGM.RefCountedPtrTy->getPointerTo());
-      auto *srcReference =
+    type.initializeWithCopy(IGF, destObject, srcObject, T);
+    return destObject;
+  } else {
+    assert(packing == FixedPacking::Allocate);
+    auto *destReferenceAddr = IGF.Builder.CreateBitCast(
+        destBuffer.getAddress(), IGF.IGM.RefCountedPtrTy->getPointerTo());
+    auto *srcReferenceAddr = IGF.Builder.CreateBitCast(
+        srcBuffer.getAddress(), IGF.IGM.RefCountedPtrTy->getPointerTo());
+    auto *srcReference =
         IGF.Builder.CreateLoad(srcReferenceAddr, srcBuffer.getAlignment());
-      IGF.emitNativeStrongRetain(srcReference, IGF.getDefaultAtomicity());
-      IGF.Builder.CreateStore(
-        srcReference,
-        Address(destReferenceAddr, destBuffer.getAlignment()));
-      return emitDefaultProjectBuffer(IGF, destBuffer, T, type, packing);
-    }
+    IGF.emitNativeStrongRetain(srcReference, IGF.getDefaultAtomicity());
+    IGF.Builder.CreateStore(
+        srcReference, Address(destReferenceAddr, destBuffer.getAlignment()));
+    return emitDefaultProjectBuffer(IGF, destBuffer, T, type, packing);
   }
-
-  Address destObject =
-    emitDefaultAllocateBuffer(IGF, destBuffer, T, type, packing);
-  Address srcObject =
-    emitDefaultProjectBuffer(IGF, srcBuffer, T, type, packing);
-  type.initializeWithCopy(IGF, destObject, srcObject, T);
-  return destObject;
 }
 
 /// Emit an 'initializeBufferWithTakeOfBuffer' operation.
@@ -476,30 +372,6 @@
   llvm_unreachable("bad fixed packing");
 }
 
-static Address emitDefaultInitializeBufferWithCopy(IRGenFunction &IGF,
-                                                   Address destBuffer,
-                                                   Address srcObject,
-                                                   SILType T,
-                                                   const TypeInfo &type,
-                                                   FixedPacking packing) {
-  Address destObject =
-    emitDefaultAllocateBuffer(IGF, destBuffer, T, type, packing);
-  type.initializeWithCopy(IGF, destObject, srcObject, T);
-  return destObject;
-}
-
-static Address emitDefaultInitializeBufferWithTake(IRGenFunction &IGF,
-                                                   Address destBuffer,
-                                                   Address srcObject,
-                                                   SILType T,
-                                                   const TypeInfo &type,
-                                                   FixedPacking packing) {
-  Address destObject =
-    emitDefaultAllocateBuffer(IGF, destBuffer, T, type, packing);
-  type.initializeWithTake(IGF, destObject, srcObject, T);
-  return destObject;
-}
-
 // Metaprogram some of the common boilerplate here:
 //   - the default implementation in TypeInfo
 //   - the value-witness emitter which tries to avoid some dynamic
@@ -518,31 +390,12 @@
     return type.LOWER(IGF, dest, src, T);                                 \
   return emitDefault##TITLE(IGF, dest, src, T, type, packing);            \
 }
-DEFINE_BINARY_BUFFER_OP(initializeBufferWithCopy,
-                        InitializeBufferWithCopy)
-DEFINE_BINARY_BUFFER_OP(initializeBufferWithTake,
-                        InitializeBufferWithTake)
 DEFINE_BINARY_BUFFER_OP(initializeBufferWithCopyOfBuffer,
                         InitializeBufferWithCopyOfBuffer)
 DEFINE_BINARY_BUFFER_OP(initializeBufferWithTakeOfBuffer,
                         InitializeBufferWithTakeOfBuffer)
 #undef DEFINE_BINARY_BUFFER_OP
 
-#define DEFINE_UNARY_BUFFER_OP(RESULT, LOWER, TITLE)                          \
-RESULT TypeInfo::LOWER(IRGenFunction &IGF, Address buffer, SILType T) const { \
-  return emitDefault##TITLE(IGF, buffer, T, *this, getFixedPacking(IGF.IGM)); \
-}                                                                             \
-static RESULT emit##TITLE(IRGenFunction &IGF, Address buffer, SILType T,      \
-                          const TypeInfo &type, FixedPacking packing) {       \
-  if (packing == FixedPacking::Dynamic)                                       \
-    return type.LOWER(IGF, buffer, T);                                        \
-  return emitDefault##TITLE(IGF, buffer, T, type, packing);                   \
-}
-DEFINE_UNARY_BUFFER_OP(Address, allocateBuffer, AllocateBuffer)
-DEFINE_UNARY_BUFFER_OP(Address, projectBuffer, ProjectBuffer)
-DEFINE_UNARY_BUFFER_OP(void, destroyBuffer, DestroyBuffer)
-DEFINE_UNARY_BUFFER_OP(void, deallocateBuffer, DeallocateBuffer)
-#undef DEFINE_UNARY_BUFFER_OP
 
 static llvm::Value *getArg(llvm::Function::arg_iterator &it,
                            StringRef name) {
@@ -663,16 +516,6 @@
 
   auto argv = fn->arg_begin();
   switch (index) {
-  case ValueWitness::AllocateBuffer: {
-    Address buffer = getArgAsBuffer(IGF, argv, "buffer");
-    getArgAsLocalSelfTypeMetadata(IGF, argv, abstractType);
-    Address result =
-      emitAllocateBuffer(IGF, buffer, concreteType, type, packing);
-    result = IGF.Builder.CreateBitCast(result, IGF.IGM.OpaquePtrTy);
-    IGF.Builder.CreateRet(result.getAddress());
-    return;
-  }
-
   case ValueWitness::AssignWithCopy: {
     Address dest = getArgAs(IGF, argv, type, "dest");
     Address src = getArgAs(IGF, argv, type, "src");
@@ -693,14 +536,6 @@
     return;
   }
 
-  case ValueWitness::DeallocateBuffer: {
-    Address buffer = getArgAsBuffer(IGF, argv, "buffer");
-    getArgAsLocalSelfTypeMetadata(IGF, argv, abstractType);
-    emitDeallocateBuffer(IGF, buffer, concreteType, type, packing);
-    IGF.Builder.CreateRetVoid();
-    return;
-  }
-
   case ValueWitness::Destroy: {
     Address object = getArgAs(IGF, argv, type, "object");
     getArgAsLocalSelfTypeMetadata(IGF, argv, abstractType);
@@ -750,14 +585,6 @@
     return;
   }
 
-  case ValueWitness::DestroyBuffer: {
-    Address buffer = getArgAsBuffer(IGF, argv, "buffer");
-    getArgAsLocalSelfTypeMetadata(IGF, argv, abstractType);
-    emitDestroyBuffer(IGF, buffer, concreteType, type, packing);
-    IGF.Builder.CreateRetVoid();
-    return;
-  }
-
   case ValueWitness::InitializeBufferWithCopyOfBuffer: {
     Address dest = getArgAsBuffer(IGF, argv, "dest");
     Address src = getArgAsBuffer(IGF, argv, "src");
@@ -784,30 +611,6 @@
     return;
   }
 
-  case ValueWitness::InitializeBufferWithCopy: {
-    Address dest = getArgAsBuffer(IGF, argv, "dest");
-    Address src = getArgAs(IGF, argv, type, "src");
-    getArgAsLocalSelfTypeMetadata(IGF, argv, abstractType);
-
-    Address result =
-      emitInitializeBufferWithCopy(IGF, dest, src, concreteType, type, packing);
-    result = IGF.Builder.CreateBitCast(result, IGF.IGM.OpaquePtrTy);
-    IGF.Builder.CreateRet(result.getAddress());
-    return;
-  }
-
-  case ValueWitness::InitializeBufferWithTake: {
-    Address dest = getArgAsBuffer(IGF, argv, "dest");
-    Address src = getArgAs(IGF, argv, type, "src");
-    getArgAsLocalSelfTypeMetadata(IGF, argv, abstractType);
-
-    Address result =
-      emitInitializeBufferWithTake(IGF, dest, src, concreteType, type, packing);
-    result = IGF.Builder.CreateBitCast(result, IGF.IGM.OpaquePtrTy);
-    IGF.Builder.CreateRet(result.getAddress());
-    return;
-  }
-
   case ValueWitness::InitializeWithCopy: {
     Address dest = getArgAs(IGF, argv, type, "dest");
     Address src = getArgAs(IGF, argv, type, "src");
@@ -848,16 +651,6 @@
     return;
   }
 
-  case ValueWitness::ProjectBuffer: {
-    Address buffer = getArgAsBuffer(IGF, argv, "buffer");
-    getArgAsLocalSelfTypeMetadata(IGF, argv, abstractType);
-
-    Address result = emitProjectBuffer(IGF, buffer, concreteType, type, packing);
-    result = IGF.Builder.CreateBitCast(result, IGF.IGM.OpaquePtrTy);
-    IGF.Builder.CreateRet(result.getAddress());
-    return;
-  }
-
   case ValueWitness::StoreExtraInhabitant: {
     Address dest = getArgAs(IGF, argv, type, "dest");
     llvm::Value *index = getArg(argv, "index");
@@ -948,17 +741,6 @@
   });
 }
 
-/// Return a function which takes two pointer arguments and returns
-/// the first one immediately.
-static llvm::Constant *getReturnSelfFunction(IRGenModule &IGM) {
-  llvm::Type *argTys[] = { IGM.Int8PtrTy, IGM.TypeMetadataPtrTy };
-  return IGM.getOrCreateHelperFunction(
-      "__swift_noop_self_return", IGM.Int8PtrTy, argTys,
-      [&](IRGenFunction &IGF) {
-        IGF.Builder.CreateRet(&*IGF.CurFn->arg_begin());
-      });
-}
-
 /// Return a function which takes three pointer arguments and does a
 /// retaining assignWithCopy on the first two: it loads a pointer from
 /// the second, retains it, loads a pointer from the first, stores the
@@ -1076,23 +858,6 @@
 
 /// Return a function which takes two buffer arguments, copies
 /// a pointer from the second to the first, and returns the pointer.
-static llvm::Constant *getCopyOutOfLinePointerFunction(IRGenModule &IGM) {
-  llvm::Type *argTys[] = { IGM.Int8PtrPtrTy, IGM.Int8PtrPtrTy,
-                           IGM.TypeMetadataPtrTy };
-
-  return IGM.getOrCreateHelperFunction("__swift_copy_outline_pointer",
-                                       IGM.Int8PtrTy, argTys,
-                                       [&](IRGenFunction &IGF) {
-    auto it = IGF.CurFn->arg_begin();
-    Address dest(&*it++, IGM.getPointerAlignment());
-    Address src(&*it++, IGM.getPointerAlignment());
-    auto ptr = IGF.Builder.CreateLoad(src);
-    IGF.Builder.CreateStore(ptr, dest);
-    IGF.Builder.CreateRet(ptr);
-  });
-}
-/// Return a function which takes two buffer arguments, copies
-/// a pointer from the second to the first, and returns the pointer.
 static llvm::Constant *
 getCopyOutOfLineBoxPointerFunction(IRGenModule &IGM,
                                    const FixedTypeInfo &fixedTI) {
@@ -1208,21 +973,6 @@
 
   // Try to use a standard function.
   switch (index) {
-  case ValueWitness::DeallocateBuffer:
-    if (isNeverAllocated(packing))
-      return addFunction(getNoOpVoidFunction(IGM));
-    goto standard;
-
-  case ValueWitness::DestroyBuffer:
-    if (concreteTI.isPOD(ResilienceExpansion::Maximal)) {
-      if (isNeverAllocated(packing))
-        return addFunction(getNoOpVoidFunction(IGM));
-    } else if (concreteTI.isSingleSwiftRetainablePointer(ResilienceExpansion::Maximal)) {
-      assert(isNeverAllocated(packing));
-      return addFunction(getDestroyStrongFunction(IGM));
-    }
-    goto standard;
-
   case ValueWitness::Destroy:
     if (concreteTI.isPOD(ResilienceExpansion::Maximal)) {
       return addFunction(getNoOpVoidFunction(IGM));
@@ -1240,7 +990,6 @@
     goto standard;
 
   case ValueWitness::InitializeBufferWithCopyOfBuffer:
-  case ValueWitness::InitializeBufferWithCopy:
     if (packing == FixedPacking::OffsetZero) {
       if (concreteTI.isPOD(ResilienceExpansion::Maximal)) {
         return addFunction(getMemCpyFunction(IGM, concreteTI));
@@ -1252,13 +1001,8 @@
 
   case ValueWitness::InitializeBufferWithTakeOfBuffer:
     if (packing == FixedPacking::Allocate) {
-      if (IGM.getSILModule().getOptions().UseCOWExistentials) {
-        return addFunction(getCopyOutOfLineBoxPointerFunction(
-            IGM, cast<FixedTypeInfo>(concreteTI)));
-      }
-      // Copy-on-write existentials would have to do a projection in the buffer
-      // to get the values starting address.
-      return addFunction(getCopyOutOfLinePointerFunction(IGM));
+      return addFunction(getCopyOutOfLineBoxPointerFunction(
+          IGM, cast<FixedTypeInfo>(concreteTI)));
     } else
       if (packing == FixedPacking::OffsetZero &&
                concreteTI.isBitwiseTakable(ResilienceExpansion::Maximal)) {
@@ -1266,12 +1010,6 @@
     }
     goto standard;
 
-  case ValueWitness::InitializeBufferWithTake:
-    if (concreteTI.isBitwiseTakable(ResilienceExpansion::Maximal)
-        && packing == FixedPacking::OffsetZero)
-      return addFunction(getMemCpyFunction(IGM, concreteTI));
-    goto standard;
-
   case ValueWitness::InitializeWithTake:
     if (concreteTI.isBitwiseTakable(ResilienceExpansion::Maximal)) {
       return addFunction(getMemCpyFunction(IGM, concreteTI));
@@ -1322,12 +1060,6 @@
     // refcounted pointer types.
     goto standard;
 
-  case ValueWitness::AllocateBuffer:
-  case ValueWitness::ProjectBuffer:
-    if (packing == FixedPacking::OffsetZero)
-      return addFunction(getReturnSelfFunction(IGM));
-    goto standard;
-
   case ValueWitness::Size: {
     if (auto value = concreteTI.getStaticSize(IGM))
       return B.add(llvm::ConstantExpr::getIntToPtr(value, IGM.Int8PtrTy));
diff --git a/lib/IRGen/IRGen.cpp b/lib/IRGen/IRGen.cpp
index d58fed3..a89d79d 100644
--- a/lib/IRGen/IRGen.cpp
+++ b/lib/IRGen/IRGen.cpp
@@ -23,6 +23,7 @@
 #include "swift/Basic/Defer.h"
 #include "swift/Basic/Dwarf.h"
 #include "swift/Basic/Platform.h"
+#include "swift/Basic/Statistic.h"
 #include "swift/Basic/Timer.h"
 #include "swift/Basic/Version.h"
 #include "swift/ClangImporter/ClangImporter.h"
@@ -119,7 +120,8 @@
       BuilderWrapper.IRGOpts.SanitizeCoverage));
 }
 
-std::tuple<llvm::TargetOptions, std::string, std::vector<std::string>>
+std::tuple<llvm::TargetOptions, std::string, std::vector<std::string>,
+           std::string>
 swift::getIRTargetOptions(IRGenOptions &Opts, ASTContext &Ctx) {
   // Things that maybe we should collect from the command line:
   //   - relocation model
@@ -133,7 +135,7 @@
 
   auto *Clang = static_cast<ClangImporter *>(Ctx.getClangModuleLoader());
   clang::TargetOptions &ClangOpts = Clang->getTargetInfo().getTargetOpts();
-  return std::make_tuple(TargetOpts, ClangOpts.CPU, ClangOpts.Features);
+  return std::make_tuple(TargetOpts, ClangOpts.CPU, ClangOpts.Features, ClangOpts.Triple);
 }
 
 void setModuleFlags(IRGenModule &IGM) {
@@ -148,8 +150,6 @@
 
 void swift::performLLVMOptimizations(IRGenOptions &Opts, llvm::Module *Module,
                                      llvm::TargetMachine *TargetMachine) {
-  SharedTimer timer("LLVM optimization");
-
   // Set up a pipeline.
   PassManagerBuilderWrapper PMBuilder(Opts);
 
@@ -362,7 +362,8 @@
                         llvm::Module *Module,
                         llvm::TargetMachine *TargetMachine,
                         const version::Version &effectiveLanguageVersion,
-                        StringRef OutputFilename) {
+                        StringRef OutputFilename,
+                        UnifiedStatsReporter *Stats) {
   if (Opts.UseIncrementalLLVMCodeGen && HashGlobal) {
     // Check if we can skip the llvm part of the compilation if we have an
     // existing object file which was generated from the same llvm IR.
@@ -464,32 +465,31 @@
   }
   }
 
-  {
-    SharedTimer timer("LLVM output");
-    EmitPasses.run(*Module);
+  EmitPasses.run(*Module);
+
+  if (Stats && RawOS.hasValue()) {
+    if (DiagMutex)
+      DiagMutex->lock();
+    Stats->getFrontendCounters().NumLLVMBytesOutput += RawOS->tell();
+    if (DiagMutex)
+      DiagMutex->unlock();
   }
   return false;
 }
 
 std::unique_ptr<llvm::TargetMachine>
 swift::createTargetMachine(IRGenOptions &Opts, ASTContext &Ctx) {
-  const llvm::Triple &Triple = Ctx.LangOpts.Target;
-  std::string Error;
-  const Target *Target = TargetRegistry::lookupTarget(Triple.str(), Error);
-  if (!Target) {
-    Ctx.Diags.diagnose(SourceLoc(), diag::no_llvm_target, Triple.str(), Error);
-    return nullptr;
-  }
-
   CodeGenOpt::Level OptLevel = Opts.Optimize ? CodeGenOpt::Default // -Os
                                              : CodeGenOpt::None;
 
   // Set up TargetOptions and create the target features string.
   TargetOptions TargetOpts;
   std::string CPU;
+  std::string EffectiveClangTriple;
   std::vector<std::string> targetFeaturesArray;
-  std::tie(TargetOpts, CPU, targetFeaturesArray)
+  std::tie(TargetOpts, CPU, targetFeaturesArray, EffectiveClangTriple)
     = getIRTargetOptions(Opts, Ctx);
+  const llvm::Triple &EffectiveTriple = llvm::Triple(EffectiveClangTriple);
   std::string targetFeatures;
   if (!targetFeaturesArray.empty()) {
     llvm::SubtargetFeatures features;
@@ -498,21 +498,31 @@
     targetFeatures = features.getString();
   }
 
+  std::string Error;
+  const Target *Target =
+      TargetRegistry::lookupTarget(EffectiveTriple.str(), Error);
+  if (!Target) {
+    Ctx.Diags.diagnose(SourceLoc(), diag::no_llvm_target, EffectiveTriple.str(),
+                       Error);
+    return nullptr;
+  }
+
+
   // Create a target machine.
   auto cmodel = CodeModel::Default;
 
   // On Windows 64 bit, dlls are loaded above the max address for 32 bits.
   // This means that a default CodeModel causes generated code to segfault
   // when run.
-  if (Triple.isArch64Bit() && Triple.isOSWindows())
+  if (EffectiveTriple.isArch64Bit() && EffectiveTriple.isOSWindows())
     cmodel = CodeModel::Large;
 
   llvm::TargetMachine *TargetMachine =
-      Target->createTargetMachine(Triple.str(), CPU, targetFeatures, TargetOpts,
-                                  Reloc::PIC_, cmodel, OptLevel);
+      Target->createTargetMachine(EffectiveTriple.str(), CPU, targetFeatures,
+                                  TargetOpts, Reloc::PIC_, cmodel, OptLevel);
   if (!TargetMachine) {
     Ctx.Diags.diagnose(SourceLoc(), diag::no_llvm_target,
-                       Triple.str(), "no LLVM target machine");
+                       EffectiveTriple.str(), "no LLVM target machine");
     return nullptr;
   }
   return std::unique_ptr<llvm::TargetMachine>(TargetMachine);
@@ -722,7 +732,7 @@
       IGM.emitTypeMetadataRecords();
       IGM.emitBuiltinReflectionMetadata();
       IGM.emitReflectionMetadataVersion();
-      irgen.emitNSArchiveClassNameRegistration();
+      irgen.emitEagerClassInitialization();
     }
 
     // Emit symbols for eliminated dead methods.
@@ -774,6 +784,8 @@
   if (outModuleHash) {
     *outModuleHash = IGM.ModuleHash;
   } else {
+    SharedTimer timer("LLVM pipeline");
+
     // Since no out module hash was set, we need to performLLVM.
     if (performLLVM(Opts, &IGM.Context.Diags, nullptr, IGM.ModuleHash,
                     IGM.getModule(), IGM.TargetMachine.get(),
@@ -901,7 +913,7 @@
 
   irgen.emitReflectionMetadataVersion();
 
-  irgen.emitNSArchiveClassNameRegistration();
+  irgen.emitEagerClassInitialization();
 
   // Emit reflection metadata for builtin and imported types.
   irgen.emitBuiltinReflectionMetadata();
@@ -994,6 +1006,8 @@
   // Bail out if there are any errors.
   if (Ctx.hadError()) return;
 
+  SharedTimer timer("LLVM pipeline");
+
   std::vector<std::thread> Threads;
   llvm::sys::Mutex DiagMutex;
 
@@ -1096,7 +1110,8 @@
 }
 
 bool swift::performLLVM(IRGenOptions &Opts, ASTContext &Ctx,
-                        llvm::Module *Module) {
+                        llvm::Module *Module,
+                        UnifiedStatsReporter *Stats) {
   // Build TargetMachine.
   auto TargetMachine = createTargetMachine(Opts, Ctx);
   if (!TargetMachine)
@@ -1106,7 +1121,7 @@
   if (::performLLVM(Opts, &Ctx.Diags, nullptr, nullptr, Module,
                     TargetMachine.get(),
                     Ctx.LangOpts.EffectiveLanguageVersion,
-                    Opts.getSingleOutputFilename()))
+                    Opts.getSingleOutputFilename(), Stats))
     return true;
   return false;
 }
diff --git a/lib/IRGen/IRGenDebugInfo.cpp b/lib/IRGen/IRGenDebugInfo.cpp
index 10c7030..1c8f443 100644
--- a/lib/IRGen/IRGenDebugInfo.cpp
+++ b/lib/IRGen/IRGenDebugInfo.cpp
@@ -2076,6 +2076,9 @@
   return new IRGenDebugInfoImpl(Opts, CI, IGM, M, SF);
 }
 
+
+IRGenDebugInfo::~IRGenDebugInfo() {}
+
 // Forwarding to the private implementation.
 void IRGenDebugInfo::finalize() {
   static_cast<IRGenDebugInfoImpl *>(this)->finalize();
diff --git a/lib/IRGen/IRGenDebugInfo.h b/lib/IRGen/IRGenDebugInfo.h
index aff95cd..06448bf 100644
--- a/lib/IRGen/IRGenDebugInfo.h
+++ b/lib/IRGen/IRGenDebugInfo.h
@@ -49,6 +49,7 @@
                                               ClangImporter &CI,
                                               IRGenModule &IGM, llvm::Module &M,
                                               SourceFile *SF);
+  virtual ~IRGenDebugInfo();
 
   /// Finalize the llvm::DIBuilder owned by this object.
   void finalize();
diff --git a/lib/IRGen/IRGenMangler.cpp b/lib/IRGen/IRGenMangler.cpp
index e378504..9845023 100644
--- a/lib/IRGen/IRGenMangler.cpp
+++ b/lib/IRGen/IRGenMangler.cpp
@@ -13,19 +13,46 @@
 #include "IRGenMangler.h"
 #include "swift/AST/ExistentialLayout.h"
 #include "swift/Demangling/ManglingMacros.h"
+#include "swift/Demangling/Demangle.h"
+#include "swift/Runtime/Metadata.h"
 
 using namespace swift;
 using namespace irgen;
 
+const char *getManglingForWitness(swift::Demangle::ValueWitnessKind kind) {
+  switch (kind) {
+#define VALUE_WITNESS(MANGLING, NAME) \
+  case swift::Demangle::ValueWitnessKind::NAME: return #MANGLING;
+#include "swift/Demangling/ValueWitnessMangling.def"
+  }
+  llvm_unreachable("not a function witness");
+}
+
 std::string IRGenMangler::mangleValueWitness(Type type, ValueWitness witness) {
   beginMangling();
   appendType(type);
 
   const char *Code = nullptr;
   switch (witness) {
-#define VALUE_WITNESS(MANGLING, NAME) \
-    case ValueWitness::NAME: Code = #MANGLING; break;
-#include "swift/Demangling/ValueWitnessMangling.def"
+#define GET_MANGLING(ID) \
+    case ValueWitness::ID: Code = getManglingForWitness(swift::Demangle::ValueWitnessKind::ID); break;
+    GET_MANGLING(InitializeBufferWithCopyOfBuffer) \
+    GET_MANGLING(Destroy) \
+    GET_MANGLING(InitializeWithCopy) \
+    GET_MANGLING(AssignWithCopy) \
+    GET_MANGLING(InitializeWithTake) \
+    GET_MANGLING(AssignWithTake) \
+    GET_MANGLING(InitializeBufferWithTakeOfBuffer) \
+    GET_MANGLING(DestroyArray) \
+    GET_MANGLING(InitializeArrayWithCopy) \
+    GET_MANGLING(InitializeArrayWithTakeFrontToBack) \
+    GET_MANGLING(InitializeArrayWithTakeBackToFront)
+    GET_MANGLING(StoreExtraInhabitant) \
+    GET_MANGLING(GetExtraInhabitantIndex) \
+    GET_MANGLING(GetEnumTag) \
+    GET_MANGLING(DestructiveProjectEnumData) \
+    GET_MANGLING(DestructiveInjectEnumTag)
+#undef GET_MANGLING
     case ValueWitness::Size:
     case ValueWitness::Flags:
     case ValueWitness::Stride:
diff --git a/lib/IRGen/IRGenModule.cpp b/lib/IRGen/IRGenModule.cpp
index b5d3fd4..5651135 100644
--- a/lib/IRGen/IRGenModule.cpp
+++ b/lib/IRGen/IRGenModule.cpp
@@ -127,9 +127,9 @@
       ClangCodeGen(createClangCodeGenerator(Context, LLVMContext, irgen.Opts,
                                             ModuleName)),
       Module(*ClangCodeGen->GetModule()), LLVMContext(Module.getContext()),
-      DataLayout(target->createDataLayout()), Triple(Context.LangOpts.Target),
-      TargetMachine(std::move(target)), silConv(irgen.SIL),
-      OutputFilename(OutputFilename),
+      DataLayout(target->createDataLayout()),
+      Triple(irgen.getEffectiveClangTriple()), TargetMachine(std::move(target)),
+      silConv(irgen.SIL), OutputFilename(OutputFilename),
       TargetInfo(SwiftTargetInfo::get(*this)), DebugInfo(nullptr),
       ModuleHash(nullptr), ObjCInterop(Context.LangOpts.EnableObjCInterop),
       Types(*new TypeConverter(*this)) {
@@ -758,11 +758,8 @@
   }
 }
 
-void IRGenerator::addClassForArchiveNameRegistration(ClassDecl *ClassDecl) {
-
-  // Those two attributes are interesting to us
-  if (!ClassDecl->getAttrs().hasAttribute<NSKeyedArchiverClassNameAttr>() &&
-      !ClassDecl->getAttrs().hasAttribute<StaticInitializeObjCMetadataAttr>())
+void IRGenerator::addClassForEagerInitialization(ClassDecl *ClassDecl) {
+  if (!ClassDecl->getAttrs().hasAttribute<StaticInitializeObjCMetadataAttr>())
     return;
 
   // Exclude some classes where those attributes make no sense but could be set
@@ -775,7 +772,7 @@
   if (ClassDecl->hasClangNode())
     return;
 
-  ClassesForArchiveNameRegistration.push_back(ClassDecl);
+  ClassesForEagerInitialization.push_back(ClassDecl);
 }
 
 llvm::AttributeSet IRGenModule::getAllocAttrs() {
@@ -1186,3 +1183,10 @@
 
   return getPrimaryIGM();
 }
+
+llvm::Triple IRGenerator::getEffectiveClangTriple() {
+  auto CI = static_cast<ClangImporter *>(
+      &*SIL.getASTContext().getClangModuleLoader());
+  assert(CI && "no clang module loader");
+  return llvm::Triple(CI->getTargetInfo().getTargetOpts().Triple);
+}
diff --git a/lib/IRGen/IRGenModule.h b/lib/IRGen/IRGenModule.h
index 9c8f743..38f8d44 100644
--- a/lib/IRGen/IRGenModule.h
+++ b/lib/IRGen/IRGenModule.h
@@ -222,7 +222,7 @@
   /// The queue of lazy witness tables to emit.
   llvm::SmallVector<SILWitnessTable *, 4> LazyWitnessTables;
 
-  llvm::SmallVector<ClassDecl *, 4> ClassesForArchiveNameRegistration;
+  llvm::SmallVector<ClassDecl *, 4> ClassesForEagerInitialization;
 
   /// The order in which all the SIL function definitions should
   /// appear in the translation unit.
@@ -298,7 +298,7 @@
   /// Emit a symbol identifying the reflection metadata version.
   void emitReflectionMetadataVersion();
 
-  void emitNSArchiveClassNameRegistration();
+  void emitEagerClassInitialization();
 
   /// Checks if the metadata of \p Nominal can be emitted lazily.
   ///
@@ -338,7 +338,7 @@
                                       fn, IGM});
   }
 
-  void addClassForArchiveNameRegistration(ClassDecl *ClassDecl);
+  void addClassForEagerInitialization(ClassDecl *ClassDecl);
 
   unsigned getFunctionOrder(SILFunction *F) {
     auto it = FunctionOrder.find(F);
@@ -355,6 +355,9 @@
     }
     return nullptr;
   }
+
+  /// Return the effective triple used by clang.
+  llvm::Triple getEffectiveClangTriple();
 };
 
 class ConstantReference {
@@ -393,7 +396,7 @@
   llvm::Module &Module;
   llvm::LLVMContext &LLVMContext;
   const llvm::DataLayout DataLayout;
-  const llvm::Triple &Triple;
+  const llvm::Triple Triple;
   std::unique_ptr<llvm::TargetMachine> TargetMachine;
   ModuleDecl *getSwiftModule() const;
   Lowering::TypeConverter &getSILTypes() const;
diff --git a/lib/IRGen/IRGenSIL.cpp b/lib/IRGen/IRGenSIL.cpp
index d883752..20ab92b 100644
--- a/lib/IRGen/IRGenSIL.cpp
+++ b/lib/IRGen/IRGenSIL.cpp
@@ -1740,11 +1740,7 @@
   // buffer.
   Address addr = IGM.getAddrOfSILGlobalVariable(var, ti,
                                                 NotForDefinition);
-  if (getSILModule().getOptions().UseCOWExistentials) {
-    emitAllocateValueInBuffer(*this, loweredTy, addr);
-  } else {
-    (void) ti.allocateBuffer(*this, addr, loweredTy);
-  }
+  emitAllocateValueInBuffer(*this, loweredTy, addr);
 }
 
 void IRGenSILFunction::visitGlobalAddrInst(GlobalAddrInst *i) {
@@ -1774,11 +1770,7 @@
 
   // Otherwise, the static storage for the global consists of a fixed-size
   // buffer; project it.
-  if (getSILModule().getOptions().UseCOWExistentials) {
-    addr = emitProjectValueInBuffer(*this, loweredTy, addr);
-  } else {
-    addr = ti.projectBuffer(*this, addr, loweredTy);
-  }
+  addr = emitProjectValueInBuffer(*this, loweredTy, addr);
   
   setLoweredAddress(i, addr);
 }
@@ -3671,60 +3663,6 @@
   setLoweredExplosion(i, out);
 }
 
-static bool tryDeferFixedSizeBufferInitialization(IRGenSILFunction &IGF,
-                                                  SILInstruction *allocInst,
-                                                  const TypeInfo &ti,
-                                                  Address fixedSizeBuffer,
-                                                  const llvm::Twine &name) {
-  // There's no point in doing this for fixed-sized types, since we'll allocate
-  // an appropriately-sized buffer for them statically.
-  if (ti.isFixedSize())
-    return false;
-
-  // TODO: More interesting dominance analysis could be done here to see
-  // if the alloc_stack is dominated by copy_addrs into it on all paths.
-  // For now, check only that the copy_addr is the first use within the same
-  // block.
-  for (auto ii = std::next(allocInst->getIterator()),
-            ie = std::prev(allocInst->getParent()->end());
-       ii != ie; ++ii) {
-    auto *inst = &*ii;
-
-    // Does this instruction use the allocation? If not, continue.
-    auto Ops = inst->getAllOperands();
-    if (std::none_of(Ops.begin(), Ops.end(),
-                     [allocInst](const Operand &Op) {
-                       return Op.get() == allocInst;
-                     }))
-      continue;
-
-    // Is this a copy?
-    auto *copy = dyn_cast<swift::CopyAddrInst>(inst);
-    if (!copy)
-      return false;
-
-    // Destination must be the allocation.
-    if (copy->getDest() != SILValue(allocInst))
-      return false;
-
-    // Copy must be an initialization.
-    if (!copy->isInitializationOfDest())
-      return false;
-    
-    // We can defer to this initialization. Allocate the fixed-size buffer
-    // now, but don't allocate the value inside it.
-    if (!fixedSizeBuffer.getAddress()) {
-      fixedSizeBuffer = IGF.createFixedSizeBufferAlloca(name);
-      IGF.Builder.CreateLifetimeStart(fixedSizeBuffer,
-                                      getFixedBufferSize(IGF.IGM));
-    }
-    IGF.setContainerOfUnallocatedAddress(allocInst, fixedSizeBuffer);
-    return true;
-  }
-  
-  return false;
-}
-
 void IRGenSILFunction::emitDebugInfoForAllocStack(AllocStackInst *i,
                                                   const TypeInfo &type,
                                                   llvm::Value *addr) {
@@ -4797,12 +4735,7 @@
                                           swift::AllocValueBufferInst *i) {
   Address buffer = getLoweredAddress(i->getOperand());
   auto valueType = i->getValueType();
-  Address value;
-  if (getSILModule().getOptions().UseCOWExistentials) {
-    value = emitAllocateValueInBuffer(*this, valueType, buffer);
-  } else {
-    value = getTypeInfo(valueType).allocateBuffer(*this, buffer, valueType);
-  }
+  Address value = emitAllocateValueInBuffer(*this, valueType, buffer);
   setLoweredAddress(i, value);
 }
 
@@ -4810,12 +4743,7 @@
                                           swift::ProjectValueBufferInst *i) {
   Address buffer = getLoweredAddress(i->getOperand());
   auto valueType = i->getValueType();
-  Address value;
-  if (getSILModule().getOptions().UseCOWExistentials) {
-    value = emitProjectValueInBuffer(*this, valueType, buffer);
-  } else {
-    value = getTypeInfo(valueType).projectBuffer(*this, buffer, valueType);
-  }
+  Address value = emitProjectValueInBuffer(*this, valueType, buffer);
   setLoweredAddress(i, value);
 }
 
@@ -4823,40 +4751,21 @@
                                           swift::DeallocValueBufferInst *i) {
   Address buffer = getLoweredAddress(i->getOperand());
   auto valueType = i->getValueType();
-  if (getSILModule().getOptions().UseCOWExistentials) {
-    emitDeallocateValueInBuffer(*this, valueType, buffer);
-    return;
-  }
-  getTypeInfo(valueType).deallocateBuffer(*this, buffer, valueType);
+  emitDeallocateValueInBuffer(*this, valueType, buffer);
 }
 
 void IRGenSILFunction::visitInitExistentialAddrInst(swift::InitExistentialAddrInst *i) {
   Address container = getLoweredAddress(i->getOperand());
   SILType destType = i->getOperand()->getType();
-  Address buffer = emitOpaqueExistentialContainerInit(*this,
-                                                container,
-                                                destType,
-                                                i->getFormalConcreteType(),
-                                                i->getLoweredConcreteType(),
-                                                i->getConformances());
+  emitOpaqueExistentialContainerInit(
+      *this, container, destType, i->getFormalConcreteType(),
+      i->getLoweredConcreteType(), i->getConformances());
   auto srcType = i->getLoweredConcreteType();
-  auto &srcTI = getTypeInfo(srcType);
 
   // Allocate a COW box for the value if necessary.
-  if (getSILModule().getOptions().UseCOWExistentials) {
-    auto *genericEnv = CurSILFn->getGenericEnvironment();
-    setLoweredAddress(i, emitAllocateBoxedOpaqueExistentialBuffer(
-                             *this, destType, srcType, container, genericEnv));
-    return;
-  }
-
-  // See if we can defer initialization of the buffer to a copy_addr into it.
-  if (tryDeferFixedSizeBufferInitialization(*this, i, srcTI, buffer, ""))
-    return;
-  
-  // Allocate in the destination fixed-size buffer.
-  Address address = srcTI.allocateBuffer(*this, buffer, srcType);
-  setLoweredAddress(i, address);
+  auto *genericEnv = CurSILFn->getGenericEnvironment();
+  setLoweredAddress(i, emitAllocateBoxedOpaqueExistentialBuffer(
+                           *this, destType, srcType, container, genericEnv));
 }
 
 void IRGenSILFunction::visitInitExistentialOpaqueInst(
@@ -4893,14 +4802,8 @@
   Address container = getLoweredAddress(i->getOperand());
 
   // Deallocate the COW box for the value if necessary.
-  if (getSILModule().getOptions().UseCOWExistentials) {
-    emitDeallocateBoxedOpaqueExistentialBuffer(
-        *this, i->getOperand()->getType(), container);
-    return;
-  }
-
-  emitOpaqueExistentialContainerDeinit(*this, container,
-                                       i->getOperand()->getType());
+  emitDeallocateBoxedOpaqueExistentialBuffer(*this, i->getOperand()->getType(),
+                                             container);
 }
 
 void IRGenSILFunction::visitDeinitExistentialOpaqueInst(
@@ -4916,17 +4819,9 @@
                            i->getType().getSwiftRValueType());
 
   // Insert a copy of the boxed value for COW semantics if necessary.
-  if (getSILModule().getOptions().UseCOWExistentials) {
-    auto accessKind = i->getAccessKind();
-    Address object = emitOpaqueBoxedExistentialProjection(
-        *this, accessKind, base, baseTy, openedArchetype);
-
-    setLoweredAddress(i, object);
-    return;
-  }
-
-  Address object = emitOpaqueExistentialProjection(*this, base, baseTy,
-                                                   openedArchetype);
+  auto accessKind = i->getAccessKind();
+  Address object = emitOpaqueBoxedExistentialProjection(
+      *this, accessKind, base, baseTy, openedArchetype);
 
   setLoweredAddress(i, object);
 }
@@ -5091,37 +4986,20 @@
   Address src = getLoweredAddress(i->getSrc());
   // See whether we have a deferred fixed-size buffer initialization.
   auto &loweredDest = getLoweredValue(i->getDest());
+  assert(!loweredDest.isUnallocatedAddressInBuffer());
+  Address dest = loweredDest.getAnyAddress();
 
-  if (loweredDest.isUnallocatedAddressInBuffer()) {
-    // We should never have a deferred initialization with COW existentials.
-    assert(!getSILModule().getOptions().UseCOWExistentials &&
-           "Should never have an unallocated buffer and COW existentials");
-
-    assert(i->isInitializationOfDest()
-           && "need to initialize an unallocated buffer");
-    Address cont = loweredDest.getContainerOfAddress();
+  if (i->isInitializationOfDest()) {
     if (i->isTakeOfSrc()) {
-      Address addr = addrTI.initializeBufferWithTake(*this, cont, src, addrTy);
-      setAllocatedAddressForBuffer(i->getDest(), addr);
+      addrTI.initializeWithTake(*this, dest, src, addrTy);
     } else {
-      Address addr = addrTI.initializeBufferWithCopy(*this, cont, src, addrTy);
-      setAllocatedAddressForBuffer(i->getDest(), addr);
+      addrTI.initializeWithCopy(*this, dest, src, addrTy);
     }
   } else {
-    Address dest = loweredDest.getAnyAddress();
-    
-    if (i->isInitializationOfDest()) {
-      if (i->isTakeOfSrc()) {
-        addrTI.initializeWithTake(*this, dest, src, addrTy);
-      } else {
-        addrTI.initializeWithCopy(*this, dest, src, addrTy);
-      }
+    if (i->isTakeOfSrc()) {
+      addrTI.assignWithTake(*this, dest, src, addrTy);
     } else {
-      if (i->isTakeOfSrc()) {
-        addrTI.assignWithTake(*this, dest, src, addrTy);
-      } else {
-        addrTI.assignWithCopy(*this, dest, src, addrTy);
-      }
+      addrTI.assignWithCopy(*this, dest, src, addrTy);
     }
   }
 }
diff --git a/lib/IRGen/ResilientTypeInfo.h b/lib/IRGen/ResilientTypeInfo.h
index ac3236e..0c4095a 100644
--- a/lib/IRGen/ResilientTypeInfo.h
+++ b/lib/IRGen/ResilientTypeInfo.h
@@ -57,28 +57,6 @@
     emitAssignWithTakeCall(IGF, T, dest, src);
   }
 
-  Address allocateBuffer(IRGenFunction &IGF, Address buffer,
-                         SILType T) const override {
-    auto addr = emitAllocateBufferCall(IGF, T, buffer);
-    return this->getAddressForPointer(addr);
-  }
-
-  Address projectBuffer(IRGenFunction &IGF, Address buffer,
-                        SILType T) const override {
-    auto addr = emitProjectBufferCall(IGF, T, buffer);
-    return this->getAddressForPointer(addr);
-  }
-
-  void destroyBuffer(IRGenFunction &IGF, Address buffer,
-                     SILType T) const override {
-    emitDestroyBufferCall(IGF, T, buffer);
-  }
-
-  void deallocateBuffer(IRGenFunction &IGF, Address buffer,
-                        SILType T) const override {
-    emitDeallocateBufferCall(IGF, T, buffer);
-  }
-
   Address initializeBufferWithCopyOfBuffer(IRGenFunction &IGF,
                                    Address dest, Address src,
                                    SILType T) const override {
@@ -93,20 +71,6 @@
     return this->getAddressForPointer(addr);
   }
 
-  Address initializeBufferWithCopy(IRGenFunction &IGF,
-                                   Address dest, Address src,
-                                   SILType T) const override {
-    auto addr = emitInitializeBufferWithCopyCall(IGF, T, dest, src);
-    return this->getAddressForPointer(addr);
-  }
-
-  Address initializeBufferWithTake(IRGenFunction &IGF,
-                                   Address dest, Address src,
-                                   SILType T) const override {
-    auto addr = emitInitializeBufferWithTakeCall(IGF, T, dest, src);
-    return this->getAddressForPointer(addr);
-  }
-
   void initializeWithCopy(IRGenFunction &IGF,
                         Address dest, Address src, SILType T) const override {
     emitInitializeWithCopyCall(IGF, T, dest, src);
diff --git a/lib/IRGen/StructLayout.cpp b/lib/IRGen/StructLayout.cpp
index 1b6f66c..82b1862 100644
--- a/lib/IRGen/StructLayout.cpp
+++ b/lib/IRGen/StructLayout.cpp
@@ -189,6 +189,13 @@
   StructFields.push_back(IGM.RefCountedStructTy);
 }
 
+void StructLayoutBuilder::addNSObjectHeader() {
+  assert(StructFields.empty() && "adding heap header at a non-zero offset");
+  CurSize = IGM.getPointerSize();
+  CurAlignment = IGM.getPointerAlignment();
+  StructFields.push_back(IGM.ObjCClassPtrTy);
+}
+
 bool StructLayoutBuilder::addFields(llvm::MutableArrayRef<ElementLayout> elts,
                                     LayoutStrategy strategy) {
   // Track whether we've added any storage to our layout.
diff --git a/lib/IRGen/StructLayout.h b/lib/IRGen/StructLayout.h
index 1b59c55..4d058d2 100644
--- a/lib/IRGen/StructLayout.h
+++ b/lib/IRGen/StructLayout.h
@@ -233,9 +233,12 @@
   StructLayoutBuilder(IRGenModule &IGM) : IGM(IGM) {}
 
   /// Add a swift heap header to the layout.  This must be the first
-  /// call to the layout.
+  /// thing added to the layout.
   void addHeapHeader();
-
+  /// Add the NSObject object header to the layout. This must be the first
+  /// thing added to the layout.
+  void addNSObjectHeader();
+  
   /// Add a number of fields to the layout.  The field layouts need
   /// only have the TypeInfo set; the rest will be filled out.
   ///
diff --git a/lib/IRGen/TypeInfo.h b/lib/IRGen/TypeInfo.h
index 557a973..c7df6e1 100644
--- a/lib/IRGen/TypeInfo.h
+++ b/lib/IRGen/TypeInfo.h
@@ -308,46 +308,6 @@
   virtual void initializeWithCopy(IRGenFunction &IGF, Address destAddr,
                                   Address srcAddr, SILType T) const = 0;
 
-  /// Allocate space for an object of this type within an uninitialized
-  /// fixed-size buffer.
-  virtual Address allocateBuffer(IRGenFunction &IGF, Address buffer,
-                                 SILType T) const;
-
-  /// Project the address of an object of this type from an initialized
-  /// fixed-size buffer.
-  virtual Address projectBuffer(IRGenFunction &IGF, Address buffer,
-                                SILType T) const;
-
-  /// Perform a "take-initialization" from the given object into an
-  /// uninitialized fixed-size buffer, allocating the buffer if necessary.
-  /// Returns the address of the value inside the buffer.
-  ///
-  /// This is equivalent to:
-  ///   auto destAddress = allocateBuffer(IGF, destBuffer, T);
-  ///   initializeWithTake(IGF, destAddr, srcAddr, T);
-  ///   return destAddress;
-  /// but will be more efficient for dynamic types, since it uses a single
-  /// value witness call.
-  virtual Address initializeBufferWithTake(IRGenFunction &IGF,
-                                           Address destBuffer,
-                                           Address srcAddr,
-                                           SILType T) const;
-
-  /// Perform a copy-initialization from the given object into an
-  /// uninitialized fixed-size buffer, allocating the buffer if necessary.
-  /// Returns the address of the value inside the buffer.
-  ///
-  /// This is equivalent to:
-  ///   auto destAddress = allocateBuffer(IGF, destBuffer, T);
-  ///   initializeWithCopy(IGF, destAddr, srcAddr, T);
-  ///   return destAddress;
-  /// but will be more efficient for dynamic types, since it uses a single
-  /// value witness call.
-  virtual Address initializeBufferWithCopy(IRGenFunction &IGF,
-                                           Address destBuffer,
-                                           Address srcAddr,
-                                           SILType T) const;
-
   /// Perform a copy-initialization from the given fixed-size buffer
   /// into an uninitialized fixed-size buffer, allocating the buffer if
   /// necessary.  Returns the address of the value inside the buffer.
@@ -379,23 +339,6 @@
                                                    Address srcBuffer,
                                                    SILType T) const;
 
-  /// Destroy an object of this type within an initialized fixed-size buffer
-  /// and deallocate the buffer.
-  ///
-  /// This is equivalent to:
-  ///   auto valueAddr = projectBuffer(IGF, buffer, T);
-  ///   destroy(IGF, valueAddr, T);
-  ///   deallocateBuffer(IGF, buffer, T);
-  /// but will be more efficient for dynamic types, since it uses a single
-  /// value witness call.
-  virtual void destroyBuffer(IRGenFunction &IGF, Address buffer,
-                             SILType T) const;
-
-  /// Deallocate the space for an object of this type within an initialized
-  /// fixed-size buffer.
-  virtual void deallocateBuffer(IRGenFunction &IGF, Address buffer,
-                                SILType T) const;
-
   /// Take-initialize an address from a parameter explosion.
   virtual void initializeFromParams(IRGenFunction &IGF, Explosion &params,
                                     Address src, SILType T) const = 0;
diff --git a/lib/Immediate/Immediate.cpp b/lib/Immediate/Immediate.cpp
index 967a64e..d7ca229 100644
--- a/lib/Immediate/Immediate.cpp
+++ b/lib/Immediate/Immediate.cpp
@@ -360,8 +360,9 @@
   std::string ErrorMsg;
   llvm::TargetOptions TargetOpt;
   std::string CPU;
+  std::string Triple;
   std::vector<std::string> Features;
-  std::tie(TargetOpt, CPU, Features)
+  std::tie(TargetOpt, CPU, Features, Triple)
     = getIRTargetOptions(IRGenOpts, swiftModule->getASTContext());
   builder.setRelocationModel(llvm::Reloc::PIC_);
   builder.setTargetOptions(TargetOpt);
diff --git a/lib/Immediate/REPL.cpp b/lib/Immediate/REPL.cpp
index 31cc858..4ec6781 100644
--- a/lib/Immediate/REPL.cpp
+++ b/lib/Immediate/REPL.cpp
@@ -953,8 +953,9 @@
     std::string ErrorMsg;
     llvm::TargetOptions TargetOpt;
     std::string CPU;
+    std::string Triple;
     std::vector<std::string> Features;
-    std::tie(TargetOpt, CPU, Features)
+    std::tie(TargetOpt, CPU, Features, Triple)
       = getIRTargetOptions(IRGenOpts, CI.getASTContext());
     
     builder.setRelocationModel(llvm::Reloc::PIC_);
diff --git a/lib/Migrator/APIDiffMigratorPass.cpp b/lib/Migrator/APIDiffMigratorPass.cpp
index d620895..915b92f 100644
--- a/lib/Migrator/APIDiffMigratorPass.cpp
+++ b/lib/Migrator/APIDiffMigratorPass.cpp
@@ -334,7 +334,7 @@
       if (Idx < NewName.argSize()) {
         auto Label = NewName.args()[Idx++];
 
-        if (Label != "_") {
+        if (!Label.empty()) {
           if (LR.getByteLength())
             Editor.replace(LR, Label);
           else
@@ -366,6 +366,25 @@
     }
   }
 
+  bool handleQualifiedReplacement(Expr* Call) {
+    if (auto *DSC = dyn_cast<DotSyntaxCallExpr>(Call)) {
+      if (auto FD = DSC->getFn()->getReferencedDecl().getDecl()) {
+        for (auto *I :getRelatedDiffItems(FD)) {
+          if (auto *Item = dyn_cast<TypeMemberDiffItem>(I)) {
+            if (Item->Subkind == TypeMemberDiffItemSubKind::
+                QualifiedReplacement) {
+              Editor.replace(Call->getSourceRange(),
+                (llvm::Twine(Item->newTypeName) + "." +
+                  Item->getNewName().base()).str());
+              return true;
+            }
+          }
+        }
+      }
+    }
+    return false;
+  }
+
   bool handleSpecialCases(ValueDecl *FD, CallExpr* Call, Expr *Arg) {
     SpecialCaseDiffItem *Item = nullptr;
     for (auto *I: getRelatedDiffItems(FD)) {
@@ -427,6 +446,59 @@
       // Swift.abs(1.0)
       Editor.replace(Call->getFn()->getSourceRange(), "Swift.abs");
       return true;
+    case SpecialCaseId::ToUIntMax:
+      if (const auto *DotCall = dyn_cast<DotSyntaxCallExpr>(Call->getFn())) {
+        Editor.insert(DotCall->getStartLoc(), "UInt64(");
+        Editor.replace({ DotCall->getDotLoc(), Call->getEndLoc() }, ")");
+        return true;
+      }
+      return false;
+    case SpecialCaseId::ToIntMax:
+      if (const auto *DotCall = dyn_cast<DotSyntaxCallExpr>(Call->getFn())) {
+        Editor.insert(DotCall->getStartLoc(), "Int64(");
+        Editor.replace({ DotCall->getDotLoc(), Call->getEndLoc() }, ")");
+        return true;
+      }
+      return false;
+    case SpecialCaseId::NSOpenGLGetVersion: {
+      if (const auto *Tuple = dyn_cast<TupleExpr>(Arg)) {
+        if (Tuple->getNumElements() != 2) {
+          return false;
+        }
+
+        auto extractArg = [](const Expr *Arg) -> const DeclRefExpr * {
+          while (const auto *ICE = dyn_cast<ImplicitConversionExpr>(Arg)) {
+            Arg = ICE->getSubExpr();
+          }
+          if (const auto *IOE = dyn_cast<InOutExpr>(Arg)) {
+            return dyn_cast<DeclRefExpr>(IOE->getSubExpr());
+          }
+          return nullptr;
+        };
+
+        const auto *Arg0 = extractArg(Tuple->getElement(0));
+        const auto *Arg1 = extractArg(Tuple->getElement(1));
+
+        if (!(Arg0 && Arg1)) {
+          return false;
+        }
+        SmallString<256> Scratch;
+        llvm::raw_svector_ostream OS(Scratch);
+        auto StartLoc = Call->getStartLoc();
+        Editor.insert(StartLoc, "(");
+        Editor.insert(StartLoc,
+          SM.extractText(Lexer::getCharSourceRangeFromSourceRange(SM,
+            Arg0->getSourceRange())));
+        Editor.insert(StartLoc, ", ");
+        Editor.insert(StartLoc,
+          SM.extractText(Lexer::getCharSourceRangeFromSourceRange(SM,
+            Arg1->getSourceRange())));
+        Editor.insert(StartLoc, ") = ");
+        Editor.replace(Call->getSourceRange(), "NSOpenGLContext.openGLVersion");
+        return true;
+      }
+      return false;
+    }
     }
   }
 
@@ -439,7 +511,8 @@
     }
     if (!Item)
       return false;
-    if (Item->Subkind == TypeMemberDiffItemSubKind::SimpleReplacement)
+    if (Item->Subkind == TypeMemberDiffItemSubKind::SimpleReplacement ||
+        Item->Subkind == TypeMemberDiffItemSubKind::QualifiedReplacement)
       return false;
 
     if (Item->Subkind == TypeMemberDiffItemSubKind::GlobalFuncToStaticProperty) {
@@ -463,7 +536,7 @@
     auto *SelfExpr = AllArgs[0].ArgExp;
     if (auto *IOE = dyn_cast<InOutExpr>(SelfExpr))
       SelfExpr = IOE->getSubExpr();
-    const bool NeedParen = !SelfExpr->canAppendCallParentheses();
+    const bool NeedParen = !SelfExpr->canAppendPostfixExpression();
 
     // Remove the global function name: "Foo(a, b..." to "a, b..."
     Editor.remove(CharSourceRange(SM, Call->getStartLoc(),
@@ -490,6 +563,7 @@
     switch (Item->Subkind) {
     case TypeMemberDiffItemSubKind::GlobalFuncToStaticProperty:
     case TypeMemberDiffItemSubKind::SimpleReplacement:
+    case TypeMemberDiffItemSubKind::QualifiedReplacement:
       llvm_unreachable("should be handled elsewhere");
     case TypeMemberDiffItemSubKind::HoistSelfOnly:
       // we are done here.
@@ -546,8 +620,9 @@
   }
 
   bool walkToExprPre(Expr *E) override {
+    if (handleQualifiedReplacement(E))
+      return false;
     if (auto *CE = dyn_cast<CallExpr>(E)) {
-
       auto Fn = CE->getFn();
       auto Args = CE->getArg();
       switch (Fn->getKind()) {
@@ -670,7 +745,7 @@
     switch (DiffItem->DiffKind) {
     case NodeAnnotation::GetterToProperty: {
       auto FuncLoc = FD->getFuncLoc();
-      auto ReturnTyLoc = FD->getBodyResultTypeLoc().getLoc();
+      auto ReturnTyLoc = FD->getBodyResultTypeLoc().getSourceRange().Start;
       auto NameLoc = FD->getNameLoc();
       if (FuncLoc.isInvalid() || ReturnTyLoc.isInvalid() || NameLoc.isInvalid())
         break;
diff --git a/lib/Migrator/EditorAdapter.cpp b/lib/Migrator/EditorAdapter.cpp
index 8542b87..6b99711 100644
--- a/lib/Migrator/EditorAdapter.cpp
+++ b/lib/Migrator/EditorAdapter.cpp
@@ -13,12 +13,33 @@
 #include "swift/Basic/SourceLoc.h"
 #include "swift/Basic/SourceManager.h"
 #include "swift/Migrator/EditorAdapter.h"
+#include "swift/Migrator/Replacement.h"
 #include "swift/Parse/Lexer.h"
 #include "clang/Basic/SourceManager.h"
 
 using namespace swift;
 using namespace swift::migrator;
 
+std::pair<unsigned, unsigned>
+EditorAdapter::getLocInfo(swift::SourceLoc Loc) const {
+  auto SwiftBufferID = SwiftSrcMgr.findBufferContainingLoc(Loc);
+  auto Offset = SwiftSrcMgr.getLocOffsetInBuffer(Loc, SwiftBufferID);
+  return { SwiftBufferID, Offset };
+}
+
+bool
+EditorAdapter::cacheReplacement(CharSourceRange Range, StringRef Text) const {
+  unsigned SwiftBufferID, Offset;
+  std::tie(SwiftBufferID, Offset) = getLocInfo(Range.getStart());
+  Replacement R { Offset, Range.getByteLength(), Text };
+  if (Replacements.count(R)) {
+    return true;
+  } else {
+    Replacements.insert(R);
+  }
+  return false;
+}
+
 clang::FileID
 EditorAdapter::getClangFileIDForSwiftBufferID(unsigned BufferID) const {
   /// Check if we already have a mapping for this BufferID.
@@ -40,8 +61,8 @@
 
 clang::SourceLocation
 EditorAdapter::translateSourceLoc(SourceLoc SwiftLoc) const {
-  auto SwiftBufferID = SwiftSrcMgr.findBufferContainingLoc(SwiftLoc);
-  auto Offset = SwiftSrcMgr.getLocOffsetInBuffer(SwiftLoc, SwiftBufferID);
+  unsigned SwiftBufferID, Offset;
+  std::tie(SwiftBufferID, Offset) = getLocInfo(SwiftLoc);
 
   auto ClangFileID = getClangFileIDForSwiftBufferID(SwiftBufferID);
   return ClangSrcMgr.getLocForStartOfFile(ClangFileID).getLocWithOffset(Offset);
@@ -67,6 +88,10 @@
   if (AfterToken)
     Loc = Lexer::getLocForEndOfToken(SwiftSrcMgr, Loc);
 
+  if (cacheReplacement(CharSourceRange { Loc, 0 }, Text)) {
+    return true;
+  }
+
   auto ClangLoc = translateSourceLoc(Loc);
   return Edits.insert(ClangLoc, Text, /*AfterToken=*/false, BeforePreviousInsertions);
 }
@@ -78,6 +103,11 @@
   if (AfterToken)
     Loc = Lexer::getLocForEndOfToken(SwiftSrcMgr, Loc);
 
+  if (cacheReplacement(CharSourceRange { Loc, 0 },
+                       SwiftSrcMgr.extractText(Range))) {
+    return true;
+  }
+
   auto ClangLoc = translateSourceLoc(Loc);
   auto ClangCharRange = translateCharSourceRange(Range);
 
@@ -92,23 +122,41 @@
 }
 
 bool EditorAdapter::remove(CharSourceRange Range) {
+  if (cacheReplacement(Range, "")) {
+    return true;
+  }
   auto ClangRange = translateCharSourceRange(Range);
   return Edits.remove(ClangRange);
 }
 
 bool EditorAdapter::replace(CharSourceRange Range, StringRef Text) {
+  if (cacheReplacement(Range, Text)) {
+    return true;
+  }
+
   auto ClangRange = translateCharSourceRange(Range);
   return Edits.replace(ClangRange, Text);
 }
 
 bool EditorAdapter::replaceWithInner(CharSourceRange Range,
                                      CharSourceRange InnerRange) {
+
+  if (cacheReplacement(Range, SwiftSrcMgr.extractText(InnerRange))) {
+    return true;
+  }
   auto ClangRange = translateCharSourceRange(Range);
   auto ClangInnerRange = translateCharSourceRange(InnerRange);
   return Edits.replaceWithInner(ClangRange, ClangInnerRange);
 }
+
 bool EditorAdapter::replaceText(SourceLoc Loc, StringRef Text,
-                 StringRef ReplacementText) {
+                                StringRef ReplacementText) {
+  auto Range = Lexer::getCharSourceRangeFromSourceRange(SwiftSrcMgr,
+    { Loc, Loc.getAdvancedLoc(Text.size())});
+  if (cacheReplacement(Range, Text)) {
+    return true;
+  }
+
   auto ClangLoc = translateSourceLoc(Loc);
   return Edits.replaceText(ClangLoc, Text, ReplacementText);
 }
diff --git a/lib/Migrator/FixitApplyDiagnosticConsumer.cpp b/lib/Migrator/FixitApplyDiagnosticConsumer.cpp
index 56e8741..95903bd 100644
--- a/lib/Migrator/FixitApplyDiagnosticConsumer.cpp
+++ b/lib/Migrator/FixitApplyDiagnosticConsumer.cpp
@@ -56,12 +56,11 @@
                                           ThisBufferID);
     auto Length = Fixit.getRange().getByteLength();
 
-    if (Fixit.getText().ltrim().rtrim() == "@objc") {
-      if (AddedObjC.count(Loc.getOpaquePointerValue())) {
-        return;
-      } else {
-        AddedObjC.insert(Loc.getOpaquePointerValue());
-      }
+    Replacement R { Offset, Length, Fixit.getText() };
+    if (Replacements.count(R)) {
+      return;
+    } else {
+      Replacements.insert(R);
     }
 
     RewriteBuf.ReplaceText(Offset, Length, Fixit.getText());
diff --git a/lib/Migrator/Migrator.cpp b/lib/Migrator/Migrator.cpp
index 14b7564..43bc748 100644
--- a/lib/Migrator/Migrator.cpp
+++ b/lib/Migrator/Migrator.cpp
@@ -9,6 +9,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "swift/Basic/Diff.h"
 #include "swift/Frontend/Frontend.h"
 #include "swift/Migrator/ASTMigratorPass.h"
 #include "swift/Migrator/EditorAdapter.h"
@@ -27,6 +28,11 @@
 
 bool migrator::updateCodeAndEmitRemap(CompilerInstance *Instance,
                                       const CompilerInvocation &Invocation) {
+  // Delete the remap file, in case someone is re-running the Migrator. If the
+  // file fails to compile and we don't get a chance to overwrite it, the old
+  // changes may get picked up.
+  llvm::sys::fs::remove(Invocation.getMigratorOptions().EmitRemapFilePath);
+
   Migrator M { Instance, Invocation }; // Provide inputs and configuration
 
   // Phase 1: Pre Fix-it passes
@@ -105,13 +111,19 @@
 std::unique_ptr<swift::CompilerInstance>
 Migrator::performAFixItMigration(version::Version SwiftLanguageVersion) {
   auto InputState = States.back();
+  auto InputText = InputState->getOutputText();
   auto InputBuffer =
-    llvm::MemoryBuffer::getMemBufferCopy(InputState->getOutputText(),
-                                         getInputFilename());
+    llvm::MemoryBuffer::getMemBufferCopy(InputText, getInputFilename());
 
   CompilerInvocation Invocation { StartInvocation };
   Invocation.clearInputs();
   Invocation.getLangOptions().EffectiveLanguageVersion = SwiftLanguageVersion;
+  auto &LLVMArgs = Invocation.getFrontendOptions().LLVMArgs;
+  auto aarch64_use_tbi = std::find(LLVMArgs.begin(), LLVMArgs.end(),
+                                   "-aarch64-use-tbi");
+  if (aarch64_use_tbi != LLVMArgs.end()) {
+    LLVMArgs.erase(aarch64_use_tbi);
+  }
 
   // SE-0160: When migrating, always use the Swift 3 @objc inference rules,
   // which drives warnings with the "@objc" Fix-Its.
@@ -155,14 +167,14 @@
   }
 
   FixitApplyDiagnosticConsumer FixitApplyConsumer {
-    InputState->getOutputText(),
+    InputText,
     getInputFilename(),
   };
   Instance->addDiagnosticConsumer(&FixitApplyConsumer);
 
   Instance->performSema();
 
-  StringRef ResultText = InputState->getOutputText();
+  StringRef ResultText = InputText;
   unsigned ResultBufferID = InputState->getOutputBufferID();
 
   if (FixitApplyConsumer.getNumFixitsApplied() > 0) {
@@ -233,10 +245,166 @@
   return false;
 }
 
+namespace {
+/// Print a replacement from a diff edit scriptto the given output stream.
+///
+/// \param Filename The filename of the original file
+/// \param Rep The Replacement to print
+/// \param OS The output stream
+void printReplacement(const StringRef Filename,
+                      const Replacement &Rep,
+                      llvm::raw_ostream &OS) {
+  assert(!Filename.empty());
+  if (Rep.Remove == 0 && Rep.Text.empty()) {
+    return;
+  }
+  OS << "  {\n";
+
+  OS << "    \"file\": \"";
+  OS.write_escaped(Filename);
+  OS << "\",\n";
+
+  OS << "    \"offset\": " << Rep.Offset;
+  if (Rep.Remove > 0) {
+    OS << ",\n";
+    OS << "    \"remove\": " << Rep.Remove;
+  }
+  if (!Rep.Text.empty()) {
+    OS << ",\n";
+    OS << "    \"text\": \"";
+    OS.write_escaped(Rep.Text);
+    OS << "\"\n";
+  } else {
+    OS << "\n";
+  }
+  OS << "  }";
+}
+
+/// Print a remap file to the given output stream.
+///
+/// \param OriginalFilename The filename of the file that was edited
+/// not the output file for printing here.
+/// \param InputText The input text without any changes.
+/// \param OutputText The result text after any changes.
+/// \param OS The output stream.
+void printRemap(const StringRef OriginalFilename,
+                const StringRef InputText,
+                const StringRef OutputText,
+                llvm::raw_ostream &OS) {
+  assert(!OriginalFilename.empty());
+
+  diff_match_patch<std::string> DMP;
+  const auto Diffs = DMP.diff_main(InputText, OutputText, /*checkLines=*/false);
+
+  OS << "[";
+
+  size_t Offset = 0;
+
+  llvm::SmallVector<Replacement, 32> Replacements;
+
+  for (const auto &Diff : Diffs) {
+    size_t OffsetIncrement = 0;
+    switch (Diff.operation) {
+      case decltype(DMP)::EQUAL:
+        OffsetIncrement += Diff.text.size();
+        break;
+      case decltype(DMP)::INSERT:
+        Replacements.push_back({ Offset, 0, Diff.text });
+        break;
+      case decltype(DMP)::DELETE:
+        Replacements.push_back({ Offset, Diff.text.size(), "" });
+        OffsetIncrement = Diff.text.size();
+        break;
+    }
+    Offset += OffsetIncrement;
+  }
+
+  assert(Offset == InputText.size());
+
+  // Combine removal edits with previous edits that are consecutive.
+  for (unsigned i = 1; i < Replacements.size();) {
+    auto &Previous = Replacements[i-1];
+    auto &Current = Replacements[i];
+    assert(Current.Offset >= Previous.Offset + Previous.Remove);
+    unsigned Distance = Current.Offset-(Previous.Offset + Previous.Remove);
+    if (Distance > 0) {
+      ++i;
+      continue;
+    }
+    if (!Current.Text.empty()) {
+      ++i;
+      continue;
+    }
+    Previous.Remove += Current.Remove;
+    Replacements.erase(Replacements.begin() + i);
+  }
+
+  // Combine removal edits with next edits that are consecutive.
+  for (unsigned i = 0; i + 1 < Replacements.size();) {
+    auto &Current = Replacements[i];
+    auto &nextRep = Replacements[i + 1];
+    assert(nextRep.Offset >= Current.Offset + Current.Remove);
+    unsigned Distance = nextRep.Offset - (Current.Offset + Current.Remove);
+    if (Distance > 0) {
+      ++i;
+      continue;
+    }
+    if (!Current.Text.empty()) {
+      ++i;
+      continue;
+    }
+    nextRep.Offset -= Current.Remove;
+    nextRep.Remove += Current.Remove;
+    Replacements.erase(Replacements.begin() + i);
+  }
+
+  // For remaining removal diffs, include the byte adjacent to the range on the
+  // left. libclang applies the diffs as byte diffs, so it doesn't matter if the
+  // byte is part of a multi-byte UTF8 character.
+  for (unsigned i = 0; i < Replacements.size(); ++i) {
+    auto &Current = Replacements[i];
+    if (!Current.Text.empty())
+      continue;
+    if (Current.Offset == 0)
+      continue;
+    Current.Offset -= 1;
+    Current.Remove += 1;
+    Current.Text = InputText.substr(Current.Offset, 1);
+  }
+
+  for (auto Rep = Replacements.begin(); Rep != Replacements.end(); ++Rep) {
+    if (Rep != Replacements.begin()) {
+      OS << ",\n";
+    } else {
+      OS << "\n";
+    }
+    printReplacement(OriginalFilename, *Rep, OS);
+  }
+
+  OS << "\n]";
+}
+
+} // end anonymous namespace
+
 bool Migrator::emitRemap() const {
-  // TODO: Need to integrate diffing library to diff start and end state's
-  // output text.
-  return false;
+  const auto &RemapPath = getMigratorOptions().EmitRemapFilePath;
+  if (RemapPath.empty()) {
+    return false;
+  }
+
+  std::error_code Error;
+  llvm::raw_fd_ostream FileOS(RemapPath,
+                              Error, llvm::sys::fs::F_Text);
+  if (FileOS.has_error()) {
+    return true;
+  }
+
+  auto InputText = States.front()->getOutputText();
+  auto OutputText = States.back()->getOutputText();
+  printRemap(getInputFilename(), InputText, OutputText, FileOS);
+
+  FileOS.flush();
+  return FileOS.has_error();
 }
 
 bool Migrator::emitMigratedFile() const {
diff --git a/lib/Migrator/README.md b/lib/Migrator/README.md
new file mode 100644
index 0000000..321ae76
--- /dev/null
+++ b/lib/Migrator/README.md
@@ -0,0 +1,251 @@
+# Swift Migrator
+
+This library implements functionality for the Swift 4 Migrator.
+
+## Overview
+
+The Migrator was rewritten from the ground up for Swift 4 with a few major differences:
+
+- It's not a separate tool but integrated directly into the compiler binary
+- It understands Swift 3 and Swift 4 code equally
+- Can migrate individual targets in Xcode
+- A pipeline architecture with explicit immutable state changes
+
+The Migrator runs during a normal frontend invocation, with the *primary file* being the target for migration, resulting in the following additional outputs:
+
+1. The *replacement map* file (a.k.a. *remap* file)
+   `-emit-remap-file-path <path>`
+2. The migrated file - optional, primarily for testing.
+   `-emit-migrated-file-path <path>`
+3. The migration states - optional, primarily for testing.
+   `-dump-migration-states-dir <dir>`
+
+The majority of changes suggested by the Migrator are driven by:
+
+- API changes from the Xcode 8.3\* SDKs and the Xcode 9 SDKs
+- Fix-its suggested by the compiler
+
+There are a few passes that walk the AST and perform textual edits
+for some cases, discussed below.
+
+## The Migrator Pipeline
+
+The migrator has the following *passes*, each of which takes an input source text and produces and output source text, collecting a sequence of *states*, which includes the input and output text from the pass.
+
+At the start of the normal frontend invocation, the compiler parses and type-checks the primary input, resulting in a type-checked AST, which is handed to the Migrator if one of the above flags were passed. For this initial step, the Migrator uses whatever Swift language version that was passed to the frontend.
+
+Here are the passes:
+
+1. Pre-fix-it Pass
+
+   If the compiler wasn't able to successfully type-check the primary input source file,
+   the Migrator makes a best effort at applying any fix-its the compiler suggests and trying
+   again, *up to two times*. If it still can't successfully type-check and get an AST, the
+   pipeline stops.
+
+   > See lib/Migrator/Migrator.cpp: `Migrator::repeatFixitMigrations`
+
+2. AST Passes
+
+   If the Pre-fix-it Pass was successful, or skipped because it was unnecessary, the
+   *AST Passes* run. These include:
+
+   - API Diff Pass
+
+     This pass injests an *API Diff Data File*, a JSON file describing API changes
+     from the previous SDK, and looks for API references, performing textual edits
+     to update code for things like referenced type and argument names or optionality
+     changes. This is where the majority of changes come from in the Migrator.
+
+     For a list of the different kinds of entries, see `include/swift/IDE/DigesterEnums.def`
+     and the actual JSON data files in `lib/Migrator`.
+
+     There are also a few "special case" migrations implemented here, which
+     were different from the typical API diff changes but also rare enough. These
+     are mainly declared in `lib/Migrator/overlay.json`, implemented in `handleSpecialCases`.
+     Some examples of these include:
+
+     - Migrating `Double.abs(0.0)` to `Swift.abs(0.0)`
+     - A few NSOpenGL APIs
+     - Standard Library `UIntMax` and `IntMax` APIs moving to reference `UInt64` and `Int64`
+
+     > See:
+     > - lib/Migrator/APIDiffMigratorPass.cpp
+     > - include/swift/IDE/DigesterEnums.def
+     > - lib/IDE/APIDigesterData.cpp
+     > - lib/Migrator/ios.json
+     > - lib/Migrator/macos.json
+     > - lib/Migrator/tvos.json
+     > - lib/Migrator/watchos.json
+
+   - Tuple Splat Migrator Pass
+
+     This implements a few convenience transformations to ease the transition
+     for [SE-0110: Distinguish between single-tuple and multiple-argument function types](https://github.com/apple/swift-evolution/blob/master/proposals/0110-distingish-single-tuple-arg.md).
+
+     In particular, this pass adds new variable bindings in closure expressions
+     to destructure what are now are a single argument, a tuple. Prior to SE-0110,
+     a closure's argument list may have been automatically matched up in Swift 3.
+
+     > See lib/Migrator/RewriteBufferEditsReceiver.cpp
+
+   - type(of:) Migrator Pass
+
+     This is a small convenience pass to account for `Swift.type(of:)` now being
+     resolved by overload resolution. It was handled specially in Swift 3.
+
+     > See lib/Migrator/Migrator.cpp: `Migrator::performSyntacticPasses`
+
+3. Post-fix-it Pass
+
+   Finally, the post-fix-it pass, like the pre-fix-it pass, ingests fix-its suggested
+   by the compiler, explicitly set to Swift 4 Mode. This essentially handles automating
+   acceptance of fix-its to convert the source file to Swift 4 in terms of the language
+   itself instead of the APIs.
+
+   This pass is run up to seven times, a number tweaked based on historical observations.
+   The reason the pass is run multiple times is that applying fix-its may reveal more
+   problems to the type-checker, which can then suggest more fix-its, and so on.
+
+   Of note, this includes migration to *Swift 4 @objc Inference*. This is a nuanced topic
+   with implications for your binary size and Objective-C interoperability. There is a
+   link to discussion on this topic at the bottom of this README.
+
+   > See lib/Migrator/Migrator.cpp: `Migrator::repeatFixitMigrations`
+
+As each of these passes run, a `MigrationState` is pushed onto the Migrator, describing
+the input and output text explicitly, and which pass produced the transformation.
+
+Finally, at the end of the pipeline, the outputs are emitted. If `-emit-migrated-file-path` was given, the `OutputText` of the final `MigrationState` is written to that file path. If `-dump-migration-states-dir` was specified, the input and output text of each state is dumped into that directory. Finally, if `-emit-remap-file-path` was specified, a file describing the differences between the first and last `MigrationState`'s `OutputText` is emitted.
+
+> See lib/Migrator/Migrator.cpp: `swift::migrator::updateCodeAndEmitRemap`
+
+Other controls for the frontend:
+
+- `-disable-migrator-fixits` - skips the fix-it passes during the migration pipeline.
+- `-migrate-keep-objc-visibility` - add `@objc` to declarations that were implicitly visible
+  to Objective-C in Swift 3.
+- `-api-diff-data-file` - override the API diff JSON file.
+
+> See include/swift/Migrator/MigratorOptions.h
+
+### Fix-it Filter
+
+For the pre- and post-fix-it passes, there are two basic rules for which fix-its the Migrator will take:
+
+1. Fix-its attached to *error* diagnosics are taken by default and are opt-out.
+2. Fix-its attached to *warning* or *note* diagnostics are not taken by default and so are opt-in.
+
+For the opt-out and opt-in cases, these are filtered in the `FixitFilter`, essentially just a small collection of Swift's compiler diagnostic IDs.
+
+> See include/swift/Migrator/FixitFilter.h
+
+### Applying Fix-its
+
+The `FixitApplyDiagnosticConsumer` delegate class subscribes to fix-its emitted by the type-checker and decides whether to take the fix-it based on the following:
+
+- The fix-it should be for the current primary file of the frontend invocation to prevent
+  multiple fix-its from being emitted for the same file.
+- The fix-it should be permitted by the `FixitFilter`.
+- The fix-it doesn't suggest a duplicate change to the source file.
+
+In order to produce a `MigrationState` for this pass, fix-its are applied immediately to a running *RewriteBuffer*, which is supplied by Clang. At the end of a fix-it pass, the resulting text is extracted from the `RewriteBufferEditsReceiver`.
+
+> See:
+> - include/swift/Migrator/FixitApplyDiagnosticConsumer.h
+> - lib/Migrator/FixitApplyDiagnosticConsumer.cpp
+> - include/swift/Migrator/RewriteBufferEditsReceiver.h
+> - lib/Migrator/RewriteBufferEditsReceiver.cpp
+
+## Remap File Format
+
+This is a file describing textual replacements the input file, a JSON array-of-objects. Xcode ingests these files to generate the diff preview you see in the Migration Assistant.
+
+- `file`: String
+
+  The absolute path to the input file.
+- `offset`: Number
+
+  The absolute offset into the input file.
+- `remove`: Number (Assumed 0 if missing)
+
+  Remove this many bytes at the given `offset`.
+- `text`: String (Assumed empty if missing)
+
+  Insert this text at the given `offset`.
+
+These entries can describe *removals*, *insertions*, or *replacements*.
+
+### Removals
+
+For removals, you specify `file`, `offset`, and `remove`.
+
+```json
+{
+  "file": "/path/to/my/file.swift",
+  "offset": 503,
+  "remove": 10
+}
+```
+
+This says to remove 10 bytes at offset 503 in the original source file. You can specify an empty string for the text.
+
+### Insertions
+
+For insertions, you specify `file`, `offset`, and `text`. You can specify `remove` to be 0.
+
+```json
+{
+  "file": "/path/to/my/file.swift",
+  "offset": 61,
+  "text": ".foo()"
+}
+```
+
+This says to insert `.foo()` at offset 61 in the source file.
+
+### Replacements
+
+For replacements, you specify all four keys.
+
+```json
+{
+  "file": "/path/to/my/file.swift",
+  "offset": 61,
+  "remove": 3,
+  "text": "bar"
+}
+```
+
+This says to replace the 3 bytes starting at offset 61 with `foo` in the source file.
+
+## Other Internals
+
+There are two main other pieces of the Migrator's implementation, *diffing* and *editing*.
+
+### Diffing
+
+For diffing, we pulled in an STL port of Google's *diff-match-patch* library to perform the final diff of the start and end `MigrationState`'s text. This is a fairly standard implementation of the Myers Difference Algorithm (see *An O(ND) Difference Algorithm and Its Variations* by Eugene W. Myers).
+
+> See include/swift/Basic/Diff.h
+
+### Editing
+
+For textual edits during the AST passes, we adapted libEdit's `Commit` and `EditedSource` functionality that was used in the ARC/Objective-C modernizer. Essentially a wrapper that converts Swift's `SourceLoc`, `SourceRange`, and `CharSourceRange` structures into Clang's,
+this implements basic operations like insertions, removals, and replacements. Originally, we planned on using lib/Syntax for these transformations but there wasn't enough time and we found that the edits we needed for the Migrator were straightforward enough.
+
+> See:
+> - include/swift/Migrator/EditorAdaptor.h
+> - lib/Migrator/EditorAdaptor.h
+
+### Migration States
+
+This is an immutable container explicitly describing changes in state as the Migrator runs, which is not only for safety but also for debuggability. This clarifies which pass was responsible for a set of changes in the pipeline because there can be a lot of changes, sometimes conflicting or redundant, between the API diffs and compiler fix-its.
+
+> See include/swift/Migrator/MigrationState.h
+
+## More Information
+
+[Migrating to Swift 4 on swift.org](https://swift.org/migration-guide/)
+
+[Migrate to Swift 4 @objc inference on help.apple.com](https://help.apple.com/xcode/mac/current/#/deve838b19a1)
diff --git a/lib/Migrator/TupleSplatMigratorPass.cpp b/lib/Migrator/TupleSplatMigratorPass.cpp
index b058a5a..d1ecc1e 100644
--- a/lib/Migrator/TupleSplatMigratorPass.cpp
+++ b/lib/Migrator/TupleSplatMigratorPass.cpp
@@ -192,8 +192,17 @@
       if (!fnTy)
         return false;
       auto fnTy2 = fnTy->getInput()->getAs<FunctionType>();
-      if (!fnTy2)
+      if (!fnTy2) {
+        // This may have been a tuple type of one element.
+        if (auto tuple = fnTy->getInput()->getAs<TupleType>()) {
+          if (tuple->getNumElements() == 1) {
+            fnTy2 = tuple->getElement(0).getType()->getAs<FunctionType>();
+          }
+        }
+      }
+      if (!fnTy2) {
         return false;
+      }
       auto parenT = dyn_cast<ParenType>(fnTy2->getInput().getPointer());
       if (!parenT)
         return false;
@@ -207,6 +216,11 @@
         argE = ICE->getSubExpr();
       argE = argE->getSemanticsProvidingExpr();
       auto closureE = dyn_cast<ClosureExpr>(argE);
+      if (!closureE) {
+        if (auto *FCE = dyn_cast<FunctionConversionExpr>(argE)) {
+          closureE = dyn_cast<ClosureExpr>(FCE->getSubExpr());
+        }
+      }
       if (!closureE)
         return false;
       if (closureE->getInLoc().isInvalid())
@@ -254,7 +268,15 @@
           }
         }
 
-        Editor.replaceToken(closureE->getInLoc(), "= $0;");
+        // If the original closure was a single expression without the need
+        // for a `return` statement, it needs one now, because we've added a new
+        // assignment statement just above.
+        if (closureE->hasSingleExpressionBody()) {
+          Editor.replaceToken(closureE->getInLoc(), "= $0; return");
+        } else {
+          Editor.replaceToken(closureE->getInLoc(), "= $0;");
+        }
+
         return true;
       }
 
@@ -293,7 +315,11 @@
           auto param = paramList->get(i);
           OS << param->getNameStr();
         }
-        OS << ") = __val; ";
+        OS << ") = __val;";
+
+        if (closureE->hasSingleExpressionBody()) {
+          OS << " return";
+        }
       }
 
       Editor.replace(paramList->getSourceRange(), paramListText);
diff --git a/lib/Migrator/ios.json b/lib/Migrator/ios.json
index 32960f8..6f4d56f 100644
--- a/lib/Migrator/ios.json
+++ b/lib/Migrator/ios.json
@@ -1,2 +1,14705 @@
 [
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CKFetchShareMetadataOperation(im)initWithShareURLs:",
+    "LeftComment": "init(share:)",
+    "RightUsr": "",
+    "RightComment": "init(shareURLs:)",
+    "ModuleName": "CloudKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CKShare(im)initWithRootRecord:shareID:",
+    "LeftComment": "init(rootRecord:share:)",
+    "RightUsr": "",
+    "RightComment": "init(rootRecord:shareID:)",
+    "ModuleName": "CloudKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)ASIdentifierManager(cm)sharedManager",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AdSupport"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Photos"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSFileProviderExtension(cm)writePlaceholderAtURL:withMetadata:error:",
+    "LeftComment": "AnyHashable",
+    "RightUsr": "",
+    "RightComment": "URLResourceKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSFileProviderExtension(im)URLForItemWithPersistentIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFileProviderItemIdentifier",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSFileProviderExtension(im)persistentIdentifierForItemAtURL:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFileProviderItemIdentifier",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)setGlyphs:properties:characterIndexes:font:forGlyphRange:",
+    "LeftComment": "NSGlyphProperty",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.GlyphProperty",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)propertyForGlyphAtIndex:",
+    "LeftComment": "NSGlyphProperty",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.GlyphProperty",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)getGlyphsInRange:glyphs:properties:characterIndexes:bidiLevels:",
+    "LeftComment": "NSGlyphProperty",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.GlyphProperty",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "6:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)showCGGlyphs:positions:count:font:matrix:attributes:inContext:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(pl)NSLayoutManagerDelegate(im)layoutManager:shouldGenerateGlyphs:properties:characterIndexes:font:forGlyphRange:",
+    "LeftComment": "NSGlyphProperty",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.GlyphProperty",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSLayoutManagerDelegate(im)layoutManager:shouldUseAction:forControlCharacterAtIndex:",
+    "LeftComment": "NSControlCharacterAction",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.ControlCharacterAction",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSLayoutManagerDelegate(im)layoutManager:shouldUseAction:forControlCharacterAtIndex:",
+    "LeftComment": "NSControlCharacterAction",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.ControlCharacterAction",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithString:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)NSTextTab(im)initWithTextAlignment:location:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextTab.OptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)UIActivityItemSource(im)activityViewController:itemForActivityType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)UIActivityItemSource(im)activityViewController:itemForActivityType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)UIBarItem(im)setTitleTextAttributes:forState:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)UIFont(cm)systemFontOfSize:weight:",
+    "LeftComment": "CGFloat",
+    "RightUsr": "",
+    "RightComment": "UIFont.Weight",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)UIFont(cm)monospacedDigitSystemFontOfSize:weight:",
+    "LeftComment": "CGFloat",
+    "RightUsr": "",
+    "RightComment": "UIFont.Weight",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)UIFontDescriptor(im)objectForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "UIFontDescriptor.AttributeName",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)UIFontDescriptor(im)matchingFontDescriptorsWithMandatoryKeys:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "UIFontDescriptor.AttributeName",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)UIFontDescriptor(im)initWithFontAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "UIFontDescriptor.AttributeName",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)UIFontDescriptor(im)fontDescriptorByAddingAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "UIFontDescriptor.AttributeName",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)UITextInputStringTokenizer(im)initWithTextInput:",
+    "LeftComment": "UIResponder",
+    "RightUsr": "",
+    "RightComment": "UIResponder & UITextInput",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)UIView(im)systemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority:",
+    "LeftComment": "UILayoutPriority",
+    "RightUsr": "",
+    "RightComment": "UILayoutPriority",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)UIView(im)systemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority:",
+    "LeftComment": "UILayoutPriority",
+    "RightUsr": "",
+    "RightComment": "UILayoutPriority",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)UIView(im)contentHuggingPriorityForAxis:",
+    "LeftComment": "UILayoutPriority",
+    "RightUsr": "",
+    "RightComment": "UILayoutPriority",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)UIView(im)setContentHuggingPriority:forAxis:",
+    "LeftComment": "UILayoutPriority",
+    "RightUsr": "",
+    "RightComment": "UILayoutPriority",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)UIView(im)contentCompressionResistancePriorityForAxis:",
+    "LeftComment": "UILayoutPriority",
+    "RightUsr": "",
+    "RightComment": "UILayoutPriority",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)UIView(im)setContentCompressionResistancePriority:forAxis:",
+    "LeftComment": "UILayoutPriority",
+    "RightUsr": "",
+    "RightComment": "UILayoutPriority",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)SKUniform(im)initWithName:matrixFloat2x2:",
+    "LeftComment": "matrix_float2x2",
+    "RightUsr": "",
+    "RightComment": "matrix_float2x2",
+    "ModuleName": "SpriteKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)SKUniform(im)initWithName:matrixFloat3x3:",
+    "LeftComment": "matrix_float3x3",
+    "RightUsr": "",
+    "RightComment": "matrix_float3x3",
+    "ModuleName": "SpriteKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)SKUniform(im)initWithName:matrixFloat4x4:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "SpriteKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EKEventStore(im)sourceWithIdentifier:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "EventKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EKEventStore(im)defaultCalendarForNewReminders",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "EventKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EKEventStore(im)calendarItemWithIdentifier:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "EventKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPSBinaryImageKernel(im)encodeToCommandBuffer:primaryTexture:inPlaceSecondaryTexture:fallbackCopyAllocator:",
+    "LeftComment": "encode(to:primaryTexture:inPlaceSecondaryTexture:fallbackCopyAllocator:)",
+    "RightUsr": "",
+    "RightComment": "encode(commandBuffer:primaryTexture:inPlaceSecondaryTexture:fallbackCopyAllocator:)",
+    "ModuleName": "MetalPerformanceShaders"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPSBinaryImageKernel(im)encodeToCommandBuffer:inPlacePrimaryTexture:secondaryTexture:fallbackCopyAllocator:",
+    "LeftComment": "encode(to:inPlacePrimaryTexture:secondaryTexture:fallbackCopyAllocator:)",
+    "RightUsr": "",
+    "RightComment": "encode(commandBuffer:inPlacePrimaryTexture:secondaryTexture:fallbackCopyAllocator:)",
+    "ModuleName": "MetalPerformanceShaders"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPSBinaryImageKernel(im)encodeToCommandBuffer:primaryTexture:secondaryTexture:destinationTexture:",
+    "LeftComment": "encode(to:primaryTexture:secondaryTexture:destinationTexture:)",
+    "RightUsr": "",
+    "RightComment": "encode(commandBuffer:primaryTexture:secondaryTexture:destinationTexture:)",
+    "ModuleName": "MetalPerformanceShaders"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@MPSPurgeableState@MPSPurgeableStateAllocationDeferred",
+    "LeftComment": "allocationDeferred",
+    "RightUsr": "",
+    "RightComment": "deferred",
+    "ModuleName": "MetalPerformanceShaders"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MPMoviePlayerController(im)playPrerollAdWithCompletionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPMusicPlayerApplicationController(im)performQueueTransaction:completionHandler:",
+    "LeftComment": "performQueueTransaction(_:completionHandler:)",
+    "RightUsr": "",
+    "RightComment": "perform(queueTransaction:completionHandler:)",
+    "ModuleName": "MediaPlayer"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPMusicPlayerController(cm)applicationMusicPlayer",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "applicationMusicPlayer",
+    "ModuleName": "MediaPlayer"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPMusicPlayerController(cm)applicationQueuePlayer",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "applicationQueuePlayer",
+    "ModuleName": "MediaPlayer"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPMusicPlayerController(cm)systemMusicPlayer",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "systemMusicPlayer",
+    "ModuleName": "MediaPlayer"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPMusicPlayerController(cm)iPodMusicPlayer",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "iPodMusicPlayer",
+    "ModuleName": "MediaPlayer"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPMusicPlayerController(im)setQueueWithStoreIDs:",
+    "LeftComment": "setQueueWithStoreIDs(_:)",
+    "RightUsr": "",
+    "RightComment": "setQueue(with:)",
+    "ModuleName": "MediaPlayer"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPMusicPlayerController(im)setQueueWithDescriptor:",
+    "LeftComment": "setQueueWith(_:)",
+    "RightUsr": "",
+    "RightComment": "setQueue(with:)",
+    "ModuleName": "MediaPlayer"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPMusicPlayerControllerMutableQueue(im)removeItem:",
+    "LeftComment": "removeItem(_:)",
+    "RightUsr": "",
+    "RightComment": "remove(_:)",
+    "ModuleName": "MediaPlayer"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NEHotspotHelper(cm)supportedNetworkInterfaces",
+    "LeftComment": "Any",
+    "RightUsr": "",
+    "RightComment": "[Any]",
+    "ModuleName": "NetworkExtension"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NEHotspotHelper(cm)supportedNetworkInterfaces",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "NetworkExtension"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NEPacketTunnelNetworkSettings(py)IPv4Settings",
+    "LeftComment": "iPv4Settings",
+    "RightUsr": "",
+    "RightComment": "ipv4Settings",
+    "ModuleName": "NetworkExtension"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NEPacketTunnelNetworkSettings(py)IPv6Settings",
+    "LeftComment": "iPv6Settings",
+    "RightUsr": "",
+    "RightComment": "ipv6Settings",
+    "ModuleName": "NetworkExtension"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FE8DispatchCSo10DispatchIOcFT4typeOES_S0_10StreamType4pathGSPVs4Int8_5oflagVs5Int324modeVs6UInt165queueCSo13DispatchQueue14cleanupHandlerFS3_T__S0_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Dispatch"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "s:FE8DispatchCSo13DispatchQueue11setSpecificurFT3keyGCS_19DispatchSpecificKeyx_5valuex_T_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Dispatch"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithNames:scaleFactor:bundle:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithNames:scaleFactor:bundle:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreMotion"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MDLAsset(im)initWithURL:vertexDescriptor:bufferAllocator:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)MDLMaterialProperty(im)initWithName:semantic:matrix4x4:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)MDLMesh(im)initCapsuleWithExtent:cylinderSegments:hemisphereSegments:inwardNormals:geometryType:allocator:",
+    "LeftComment": "Int32",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MDLTransform(im)initWithMatrix:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MDLTransform(im)initWithMatrix:resetsTransform:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MDLTransform(im)setMatrix:forTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MDLTransform(im)rotationMatrixAtTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)localTransformAtTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(cm)globalTransformWithObject:atTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)localTransformAtTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(cm)globalTransformWithObject:atTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)blackColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "black",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)whiteColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "white",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)grayColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "gray",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)redColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "red",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)greenColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "green",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)blueColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "blue",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)cyanColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "cyan",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)magentaColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "magenta",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)yellowColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "yellow",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)clearColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "clear",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EASession(im)initWithAccessory:forProtocol:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ExternalAccessory"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CALayer(im)setNeedsDisplayInRect:",
+    "LeftComment": "setNeedsDisplayIn(_:)",
+    "RightUsr": "",
+    "RightComment": "setNeedsDisplay(_:)",
+    "ModuleName": "QuartzCore"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)CAMediaTimingFunction(im)getControlPointAtIndex:values:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "QuartzCore"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2:1:0",
+    "LeftUsr": "c:objc(cs)MCSession(im)nearbyConnectionDataForPeer:withCompletionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "MultipeerConnectivity"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)MCSessionDelegate(im)session:didFinishReceivingResourceWithName:fromPeer:atURL:withError:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "MultipeerConnectivity"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedGray",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedGray",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGColorSpaceCreateLab",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:@F@CGColorSpaceCreateLab",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:@F@CGColorSpaceCreateLab",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@F@CGFontCreateWithDataProvider",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "5",
+    "LeftUsr": "c:@F@CGFontCreatePostScriptSubset",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGFontCreatePostScriptEncoding",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EAGLContext(im)initWithAPI:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "OpenGLES"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EAGLContext(im)initWithAPI:sharegroup:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "OpenGLES"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)EAGLContext(im)initWithAPI:sharegroup:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "OpenGLES"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)EAGLContext(cm)setCurrentContext:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "OpenGLES"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EAGLContext(cm)currentContext",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "OpenGLES"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)EAGLContext(im)renderbufferStorage:fromDrawable:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "OpenGLES"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "ModernizeEnum",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@Ea@GKPhotoSizeSmall@GKPhotoSizeNormal",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "GKPhotoSize.normal",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "ModernizeEnum",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@Ea@GKPhotoSizeSmall@GKPhotoSizeSmall",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "GKPhotoSize.small",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)GKPlayer(im)loadPhotoForSize:withCompletionHandler:",
+    "LeftComment": "GKPhotoSize",
+    "RightUsr": "",
+    "RightComment": "GKPhotoSize",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)GKPlayer(im)loadPhotoForSize:withCompletionHandler:",
+    "LeftComment": "loadPhoto(forSize:withCompletionHandler:)",
+    "RightUsr": "",
+    "RightComment": "loadPhoto(for:withCompletionHandler:)",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "6:0:1:1",
+    "LeftUsr": "c:objc(cs)GKTurnBasedMatch(im)sendExchangeToParticipants:data:localizableMessageKey:arguments:timeout:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)INUIHostedViewControlling(im)configureWithInteraction:context:completion:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "IntentsUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)INUIHostedViewControlling(im)configureWithInteraction:context:completion:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "IntentsUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)INImage(cm)imageWithURL:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Intents"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)INImage(cm)imageWithCGImage:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "IntentsUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)INImage(cm)imageWithCGImage:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "IntentsUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)INImage(cm)imageWithUIImage:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "IntentsUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)INImage(cm)imageWithUIImage:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "IntentsUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)INImage(cm)imageSizeForIntentResponse:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "IntentsUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)INPersonHandle(im)initWithValue:type:label:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Intents"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)INPersonHandle(im)initWithValue:type:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Intents"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAsset(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAsset(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAsset(im)metadataForFormat:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataFormat",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)AVAsset(im)chapterMetadataGroupsWithTitleLocale:containingItemsWithCommonKeys:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataKey",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAsset(im)mediaSelectionGroupForMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)AVAssetExportSession(cm)determineCompatibilityOfExportPreset:withAsset:outputFileType:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:1:0:0",
+    "LeftUsr": "c:objc(cs)AVAssetExportSession(im)determineCompatibleFileTypesWithCompletionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAssetResourceLoadingRequest(im)persistentContentKeyFromKeyVendorResponse:options:error:",
+    "LeftComment": "persistentContentKey(fromKeyVendorResponse:options:error:)",
+    "RightUsr": "",
+    "RightComment": "persistentContentKey(fromKeyVendorResponse:options:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetTrack(im)hasMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetTrack(im)metadataForFormat:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataFormat",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetTrack(im)associatedTracksOfType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVAssetTrack.AssociationType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVAssetWriter(cm)assetWriterWithURL:fileType:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVAssetWriter(im)initWithURL:fileType:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVAssetWriter(im)canApplyOutputSettings:forMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetWriterInput(im)initWithMediaType:outputSettings:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetWriterInput(im)initWithMediaType:outputSettings:sourceFormatHint:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioChannelLayout(im)initWithLayoutTag:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioConverter(im)initFromFormat:toFormat:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithStreamDescription:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithStreamDescription:channelLayout:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initStandardFormatWithSampleRate:channels:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithCommonFormat:sampleRate:channels:interleaved:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithSettings:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioNode(im)nameForInputBus:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioNode(im)nameForOutputBus:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioPCMBuffer(im)initWithPCMFormat:frameCapacity:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FVSC30AVAudioSessionRecordPermissioncFT8rawValueSu_S_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioTime(im)extrapolateTimeFromAnchor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureAudioDataOutput(im)setSampleBufferDelegate:queue:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureAudioDataOutput(im)setSampleBufferDelegate:queue:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureAudioDataOutput(im)recommendedAudioSettingsForAssetWriterWithOutputFileType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureAudioDataOutput(im)recommendedAudioSettingsForAssetWriterWithOutputFileType:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureAudioDataOutput(im)recommendedAudioSettingsForAssetWriterWithOutputFileType:",
+    "LeftComment": "recommendedAudioSettingsForAssetWriter(withOutputFileType:)",
+    "RightUsr": "",
+    "RightComment": "recommendedAudioSettingsForAssetWriter(writingTo:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureAudioDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureAudioDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureAudioDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureAudioDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "captureOutput(_:didOutputSampleBuffer:from:)",
+    "RightUsr": "",
+    "RightComment": "captureOutput(_:didOutput:from:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureAutoExposureBracketedStillImageSettings(cm)autoExposureSettingsWithExposureTargetBias:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureAutoExposureBracketedStillImageSettings(cm)autoExposureSettingsWithExposureTargetBias:",
+    "LeftComment": "autoExposureSettings(withExposureTargetBias:)",
+    "RightUsr": "",
+    "RightComment": "autoExposureSettings(exposureTargetBias:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureConnection(im)initWithInputPorts:output:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureConnection(im)initWithInputPorts:output:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureInput.Port]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureConnection(im)initWithInputPorts:output:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureConnection(im)initWithInputPort:videoPreviewLayer:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureConnection(im)initWithInputPort:videoPreviewLayer:",
+    "LeftComment": "AVCaptureInputPort!",
+    "RightUsr": "",
+    "RightComment": "AVCaptureInput.Port",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureConnection(im)initWithInputPort:videoPreviewLayer:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)devices",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureDevice]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)devicesWithMediaType:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureDevice]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)devicesWithMediaType:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)devicesWithMediaType:",
+    "LeftComment": "devices(withMediaType:)",
+    "RightUsr": "",
+    "RightComment": "devices(for:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)defaultDeviceWithMediaType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)defaultDeviceWithMediaType:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)defaultDeviceWithMediaType:",
+    "LeftComment": "defaultDevice(withMediaType:)",
+    "RightUsr": "",
+    "RightComment": "default(for:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)deviceWithUniqueID:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)deviceWithUniqueID:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)hasMediaType:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)supportsAVCaptureSessionPreset:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVCaptureSession.Preset",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)supportsAVCaptureSessionPreset:",
+    "LeftComment": "supportsAVCaptureSessionPreset(_:)",
+    "RightUsr": "",
+    "RightComment": "supportsSessionPreset(_:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)defaultDeviceWithDeviceType:mediaType:position:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)defaultDeviceWithDeviceType:mediaType:position:",
+    "LeftComment": "AVCaptureDeviceType!",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.DeviceType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)defaultDeviceWithDeviceType:mediaType:position:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVMediaType?",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)defaultDeviceWithDeviceType:mediaType:position:",
+    "LeftComment": "AVCaptureDevicePosition",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.Position",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)defaultDeviceWithDeviceType:mediaType:position:",
+    "LeftComment": "defaultDevice(withDeviceType:mediaType:position:)",
+    "RightUsr": "",
+    "RightComment": "default(_:for:position:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)isFlashModeSupported:",
+    "LeftComment": "AVCaptureFlashMode",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.FlashMode",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)isTorchModeSupported:",
+    "LeftComment": "AVCaptureTorchMode",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.TorchMode",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)setTorchModeOnWithLevel:error:",
+    "LeftComment": "setTorchModeOnWithLevel(_:)",
+    "RightUsr": "",
+    "RightComment": "setTorchModeOn(level:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)isFocusModeSupported:",
+    "LeftComment": "AVCaptureFocusMode",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.FocusMode",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)setFocusModeLockedWithLensPosition:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)setFocusModeLockedWithLensPosition:completionHandler:",
+    "LeftComment": "setFocusModeLockedWithLensPosition(_:completionHandler:)",
+    "RightUsr": "",
+    "RightComment": "setFocusModeLocked(lensPosition:completionHandler:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)isExposureModeSupported:",
+    "LeftComment": "AVCaptureExposureMode",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.ExposureMode",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)setExposureModeCustomWithDuration:ISO:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)setExposureModeCustomWithDuration:ISO:completionHandler:",
+    "LeftComment": "setExposureModeCustomWithDuration(_:iso:completionHandler:)",
+    "RightUsr": "",
+    "RightComment": "setExposureModeCustom(duration:iso:completionHandler:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)setExposureTargetBias:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)isWhiteBalanceModeSupported:",
+    "LeftComment": "AVCaptureWhiteBalanceMode",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.WhiteBalanceMode",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)setWhiteBalanceModeLockedWithDeviceWhiteBalanceGains:completionHandler:",
+    "LeftComment": "AVCaptureWhiteBalanceGains",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.WhiteBalanceGains",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)setWhiteBalanceModeLockedWithDeviceWhiteBalanceGains:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)setWhiteBalanceModeLockedWithDeviceWhiteBalanceGains:completionHandler:",
+    "LeftComment": "setWhiteBalanceModeLockedWithDeviceWhiteBalanceGains(_:completionHandler:)",
+    "RightUsr": "",
+    "RightComment": "setWhiteBalanceModeLocked(with:completionHandler:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)chromaticityValuesForDeviceWhiteBalanceGains:",
+    "LeftComment": "AVCaptureWhiteBalanceChromaticityValues",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.WhiteBalanceChromaticityValues",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)chromaticityValuesForDeviceWhiteBalanceGains:",
+    "LeftComment": "AVCaptureWhiteBalanceGains",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.WhiteBalanceGains",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)chromaticityValuesForDeviceWhiteBalanceGains:",
+    "LeftComment": "chromaticityValues(forDeviceWhiteBalanceGains:)",
+    "RightUsr": "",
+    "RightComment": "chromaticityValues(for:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)deviceWhiteBalanceGainsForChromaticityValues:",
+    "LeftComment": "AVCaptureWhiteBalanceGains",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.WhiteBalanceGains",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)deviceWhiteBalanceGainsForChromaticityValues:",
+    "LeftComment": "AVCaptureWhiteBalanceChromaticityValues",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.WhiteBalanceChromaticityValues",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)temperatureAndTintValuesForDeviceWhiteBalanceGains:",
+    "LeftComment": "AVCaptureWhiteBalanceTemperatureAndTintValues",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.WhiteBalanceTemperatureAndTintValues",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)temperatureAndTintValuesForDeviceWhiteBalanceGains:",
+    "LeftComment": "AVCaptureWhiteBalanceGains",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.WhiteBalanceGains",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)temperatureAndTintValuesForDeviceWhiteBalanceGains:",
+    "LeftComment": "temperatureAndTintValues(forDeviceWhiteBalanceGains:)",
+    "RightUsr": "",
+    "RightComment": "temperatureAndTintValues(for:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)deviceWhiteBalanceGainsForTemperatureAndTintValues:",
+    "LeftComment": "AVCaptureWhiteBalanceGains",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.WhiteBalanceGains",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)deviceWhiteBalanceGainsForTemperatureAndTintValues:",
+    "LeftComment": "AVCaptureWhiteBalanceTemperatureAndTintValues",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.WhiteBalanceTemperatureAndTintValues",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)authorizationStatusForMediaType:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)authorizationStatusForMediaType:",
+    "LeftComment": "authorizationStatus(forMediaType:)",
+    "RightUsr": "",
+    "RightComment": "authorizationStatus(for:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)requestAccessForMediaType:completionHandler:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)requestAccessForMediaType:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)requestAccessForMediaType:completionHandler:",
+    "LeftComment": "requestAccess(forMediaType:completionHandler:)",
+    "RightUsr": "",
+    "RightComment": "requestAccess(for:completionHandler:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDeviceInput(im)initWithDevice:error:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureFileOutput(im)startRecordingToOutputFileURL:recordingDelegate:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureFileOutput(im)startRecordingToOutputFileURL:recordingDelegate:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureFileOutput(im)startRecordingToOutputFileURL:recordingDelegate:",
+    "LeftComment": "startRecording(toOutputFileURL:recordingDelegate:)",
+    "RightUsr": "",
+    "RightComment": "startRecording(to:recordingDelegate:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didStartRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didStartRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didStartRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureConnection]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didStartRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "capture(_:didStartRecordingToOutputFileAt:fromConnections:)",
+    "RightUsr": "",
+    "RightComment": "fileOutput(_:didStartRecordingTo:from:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureConnection]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "capture(_:didFinishRecordingToOutputFileAt:fromConnections:error:)",
+    "RightUsr": "",
+    "RightComment": "fileOutput(_:didFinishRecordingTo:from:error:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureManualExposureBracketedStillImageSettings(cm)manualExposureSettingsWithExposureDuration:ISO:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureManualExposureBracketedStillImageSettings(cm)manualExposureSettingsWithExposureDuration:ISO:",
+    "LeftComment": "manualExposureSettings(withExposureDuration:iso:)",
+    "RightUsr": "",
+    "RightComment": "manualExposureSettings(exposureDuration:iso:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureMetadataInput(im)initWithFormatDescription:clock:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureMetadataInput(im)initWithFormatDescription:clock:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureMetadataInput(im)initWithFormatDescription:clock:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureMetadataInput(im)appendTimedMetadataGroup:error:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureMetadataOutput(im)setMetadataObjectsDelegate:queue:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureMetadataOutput(im)setMetadataObjectsDelegate:queue:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureMetadataOutputObjectsDelegate(im)captureOutput:didOutputMetadataObjects:fromConnection:",
+    "LeftComment": "AVCaptureOutput!",
+    "RightUsr": "",
+    "RightComment": "AVCaptureMetadataOutput",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureMetadataOutputObjectsDelegate(im)captureOutput:didOutputMetadataObjects:fromConnection:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVMetadataObject]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureMetadataOutputObjectsDelegate(im)captureOutput:didOutputMetadataObjects:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureMetadataOutputObjectsDelegate(im)captureOutput:didOutputMetadataObjects:fromConnection:",
+    "LeftComment": "captureOutput(_:didOutputMetadataObjects:from:)",
+    "RightUsr": "",
+    "RightComment": "metadataOutput(_:didOutput:from:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureMovieFileOutput(im)outputSettingsForConnection:",
+    "LeftComment": "[AnyHashable : Any]!",
+    "RightUsr": "",
+    "RightComment": "[String : Any]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureMovieFileOutput(im)outputSettingsForConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureMovieFileOutput(im)setOutputSettings:forConnection:",
+    "LeftComment": "[AnyHashable : Any]!",
+    "RightUsr": "",
+    "RightComment": "[String : Any]?",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureMovieFileOutput(im)setOutputSettings:forConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureMovieFileOutput(im)recordsVideoOrientationAndMirroringChangesAsMetadataTrackForConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureMovieFileOutput(im)setRecordsVideoOrientationAndMirroringChanges:asMetadataTrackForConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureMovieFileOutput(im)setRecordsVideoOrientationAndMirroringChanges:asMetadataTrackForConnection:",
+    "LeftComment": "setRecordsVideoOrientationAndMirroringChanges(_:asMetadataTrackFor:)",
+    "RightUsr": "",
+    "RightComment": "setRecordsVideoOrientationAndMirroringChangesAsMetadataTrack(_:for:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureOutput(im)connectionWithMediaType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureOutput(im)connectionWithMediaType:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureOutput(im)connectionWithMediaType:",
+    "LeftComment": "connection(withMediaType:)",
+    "RightUsr": "",
+    "RightComment": "connection(with:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureOutput(im)transformedMetadataObjectForMetadataObject:connection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureOutput(im)transformedMetadataObjectForMetadataObject:connection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureOutput(im)transformedMetadataObjectForMetadataObject:connection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureOutput(im)metadataOutputRectOfInterestForRect:",
+    "LeftComment": "metadataOutputRectOfInterest(for:)",
+    "RightUsr": "",
+    "RightComment": "metadataOutputRectConverted(fromOutputRect:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureOutput(im)rectForMetadataOutputRectOfInterest:",
+    "LeftComment": "rectForMetadataOutputRect(ofInterest:)",
+    "RightUsr": "",
+    "RightComment": "outputRectConverted(fromMetadataOutputRect:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCapturePhotoCaptureDelegate(im)captureOutput:willBeginCaptureForResolvedSettings:",
+    "LeftComment": "capture(_:willBeginCaptureForResolvedSettings:)",
+    "RightUsr": "",
+    "RightComment": "photoOutput(_:willBeginCaptureFor:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCapturePhotoCaptureDelegate(im)captureOutput:willCapturePhotoForResolvedSettings:",
+    "LeftComment": "capture(_:willCapturePhotoForResolvedSettings:)",
+    "RightUsr": "",
+    "RightComment": "photoOutput(_:willCapturePhotoFor:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCapturePhotoCaptureDelegate(im)captureOutput:didCapturePhotoForResolvedSettings:",
+    "LeftComment": "capture(_:didCapturePhotoForResolvedSettings:)",
+    "RightUsr": "",
+    "RightComment": "photoOutput(_:didCapturePhotoFor:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCapturePhotoCaptureDelegate(im)captureOutput:didFinishProcessingPhotoSampleBuffer:previewPhotoSampleBuffer:resolvedSettings:bracketSettings:error:",
+    "LeftComment": "capture(_:didFinishProcessingPhotoSampleBuffer:previewPhotoSampleBuffer:resolvedSettings:bracketSettings:error:)",
+    "RightUsr": "",
+    "RightComment": "photoOutput(_:didFinishProcessingPhoto:previewPhoto:resolvedSettings:bracketSettings:error:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCapturePhotoCaptureDelegate(im)captureOutput:didFinishProcessingRawPhotoSampleBuffer:previewPhotoSampleBuffer:resolvedSettings:bracketSettings:error:",
+    "LeftComment": "capture(_:didFinishProcessingRawPhotoSampleBuffer:previewPhotoSampleBuffer:resolvedSettings:bracketSettings:error:)",
+    "RightUsr": "",
+    "RightComment": "photoOutput(_:didFinishProcessingRawPhoto:previewPhoto:resolvedSettings:bracketSettings:error:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCapturePhotoCaptureDelegate(im)captureOutput:didFinishRecordingLivePhotoMovieForEventualFileAtURL:resolvedSettings:",
+    "LeftComment": "capture(_:didFinishRecordingLivePhotoMovieForEventualFileAt:resolvedSettings:)",
+    "RightUsr": "",
+    "RightComment": "photoOutput(_:didFinishRecordingLivePhotoMovieForEventualFileAt:resolvedSettings:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCapturePhotoCaptureDelegate(im)captureOutput:didFinishProcessingLivePhotoToMovieFileAtURL:duration:photoDisplayTime:resolvedSettings:error:",
+    "LeftComment": "capture(_:didFinishProcessingLivePhotoToMovieFileAt:duration:photoDisplay:resolvedSettings:error:)",
+    "RightUsr": "",
+    "RightComment": "photoOutput(_:didFinishProcessingLivePhotoToMovieFileAt:duration:photoDisplayTime:resolvedSettings:error:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCapturePhotoCaptureDelegate(im)captureOutput:didFinishCaptureForResolvedSettings:error:",
+    "LeftComment": "capture(_:didFinishCaptureForResolvedSettings:error:)",
+    "RightUsr": "",
+    "RightComment": "photoOutput(_:didFinishCaptureFor:error:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)canSetSessionPreset:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVCaptureSession.Preset",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)canAddInput:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)addInput:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)removeInput:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)canAddOutput:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)addOutput:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)removeOutput:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)addInputWithNoConnections:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)addOutputWithNoConnections:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)canAddConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)addConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)removeConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(im)captureStillImageAsynchronouslyFromConnection:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(im)captureStillImageAsynchronouslyFromConnection:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(cm)jpegStillImageNSDataRepresentation:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(cm)jpegStillImageNSDataRepresentation:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(im)prepareToCaptureStillImageBracketFromConnection:withSettingsArray:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(im)prepareToCaptureStillImageBracketFromConnection:withSettingsArray:completionHandler:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureBracketedStillImageSettings]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(im)prepareToCaptureStillImageBracketFromConnection:withSettingsArray:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(im)captureStillImageBracketAsynchronouslyFromConnection:withSettingsArray:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(im)captureStillImageBracketAsynchronouslyFromConnection:withSettingsArray:completionHandler:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureBracketedStillImageSettings]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(im)captureStillImageBracketAsynchronouslyFromConnection:withSettingsArray:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoDataOutput(im)setSampleBufferDelegate:queue:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoDataOutput(im)setSampleBufferDelegate:queue:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoDataOutput(im)recommendedVideoSettingsForAssetWriterWithOutputFileType:",
+    "LeftComment": "[AnyHashable : Any]!",
+    "RightUsr": "",
+    "RightComment": "[String : Any]?",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoDataOutput(im)recommendedVideoSettingsForAssetWriterWithOutputFileType:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoDataOutput(im)recommendedVideoSettingsForAssetWriterWithOutputFileType:",
+    "LeftComment": "recommendedVideoSettingsForAssetWriter(withOutputFileType:)",
+    "RightUsr": "",
+    "RightComment": "recommendedVideoSettingsForAssetWriter(writingTo:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoDataOutput(py)availableVideoCVPixelFormatTypes",
+    "LeftComment": "availableVideoCVPixelFormatTypes",
+    "RightUsr": "",
+    "RightComment": "availableVideoPixelFormatTypes",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "captureOutput(_:didOutputSampleBuffer:from:)",
+    "RightUsr": "",
+    "RightComment": "captureOutput(_:didOutput:from:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didDropSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didDropSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didDropSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)initWithSession:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)initWithSession:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)initWithSessionWithNoConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)initWithSessionWithNoConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)setSessionWithNoConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)captureDevicePointOfInterestForPoint:",
+    "LeftComment": "captureDevicePointOfInterest(for:)",
+    "RightUsr": "",
+    "RightComment": "captureDevicePointConverted(fromLayerPoint:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)pointForCaptureDevicePointOfInterest:",
+    "LeftComment": "pointForCaptureDevicePoint(ofInterest:)",
+    "RightUsr": "",
+    "RightComment": "layerPointConverted(fromCaptureDevicePoint:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)metadataOutputRectOfInterestForRect:",
+    "LeftComment": "metadataOutputRectOfInterest(for:)",
+    "RightUsr": "",
+    "RightComment": "metadataOutputRectConverted(fromLayerRect:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)rectForMetadataOutputRectOfInterest:",
+    "LeftComment": "rectForMetadataOutputRect(ofInterest:)",
+    "RightUsr": "",
+    "RightComment": "layerRectConverted(fromMetadataOutputRect:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)transformedMetadataObjectForMetadataObject:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)transformedMetadataObjectForMetadataObject:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVComposition(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVComposition(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVContentKeyRequest(im)makeStreamingContentKeyRequestDataForApp:contentIdentifier:options:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVContentKeySession(cm)contentKeySessionWithKeySystem:storageDirectoryAtURL:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVContentKeySession(cm)pendingExpiredSessionReportsWithAppIdentifier:storageDirectoryAtURL:",
+    "LeftComment": "[AnyHashable : Any]",
+    "RightUsr": "",
+    "RightComment": "Data",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)AVContentKeySession(cm)removePendingExpiredSessionReports:withAppIdentifier:storageDirectoryAtURL:",
+    "LeftComment": "[AnyHashable : Any]",
+    "RightUsr": "",
+    "RightComment": "Data",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMediaSelectionOption(im)hasMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)metadataItemsFromArray:filteredByIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataIdentifier",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)identifierForKey:keySpace:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataIdentifier",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)identifierForKey:keySpace:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataKeySpace",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)keySpaceForIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataKeySpace",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)keySpaceForIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataIdentifier",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)keyForIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataIdentifier",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)metadataItemsFromArray:withKey:keySpace:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataKeySpace",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVMutableComposition(im)addMutableTrackWithMediaType:preferredTrackID:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMutableComposition(im)addMutableTrackWithMediaType:preferredTrackID:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMutableComposition(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMutableComposition(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVMutableVideoComposition(cm)videoCompositionWithPropertiesOfAsset:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVOutputSettingsAssistant(cm)availableOutputSettingsPresets",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVOutputSettingsPreset",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVOutputSettingsAssistant(cm)outputSettingsAssistantWithPreset:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVOutputSettingsPreset",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVPersistableContentKeyRequest(im)persistableContentKeyFromKeyVendorResponse:options:error:",
+    "LeftComment": "persistableContentKey(fromKeyVendorResponse:options:error:)",
+    "RightUsr": "",
+    "RightComment": "persistableContentKey(fromKeyVendorResponse:options:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVPlayer(im)setMediaSelectionCriteria:forMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVPlayer(im)mediaSelectionCriteriaForMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVPlayerItem(im)seekToTime:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(cs)AVPlayerItem(im)seekToTime:toleranceBefore:toleranceAfter:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVPlayerItem(im)seekToDate:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVPlayerItemMetadataOutputPushDelegate(im)metadataOutput:didOutputTimedMetadataGroups:fromPlayerItemTrack:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)AVPlayerMediaSelectionCriteria(im)initWithPreferredLanguages:preferredMediaCharacteristics:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVURLAsset(cm)audiovisualTypes",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVVideoComposition(cm)videoCompositionWithPropertiesOfAsset:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1:0",
+    "LeftUsr": "c:objc(cs)SCNAnimationEvent(cm)animationEventWithKeyTime:block:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(py)geometrySources",
+    "LeftComment": "geometrySources",
+    "RightUsr": "",
+    "RightComment": "sources",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(im)geometrySourcesForSemantic:",
+    "LeftComment": "getGeometrySources(for:)",
+    "RightUsr": "",
+    "RightComment": "sources(for:)",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(py)geometryElements",
+    "LeftComment": "geometryElements",
+    "RightUsr": "",
+    "RightComment": "elements",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(py)geometryElementCount",
+    "LeftComment": "geometryElementCount",
+    "RightUsr": "",
+    "RightComment": "elementCount",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(im)geometryElementAtIndex:",
+    "LeftComment": "geometryElement(at:)",
+    "RightUsr": "",
+    "RightComment": "element(at:)",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FE8SceneKitVSC10SCNMatrix4cFV4simd8float4x4S0_",
+    "LeftComment": "float4x4",
+    "RightUsr": "",
+    "RightComment": "float4x4",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FE8SceneKitVSC10SCNMatrix4cFV4simd9double4x4S0_",
+    "LeftComment": "double4x4",
+    "RightUsr": "",
+    "RightComment": "double4x4",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSFileManager(im)createDirectoryAtURL:withIntermediateDirectories:attributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileAttributeKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSFileManager(im)createDirectoryAtPath:withIntermediateDirectories:attributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileAttributeKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSFileManager(im)createFileAtPath:contents:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileAttributeKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FE10FoundationCSo11FileManager13replaceItemAtFzTVS_3URL10withItemAtS1_14backupItemNameGSqSS_7optionsVS0_22ItemReplacementOptions_GSqCSo5NSURL_",
+    "LeftComment": "NSURL",
+    "RightUsr": "",
+    "RightComment": "URL",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSArray(cm)arrayWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attributesAtIndex:effectiveRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)dataFromRange:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentAttributeKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)fileWrapperFromRange:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentAttributeKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attribute:atIndex:effectiveRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attributesAtIndex:longestEffectiveRange:inRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attribute:atIndex:longestEffectiveRange:inRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithString:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:1:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)enumerateAttributesInRange:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)enumerateAttribute:inRange:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FE10FoundationCSo7NSCoder20decodeTopLevelObjectFzT6forKeySS_GSqPs9AnyObject__",
+    "LeftComment": "AnyObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSet(cm)setWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDecimalNumberHandler(cm)defaultDecimalNumberHandler",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSIndexPath(im)initWithIndexes:length:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:ZFE10FoundationCSo17NSKeyedUnarchiver31unarchiveTopLevelObjectWithDataFzCSo6NSDataGSqPs9AnyObject__",
+    "LeftComment": "AnyObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)initWithTagSchemes:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(cm)availableTagSchemesForLanguage:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:scheme:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:1:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:scheme:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag?",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)tagAtIndex:scheme:tokenRange:sentenceRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)tagAtIndex:scheme:tokenRange:sentenceRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSArray(cm)arrayWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)setAttributes:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithString:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)readFromURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)readFromData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)addAttribute:value:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)addAttributes:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)removeAttribute:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSOrderedSet(cm)orderedSetWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableOrderedSet(im)addObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSMutableOrderedSet(im)replaceObjectsInRange:withObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSet(cm)setWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSOrderedSet(cm)orderedSetWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSet(cm)setWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)linguisticTagsInRange:scheme:options:orthography:tokenRanges:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSString(im)linguisticTagsInRange:scheme:options:orthography:tokenRanges:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSString(im)enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5:1:0",
+    "LeftUsr": "c:objc(cs)NSString(im)enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag?",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawWithRect:options:attributes:context:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)boundingRectWithSize:options:attributes:context:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)sizeWithAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSString(im)sizeWithAttributes:",
+    "LeftComment": "size(attributes:)",
+    "RightUsr": "",
+    "RightComment": "size(withAttributes:)",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawAtPoint:withAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawInRect:withAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(cm)addressCheckingResultWithRange:components:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextCheckingKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(cm)transitInformationCheckingResultWithRange:components:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextCheckingKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(im)rangeAtIndex:",
+    "LeftComment": "rangeAt(_:)",
+    "RightUsr": "",
+    "RightComment": "range(at:)",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(im)resultByAdjustingRangesWithOffset:",
+    "LeftComment": "resultByAdjustingRangesWithOffset(_:)",
+    "RightUsr": "",
+    "RightComment": "adjustingRanges(offset:)",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSUUID(im)initWithUUIDBytes:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSUUID(im)getUUIDBytes:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSUbiquitousKeyValueStore(cm)defaultStore",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSProgress(im)initWithParent:userInfo:",
+    "LeftComment": "AnyHashable",
+    "RightUsr": "",
+    "RightComment": "ProgressUserInfoKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FE10FoundationVSC8_NSRangecFGVs5RangeSi_S0_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FE10FoundationVSC8_NSRangecFGVs5RangeSi_S0_",
+    "LeftComment": "Range<Int>",
+    "RightUsr": "",
+    "RightComment": "String",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSetcFT12charactersInGVs5RangeSc__S0_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSetcFT12charactersInGVs11ClosedRangeSc__S0_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFT12charactersInGVs5RangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFT12charactersInGVs11ClosedRangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFT12charactersInGVs5RangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFT12charactersInGVs11ClosedRangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFScT8insertedSb17memberAfterInsertSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFScT8insertedSb17memberAfterInsertSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6updateFT4withSc_GSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6updateFT4withSc_GSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFScGSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFScGSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet8containsFScSb",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FOV10Foundation8URLError4CodecFT8rawValueSi_GSqS1__",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameplayKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameplayKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AudioToolbox"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCTNSNotificationExpectation(im)initWithName:object:notificationCenter:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNotification.Name",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCTNSNotificationExpectation(im)initWithName:object:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNotification.Name",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCTNSNotificationExpectation(im)initWithName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNotification.Name",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:",
+    "LeftComment": "XCTWaiterResult",
+    "RightUsr": "",
+    "RightComment": "XCTWaiter.Result",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:enforceOrder:",
+    "LeftComment": "XCTWaiterResult",
+    "RightUsr": "",
+    "RightComment": "XCTWaiter.Result",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTWaiter(cm)waitForExpectations:timeout:",
+    "LeftComment": "XCTWaiterResult",
+    "RightUsr": "",
+    "RightComment": "XCTWaiter.Result",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTWaiter(cm)waitForExpectations:timeout:enforceOrder:",
+    "LeftComment": "XCTWaiterResult",
+    "RightUsr": "",
+    "RightComment": "XCTWaiter.Result",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)XCTestCase(im)recordFailureWithDescription:inFile:atLine:expected:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestCase(cm)testInvocations",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "testInvocations",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestCase(cm)defaultPerformanceMetrics",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultPerformanceMetrics",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)XCTestCase(im)measureMetrics:automaticallyStartMeasuring:forBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "XCTPerformanceMetric",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestCase(cm)defaultTestSuite",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultTestSuite",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCTestCase(im)expectationForNotification:object:handler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNotification.Name",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(cs)XCTestCaseRun(im)recordFailureInTest:withDescription:inFile:atLine:expected:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)XCTestObservation(im)testSuite:didFailWithDescription:inFile:atLine:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)XCTestObservation(im)testCase:didFailWithDescription:inFile:atLine:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestObservationCenter(cm)sharedTestObservationCenter",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(cs)XCTestObserver(im)testCaseDidFail:withDescription:inFile:atLine:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)XCTestRun(im)recordFailureWithDescription:inFile:atLine:expected:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestSuite(cm)defaultTestSuite",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCUIDevice(cm)sharedDevice",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIDevice(im)pressButton:",
+    "LeftComment": "XCUIDeviceButton",
+    "RightUsr": "",
+    "RightComment": "XCUIDevice.Button",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)descendantsMatchingType:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)childrenMatchingType:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)tapWithNumberOfTaps:numberOfTouches:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)tapWithNumberOfTaps:numberOfTouches:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)_waitForExistenceWithTimeout:",
+    "LeftComment": "_waitForExistence(withTimeout:)",
+    "RightUsr": "",
+    "RightComment": "waitForExistence(timeout:)",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)elementAtIndex:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)elementBoundByIndex:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)elementMatchingType:identifier:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)descendantsMatchingType:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)childrenMatchingType:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)matchingType:identifier:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)containingType:identifier:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVPlayerViewController(im)playPrerollAdWithCompletionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PKPaymentAuthorizationViewController(im)initWithPaymentRequest:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "PassKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreData"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreData"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)CSSearchableIndex(im)initWithName:protectionClass:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileProtectionType",
+    "ModuleName": "CoreSpotlight"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)ADBannerView(im)initWithAdType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)ADBannerViewDelegate(im)bannerViewWillLoadAd:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)ADBannerViewDelegate(im)bannerViewDidLoadAd:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)ADBannerViewDelegate(im)bannerView:didFailToReceiveAdWithError:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)ADBannerViewDelegate(im)bannerView:didFailToReceiveAdWithError:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)ADBannerViewDelegate(im)bannerViewActionShouldBegin:willLeaveApplication:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)ADBannerViewDelegate(im)bannerViewActionDidFinish:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)ADClient(cm)sharedClient",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)ADClient(im)determineAppInstallationAttributionWithCompletionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)ADClient(im)lookupAdConversionDetails:",
+    "LeftComment": "((Date?, Date?) -> Void)!",
+    "RightUsr": "",
+    "RightComment": "(Date, Date?) -> Void",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)ADClient(im)requestAttributionDetailsWithBlock:",
+    "LeftComment": "(([AnyHashable : Any]?, Error?) -> Void)!",
+    "RightUsr": "",
+    "RightComment": "([String : NSObject]?, Error?) -> Void",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)ADClient(im)addClientToSegments:replaceExisting:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[String]",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)ADInterstitialAd(im)presentInView:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)ADInterstitialAdDelegate(im)interstitialAdDidUnload:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)ADInterstitialAdDelegate(im)interstitialAd:didFailWithError:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)ADInterstitialAdDelegate(im)interstitialAd:didFailWithError:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)ADInterstitialAdDelegate(im)interstitialAdWillLoad:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)ADInterstitialAdDelegate(im)interstitialAdDidLoad:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)ADInterstitialAdDelegate(im)interstitialAdActionShouldBegin:willLeaveApplication:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)ADInterstitialAdDelegate(im)interstitialAdActionDidFinish:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "iAd"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@MTLAttributeFormat@MTLAttributeFormatUInt1010102Normalized",
+    "LeftComment": "uInt1010102Normalized",
+    "RightUsr": "",
+    "RightComment": "uint1010102Normalized",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLBuffer(im)newTextureWithDescriptor:offset:bytesPerRow:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandBuffer(im)blitCommandEncoder",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandBuffer(im)renderCommandEncoderWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandBuffer(im)computeCommandEncoder",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandBuffer(im)parallelRenderCommandEncoderWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandQueue(im)commandBuffer",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandQueue(im)commandBufferWithUnretainedReferences",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBytes:length:atIndex:",
+    "LeftComment": "setBytes(_:length:at:)",
+    "RightUsr": "",
+    "RightComment": "setBytes(_:length:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBuffer:offset:atIndex:",
+    "LeftComment": "setBuffer(_:offset:at:)",
+    "RightUsr": "",
+    "RightComment": "setBuffer(_:offset:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBufferOffset:atIndex:",
+    "LeftComment": "setBufferOffset(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setBufferOffset(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setTexture:atIndex:",
+    "LeftComment": "setTexture(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setTexture(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setSamplerState:atIndex:",
+    "LeftComment": "setSamplerState(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setSamplerState(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setSamplerState:lodMinClamp:lodMaxClamp:atIndex:",
+    "LeftComment": "setSamplerState(_:lodMinClamp:lodMaxClamp:at:)",
+    "RightUsr": "",
+    "RightComment": "setSamplerState(_:lodMinClamp:lodMaxClamp:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setThreadgroupMemoryLength:atIndex:",
+    "LeftComment": "setThreadgroupMemoryLength(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setThreadgroupMemoryLength(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newCommandQueue",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newCommandQueueWithMaxCommandBufferCount:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newHeapWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newBufferWithLength:options:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newBufferWithBytes:length:options:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newBufferWithBytesNoCopy:length:options:deallocator:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newDepthStencilStateWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newTextureWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newSamplerStateWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newDefaultLibrary",
+    "LeftComment": "newDefaultLibrary()",
+    "RightUsr": "",
+    "RightComment": "makeDefaultLibrary()",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newFence",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MTLFunctionConstantValues(im)setConstantValue:type:atIndex:",
+    "LeftComment": "setConstantValue(_:type:at:)",
+    "RightUsr": "",
+    "RightComment": "setConstantValue(_:type:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLParallelRenderCommandEncoder(im)renderCommandEncoder",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLParallelRenderCommandEncoder(im)setColorStoreAction:atIndex:",
+    "LeftComment": "setColorStoreAction(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setColorStoreAction(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBytes:length:atIndex:",
+    "LeftComment": "setVertexBytes(_:length:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexBytes(_:length:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBuffer:offset:atIndex:",
+    "LeftComment": "setVertexBuffer(_:offset:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexBuffer(_:offset:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBufferOffset:atIndex:",
+    "LeftComment": "setVertexBufferOffset(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexBufferOffset(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexTexture:atIndex:",
+    "LeftComment": "setVertexTexture(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexTexture(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexSamplerState:atIndex:",
+    "LeftComment": "setVertexSamplerState(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexSamplerState(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexSamplerState:lodMinClamp:lodMaxClamp:atIndex:",
+    "LeftComment": "setVertexSamplerState(_:lodMinClamp:lodMaxClamp:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexSamplerState(_:lodMinClamp:lodMaxClamp:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBytes:length:atIndex:",
+    "LeftComment": "setFragmentBytes(_:length:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentBytes(_:length:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBuffer:offset:atIndex:",
+    "LeftComment": "setFragmentBuffer(_:offset:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentBuffer(_:offset:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBufferOffset:atIndex:",
+    "LeftComment": "setFragmentBufferOffset(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentBufferOffset(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentTexture:atIndex:",
+    "LeftComment": "setFragmentTexture(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentTexture(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentSamplerState:atIndex:",
+    "LeftComment": "setFragmentSamplerState(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentSamplerState(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentSamplerState:lodMinClamp:lodMaxClamp:atIndex:",
+    "LeftComment": "setFragmentSamplerState(_:lodMinClamp:lodMaxClamp:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentSamplerState(_:lodMinClamp:lodMaxClamp:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setColorStoreAction:atIndex:",
+    "LeftComment": "setColorStoreAction(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setColorStoreAction(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLTexture(im)newTextureViewWithPixelFormat:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLTexture(im)newTextureViewWithPixelFormat:textureType:levels:slices:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@SKCloudServiceSetupOptionsAffiliateTokenKey",
+    "LeftComment": "affiliateTokenKey",
+    "RightUsr": "",
+    "RightComment": "affiliateToken",
+    "ModuleName": "StoreKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@SKCloudServiceSetupOptionsCampaignTokenKey",
+    "LeftComment": "campaignTokenKey",
+    "RightUsr": "",
+    "RightComment": "campaignToken",
+    "ModuleName": "StoreKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SKPaymentQueue(im)resumeDownloads:",
+    "LeftComment": "resume(_:)",
+    "RightUsr": "",
+    "RightComment": "resumeDownloads(_:)",
+    "ModuleName": "StoreKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)WCSession(cm)defaultSession",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "WatchConnectivity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSSecureCoding(cpy)supportsSecureCoding",
+    "OldPrintedName": "supportsSecureCoding",
+    "OldTypeName": "CNSocialProfile",
+    "NewPrintedName": "supportsSecureCoding",
+    "NewTypeName": "MPMediaEntity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@SFErrorCode",
+    "OldPrintedName": "SFErrorCode",
+    "OldTypeName": "",
+    "NewPrintedName": "Code",
+    "NewTypeName": "SFError"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@SSReadingListErrorCode",
+    "OldPrintedName": "SSReadingListErrorCode",
+    "OldTypeName": "",
+    "NewPrintedName": "Code",
+    "NewTypeName": "SSReadingListError"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@HMSignificantEventSunrise",
+    "OldPrintedName": "HMSignificantEventSunrise",
+    "OldTypeName": "",
+    "NewPrintedName": "sunrise",
+    "NewTypeName": "HMSignificantEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@HMSignificantEventSunset",
+    "OldPrintedName": "HMSignificantEventSunset",
+    "OldTypeName": "",
+    "NewPrintedName": "sunset",
+    "NewTypeName": "HMSignificantEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextEffectLetterpressStyle",
+    "OldPrintedName": "NSTextEffectLetterpressStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "letterpressStyle",
+    "NewTypeName": "NSAttributedString.TextEffectStyle"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPlainTextDocumentType",
+    "OldPrintedName": "NSPlainTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "plain",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRTFTextDocumentType",
+    "OldPrintedName": "NSRTFTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "rtf",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRTFDTextDocumentType",
+    "OldPrintedName": "NSRTFDTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "rtfd",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSHTMLTextDocumentType",
+    "OldPrintedName": "NSHTMLTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "html",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextLayoutSectionOrientation",
+    "OldPrintedName": "NSTextLayoutSectionOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "orientation",
+    "NewTypeName": "NSAttributedString.TextLayoutSectionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextLayoutSectionRange",
+    "OldPrintedName": "NSTextLayoutSectionRange",
+    "OldTypeName": "",
+    "NewPrintedName": "range",
+    "NewTypeName": "NSAttributedString.TextLayoutSectionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDocumentTypeDocumentAttribute",
+    "OldPrintedName": "NSDocumentTypeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "documentType",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCharacterEncodingDocumentAttribute",
+    "OldPrintedName": "NSCharacterEncodingDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "characterEncoding",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDefaultAttributesDocumentAttribute",
+    "OldPrintedName": "NSDefaultAttributesDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultAttributes",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPaperSizeDocumentAttribute",
+    "OldPrintedName": "NSPaperSizeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "paperSize",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPaperMarginDocumentAttribute",
+    "OldPrintedName": "NSPaperMarginDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "paperMargin",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewSizeDocumentAttribute",
+    "OldPrintedName": "NSViewSizeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "viewSize",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewZoomDocumentAttribute",
+    "OldPrintedName": "NSViewZoomDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "viewZoom",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewModeDocumentAttribute",
+    "OldPrintedName": "NSViewModeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "viewMode",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSReadOnlyDocumentAttribute",
+    "OldPrintedName": "NSReadOnlyDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "readOnly",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBackgroundColorDocumentAttribute",
+    "OldPrintedName": "NSBackgroundColorDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "backgroundColor",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSHyphenationFactorDocumentAttribute",
+    "OldPrintedName": "NSHyphenationFactorDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "hyphenationFactor",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDefaultTabIntervalDocumentAttribute",
+    "OldPrintedName": "NSDefaultTabIntervalDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultTabInterval",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextLayoutSectionsAttribute",
+    "OldPrintedName": "NSTextLayoutSectionsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "textLayoutSections",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontAttributeName",
+    "OldPrintedName": "NSFontAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "font",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSParagraphStyleAttributeName",
+    "OldPrintedName": "NSParagraphStyleAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "paragraphStyle",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSForegroundColorAttributeName",
+    "OldPrintedName": "NSForegroundColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "foregroundColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBackgroundColorAttributeName",
+    "OldPrintedName": "NSBackgroundColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "backgroundColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLigatureAttributeName",
+    "OldPrintedName": "NSLigatureAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "ligature",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSKernAttributeName",
+    "OldPrintedName": "NSKernAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "kern",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrikethroughStyleAttributeName",
+    "OldPrintedName": "NSStrikethroughStyleAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strikethroughStyle",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSUnderlineStyleAttributeName",
+    "OldPrintedName": "NSUnderlineStyleAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "underlineStyle",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrokeColorAttributeName",
+    "OldPrintedName": "NSStrokeColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strokeColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrokeWidthAttributeName",
+    "OldPrintedName": "NSStrokeWidthAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strokeWidth",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSShadowAttributeName",
+    "OldPrintedName": "NSShadowAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "shadow",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextEffectAttributeName",
+    "OldPrintedName": "NSTextEffectAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "textEffect",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAttachmentAttributeName",
+    "OldPrintedName": "NSAttachmentAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "attachment",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinkAttributeName",
+    "OldPrintedName": "NSLinkAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "link",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBaselineOffsetAttributeName",
+    "OldPrintedName": "NSBaselineOffsetAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "baselineOffset",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSUnderlineColorAttributeName",
+    "OldPrintedName": "NSUnderlineColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "underlineColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrikethroughColorAttributeName",
+    "OldPrintedName": "NSStrikethroughColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strikethroughColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSObliquenessAttributeName",
+    "OldPrintedName": "NSObliquenessAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "obliqueness",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSExpansionAttributeName",
+    "OldPrintedName": "NSExpansionAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "expansion",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWritingDirectionAttributeName",
+    "OldPrintedName": "NSWritingDirectionAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "writingDirection",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVerticalGlyphFormAttributeName",
+    "OldPrintedName": "NSVerticalGlyphFormAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "verticalGlyphForm",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagWord",
+    "OldPrintedName": "NSLinguisticTagWord",
+    "OldTypeName": "",
+    "NewPrintedName": "word",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPunctuation",
+    "OldPrintedName": "NSLinguisticTagPunctuation",
+    "OldTypeName": "",
+    "NewPrintedName": "punctuation",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagWhitespace",
+    "OldPrintedName": "NSLinguisticTagWhitespace",
+    "OldTypeName": "",
+    "NewPrintedName": "whitespace",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOther",
+    "OldPrintedName": "NSLinguisticTagOther",
+    "OldTypeName": "",
+    "NewPrintedName": "other",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagNoun",
+    "OldPrintedName": "NSLinguisticTagNoun",
+    "OldTypeName": "",
+    "NewPrintedName": "noun",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagVerb",
+    "OldPrintedName": "NSLinguisticTagVerb",
+    "OldTypeName": "",
+    "NewPrintedName": "verb",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagAdjective",
+    "OldPrintedName": "NSLinguisticTagAdjective",
+    "OldTypeName": "",
+    "NewPrintedName": "adjective",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagAdverb",
+    "OldPrintedName": "NSLinguisticTagAdverb",
+    "OldTypeName": "",
+    "NewPrintedName": "adverb",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPronoun",
+    "OldPrintedName": "NSLinguisticTagPronoun",
+    "OldTypeName": "",
+    "NewPrintedName": "pronoun",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagDeterminer",
+    "OldPrintedName": "NSLinguisticTagDeterminer",
+    "OldTypeName": "",
+    "NewPrintedName": "determiner",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagParticle",
+    "OldPrintedName": "NSLinguisticTagParticle",
+    "OldTypeName": "",
+    "NewPrintedName": "particle",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPreposition",
+    "OldPrintedName": "NSLinguisticTagPreposition",
+    "OldTypeName": "",
+    "NewPrintedName": "preposition",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagNumber",
+    "OldPrintedName": "NSLinguisticTagNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "number",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagConjunction",
+    "OldPrintedName": "NSLinguisticTagConjunction",
+    "OldTypeName": "",
+    "NewPrintedName": "conjunction",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagInterjection",
+    "OldPrintedName": "NSLinguisticTagInterjection",
+    "OldTypeName": "",
+    "NewPrintedName": "interjection",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagClassifier",
+    "OldPrintedName": "NSLinguisticTagClassifier",
+    "OldTypeName": "",
+    "NewPrintedName": "classifier",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagIdiom",
+    "OldPrintedName": "NSLinguisticTagIdiom",
+    "OldTypeName": "",
+    "NewPrintedName": "idiom",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOtherWord",
+    "OldPrintedName": "NSLinguisticTagOtherWord",
+    "OldTypeName": "",
+    "NewPrintedName": "otherWord",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSentenceTerminator",
+    "OldPrintedName": "NSLinguisticTagSentenceTerminator",
+    "OldTypeName": "",
+    "NewPrintedName": "sentenceTerminator",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOpenQuote",
+    "OldPrintedName": "NSLinguisticTagOpenQuote",
+    "OldTypeName": "",
+    "NewPrintedName": "openQuote",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagCloseQuote",
+    "OldPrintedName": "NSLinguisticTagCloseQuote",
+    "OldTypeName": "",
+    "NewPrintedName": "closeQuote",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOpenParenthesis",
+    "OldPrintedName": "NSLinguisticTagOpenParenthesis",
+    "OldTypeName": "",
+    "NewPrintedName": "openParenthesis",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagCloseParenthesis",
+    "OldPrintedName": "NSLinguisticTagCloseParenthesis",
+    "OldTypeName": "",
+    "NewPrintedName": "closeParenthesis",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagWordJoiner",
+    "OldPrintedName": "NSLinguisticTagWordJoiner",
+    "OldTypeName": "",
+    "NewPrintedName": "wordJoiner",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagDash",
+    "OldPrintedName": "NSLinguisticTagDash",
+    "OldTypeName": "",
+    "NewPrintedName": "dash",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOtherPunctuation",
+    "OldPrintedName": "NSLinguisticTagOtherPunctuation",
+    "OldTypeName": "",
+    "NewPrintedName": "otherPunctuation",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagParagraphBreak",
+    "OldPrintedName": "NSLinguisticTagParagraphBreak",
+    "OldTypeName": "",
+    "NewPrintedName": "paragraphBreak",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOtherWhitespace",
+    "OldPrintedName": "NSLinguisticTagOtherWhitespace",
+    "OldTypeName": "",
+    "NewPrintedName": "otherWhitespace",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPersonalName",
+    "OldPrintedName": "NSLinguisticTagPersonalName",
+    "OldTypeName": "",
+    "NewPrintedName": "personalName",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPlaceName",
+    "OldPrintedName": "NSLinguisticTagPlaceName",
+    "OldTypeName": "",
+    "NewPrintedName": "placeName",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOrganizationName",
+    "OldPrintedName": "NSLinguisticTagOrganizationName",
+    "OldTypeName": "",
+    "NewPrintedName": "organizationName",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeTokenType",
+    "OldPrintedName": "NSLinguisticTagSchemeTokenType",
+    "OldTypeName": "",
+    "NewPrintedName": "tokenType",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeLexicalClass",
+    "OldPrintedName": "NSLinguisticTagSchemeLexicalClass",
+    "OldTypeName": "",
+    "NewPrintedName": "lexicalClass",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeNameType",
+    "OldPrintedName": "NSLinguisticTagSchemeNameType",
+    "OldTypeName": "",
+    "NewPrintedName": "nameType",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeNameTypeOrLexicalClass",
+    "OldPrintedName": "NSLinguisticTagSchemeNameTypeOrLexicalClass",
+    "OldTypeName": "",
+    "NewPrintedName": "nameTypeOrLexicalClass",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeLemma",
+    "OldPrintedName": "NSLinguisticTagSchemeLemma",
+    "OldTypeName": "",
+    "NewPrintedName": "lemma",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeLanguage",
+    "OldPrintedName": "NSLinguisticTagSchemeLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "language",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeScript",
+    "OldPrintedName": "NSLinguisticTagSchemeScript",
+    "OldTypeName": "",
+    "NewPrintedName": "script",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@GKPlayerDidChangeNotificationName",
+    "OldPrintedName": "GKPlayerDidChangeNotificationName",
+    "OldTypeName": "",
+    "NewPrintedName": "GKPlayerDidChangeNotificationName",
+    "NewTypeName": "NSNotification.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@GKPlayerAuthenticationDidChangeNotificationName",
+    "OldPrintedName": "GKPlayerAuthenticationDidChangeNotificationName",
+    "OldTypeName": "",
+    "NewPrintedName": "GKPlayerAuthenticationDidChangeNotificationName",
+    "NewTypeName": "NSNotification.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingNameKey",
+    "OldPrintedName": "NSTextCheckingNameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "name",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingJobTitleKey",
+    "OldPrintedName": "NSTextCheckingJobTitleKey",
+    "OldTypeName": "",
+    "NewPrintedName": "jobTitle",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingOrganizationKey",
+    "OldPrintedName": "NSTextCheckingOrganizationKey",
+    "OldTypeName": "",
+    "NewPrintedName": "organization",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingStreetKey",
+    "OldPrintedName": "NSTextCheckingStreetKey",
+    "OldTypeName": "",
+    "NewPrintedName": "street",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingCityKey",
+    "OldPrintedName": "NSTextCheckingCityKey",
+    "OldTypeName": "",
+    "NewPrintedName": "city",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingStateKey",
+    "OldPrintedName": "NSTextCheckingStateKey",
+    "OldTypeName": "",
+    "NewPrintedName": "state",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingZIPKey",
+    "OldPrintedName": "NSTextCheckingZIPKey",
+    "OldTypeName": "",
+    "NewPrintedName": "zip",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingCountryKey",
+    "OldPrintedName": "NSTextCheckingCountryKey",
+    "OldTypeName": "",
+    "NewPrintedName": "country",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingPhoneKey",
+    "OldPrintedName": "NSTextCheckingPhoneKey",
+    "OldTypeName": "",
+    "NewPrintedName": "phone",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingAirlineKey",
+    "OldPrintedName": "NSTextCheckingAirlineKey",
+    "OldTypeName": "",
+    "NewPrintedName": "airline",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingFlightKey",
+    "OldPrintedName": "NSTextCheckingFlightKey",
+    "OldTypeName": "",
+    "NewPrintedName": "flight",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextLayoutOrientation",
+    "OldPrintedName": "NSTextLayoutOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "TextLayoutOrientation",
+    "NewTypeName": "NSLayoutManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGlyphProperty",
+    "OldPrintedName": "NSGlyphProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "GlyphProperty",
+    "NewTypeName": "NSLayoutManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSControlCharacterAction",
+    "OldPrintedName": "NSControlCharacterAction",
+    "OldTypeName": "",
+    "NewPrintedName": "ControlCharacterAction",
+    "NewTypeName": "NSLayoutManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTabColumnTerminatorsAttributeName",
+    "OldPrintedName": "NSTabColumnTerminatorsAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "columnTerminators",
+    "NewTypeName": "NSTextTab.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIAppearance(cm)appearance",
+    "OldPrintedName": "appearance()",
+    "OldTypeName": "UIView",
+    "NewPrintedName": "appearance()",
+    "NewTypeName": "UIAppearance"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIAppearance(cm)appearanceWhenContainedInInstancesOfClasses:",
+    "OldPrintedName": "appearance(whenContainedInInstancesOf:)",
+    "OldTypeName": "UIView",
+    "NewPrintedName": "appearance(whenContainedInInstancesOf:)",
+    "NewTypeName": "UIAppearance"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIAppearance(cm)appearanceForTraitCollection:",
+    "OldPrintedName": "appearance(for:)",
+    "OldTypeName": "UIView",
+    "NewPrintedName": "appearance(for:)",
+    "NewTypeName": "UIAppearance"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIAppearance(cm)appearanceForTraitCollection:whenContainedInInstancesOfClasses:",
+    "OldPrintedName": "appearance(for:whenContainedInInstancesOf:)",
+    "OldTypeName": "UIView",
+    "NewPrintedName": "appearance(for:whenContainedInInstancesOf:)",
+    "NewTypeName": "UIAppearance"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightUltraLight",
+    "OldPrintedName": "UIFontWeightUltraLight",
+    "OldTypeName": "",
+    "NewPrintedName": "ultraLight",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightThin",
+    "OldPrintedName": "UIFontWeightThin",
+    "OldTypeName": "",
+    "NewPrintedName": "thin",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightLight",
+    "OldPrintedName": "UIFontWeightLight",
+    "OldTypeName": "",
+    "NewPrintedName": "light",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightRegular",
+    "OldPrintedName": "UIFontWeightRegular",
+    "OldTypeName": "",
+    "NewPrintedName": "regular",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightMedium",
+    "OldPrintedName": "UIFontWeightMedium",
+    "OldTypeName": "",
+    "NewPrintedName": "medium",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightSemibold",
+    "OldPrintedName": "UIFontWeightSemibold",
+    "OldTypeName": "",
+    "NewPrintedName": "semibold",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightBold",
+    "OldPrintedName": "UIFontWeightBold",
+    "OldTypeName": "",
+    "NewPrintedName": "bold",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightHeavy",
+    "OldPrintedName": "UIFontWeightHeavy",
+    "OldTypeName": "",
+    "NewPrintedName": "heavy",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightBlack",
+    "OldPrintedName": "UIFontWeightBlack",
+    "OldTypeName": "",
+    "NewPrintedName": "black",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorFamilyAttribute",
+    "OldPrintedName": "UIFontDescriptorFamilyAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "family",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorNameAttribute",
+    "OldPrintedName": "UIFontDescriptorNameAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "name",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorFaceAttribute",
+    "OldPrintedName": "UIFontDescriptorFaceAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "face",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorSizeAttribute",
+    "OldPrintedName": "UIFontDescriptorSizeAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "size",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorVisibleNameAttribute",
+    "OldPrintedName": "UIFontDescriptorVisibleNameAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "visibleName",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorMatrixAttribute",
+    "OldPrintedName": "UIFontDescriptorMatrixAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "matrix",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorCharacterSetAttribute",
+    "OldPrintedName": "UIFontDescriptorCharacterSetAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "characterSet",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorCascadeListAttribute",
+    "OldPrintedName": "UIFontDescriptorCascadeListAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "cascadeList",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorTraitsAttribute",
+    "OldPrintedName": "UIFontDescriptorTraitsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "traits",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorFixedAdvanceAttribute",
+    "OldPrintedName": "UIFontDescriptorFixedAdvanceAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "fixedAdvance",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorFeatureSettingsAttribute",
+    "OldPrintedName": "UIFontDescriptorFeatureSettingsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "featureSettings",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorTextStyleAttribute",
+    "OldPrintedName": "UIFontDescriptorTextStyleAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "textStyle",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontSymbolicTrait",
+    "OldPrintedName": "UIFontSymbolicTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "symbolic",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightTrait",
+    "OldPrintedName": "UIFontWeightTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "weight",
+    "NewTypeName": "UIFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWidthTrait",
+    "OldPrintedName": "UIFontWidthTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "width",
+    "NewTypeName": "UIFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontSlantTrait",
+    "OldPrintedName": "UIFontSlantTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "slant",
+    "NewTypeName": "UIFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontFeatureTypeIdentifierKey",
+    "OldPrintedName": "UIFontFeatureTypeIdentifierKey",
+    "OldTypeName": "",
+    "NewPrintedName": "featureIdentifier",
+    "NewTypeName": "UIFontDescriptor.FeatureKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontFeatureSelectorIdentifierKey",
+    "OldPrintedName": "UIFontFeatureSelectorIdentifierKey",
+    "OldTypeName": "",
+    "NewPrintedName": "typeIdentifier",
+    "NewTypeName": "UIFontDescriptor.FeatureKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UILayoutPriorityRequired",
+    "OldPrintedName": "UILayoutPriorityRequired",
+    "OldTypeName": "",
+    "NewPrintedName": "required",
+    "NewTypeName": "UILayoutPriority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UILayoutPriorityDefaultHigh",
+    "OldPrintedName": "UILayoutPriorityDefaultHigh",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultHigh",
+    "NewTypeName": "UILayoutPriority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UILayoutPriorityDefaultLow",
+    "OldPrintedName": "UILayoutPriorityDefaultLow",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultLow",
+    "NewTypeName": "UILayoutPriority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UILayoutPriorityFittingSizeLevel",
+    "OldPrintedName": "UILayoutPriorityFittingSizeLevel",
+    "OldTypeName": "",
+    "NewPrintedName": "fittingSizeLevel",
+    "NewTypeName": "UILayoutPriority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIPopoverBackgroundViewMethods(cm)arrowBase",
+    "OldPrintedName": "arrowBase()",
+    "OldTypeName": "UIPopoverBackgroundViewMethods",
+    "NewPrintedName": "arrowBase()",
+    "NewTypeName": "UIPopoverBackgroundView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIPopoverBackgroundViewMethods(cm)contentViewInsets",
+    "OldPrintedName": "contentViewInsets()",
+    "OldTypeName": "UIPopoverBackgroundViewMethods",
+    "NewPrintedName": "contentViewInsets()",
+    "NewTypeName": "UIPopoverBackgroundView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIPopoverBackgroundViewMethods(cm)arrowHeight",
+    "OldPrintedName": "arrowHeight()",
+    "OldTypeName": "UIPopoverBackgroundViewMethods",
+    "NewPrintedName": "arrowHeight()",
+    "NewTypeName": "UIPopoverBackgroundView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIViewControllerRestoration(cm)viewControllerWithRestorationIdentifierPath:coder:",
+    "OldPrintedName": "viewController(withRestorationIdentifierPath:coder:)",
+    "OldTypeName": "ABPersonViewController",
+    "NewPrintedName": "viewController(withRestorationIdentifierPath:coder:)",
+    "NewTypeName": "UIViewControllerRestoration"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKModelErrorDomain",
+    "OldPrintedName": "MTKModelErrorDomain",
+    "OldTypeName": "",
+    "NewPrintedName": "domain",
+    "NewTypeName": "MTKModelError"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKModelErrorKey",
+    "OldPrintedName": "MTKModelErrorKey",
+    "OldTypeName": "",
+    "NewPrintedName": "key",
+    "NewTypeName": "MTKModelError"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderErrorDomain",
+    "OldPrintedName": "MTKTextureLoaderErrorDomain",
+    "OldTypeName": "",
+    "NewPrintedName": "domain",
+    "NewTypeName": "MTKTextureLoader.Error"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderErrorKey",
+    "OldPrintedName": "MTKTextureLoaderErrorKey",
+    "OldTypeName": "",
+    "NewPrintedName": "key",
+    "NewTypeName": "MTKTextureLoader.Error"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionAllocateMipmaps",
+    "OldPrintedName": "MTKTextureLoaderOptionAllocateMipmaps",
+    "OldTypeName": "",
+    "NewPrintedName": "allocateMipmaps",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionGenerateMipmaps",
+    "OldPrintedName": "MTKTextureLoaderOptionGenerateMipmaps",
+    "OldTypeName": "",
+    "NewPrintedName": "generateMipmaps",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionSRGB",
+    "OldPrintedName": "MTKTextureLoaderOptionSRGB",
+    "OldTypeName": "",
+    "NewPrintedName": "SRGB",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionTextureUsage",
+    "OldPrintedName": "MTKTextureLoaderOptionTextureUsage",
+    "OldTypeName": "",
+    "NewPrintedName": "textureUsage",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionTextureCPUCacheMode",
+    "OldPrintedName": "MTKTextureLoaderOptionTextureCPUCacheMode",
+    "OldTypeName": "",
+    "NewPrintedName": "textureCPUCacheMode",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionTextureStorageMode",
+    "OldPrintedName": "MTKTextureLoaderOptionTextureStorageMode",
+    "OldTypeName": "",
+    "NewPrintedName": "textureStorageMode",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionCubeLayout",
+    "OldPrintedName": "MTKTextureLoaderOptionCubeLayout",
+    "OldTypeName": "",
+    "NewPrintedName": "cubeLayout",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionOrigin",
+    "OldPrintedName": "MTKTextureLoaderOptionOrigin",
+    "OldTypeName": "",
+    "NewPrintedName": "origin",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderCubeLayoutVertical",
+    "OldPrintedName": "MTKTextureLoaderCubeLayoutVertical",
+    "OldTypeName": "",
+    "NewPrintedName": "vertical",
+    "NewTypeName": "MTKTextureLoader.CubeLayout"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOriginTopLeft",
+    "OldPrintedName": "MTKTextureLoaderOriginTopLeft",
+    "OldTypeName": "",
+    "NewPrintedName": "topLeft",
+    "NewTypeName": "MTKTextureLoader.Origin"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOriginBottomLeft",
+    "OldPrintedName": "MTKTextureLoaderOriginBottomLeft",
+    "OldTypeName": "",
+    "NewPrintedName": "bottomLeft",
+    "NewTypeName": "MTKTextureLoader.Origin"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOriginFlippedVertically",
+    "OldPrintedName": "MTKTextureLoaderOriginFlippedVertically",
+    "OldTypeName": "",
+    "NewPrintedName": "flippedVertically",
+    "NewTypeName": "MTKTextureLoader.Origin"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@MTKTextureLoaderCallback",
+    "OldPrintedName": "MTKTextureLoaderCallback",
+    "OldTypeName": "",
+    "NewPrintedName": "Callback",
+    "NewTypeName": "MTKTextureLoader"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@MTKTextureLoaderArrayCallback",
+    "OldPrintedName": "MTKTextureLoaderArrayCallback",
+    "OldTypeName": "",
+    "NewPrintedName": "ArrayCallback",
+    "NewTypeName": "MTKTextureLoader"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isEqual:",
+    "OldPrintedName": "isEqual(_:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "isEqual(_:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)performSelector:",
+    "OldPrintedName": "perform(_:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "perform(_:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)performSelector:withObject:",
+    "OldPrintedName": "perform(_:with:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "perform(_:with:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)performSelector:withObject:withObject:",
+    "OldPrintedName": "perform(_:with:with:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "perform(_:with:with:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isProxy",
+    "OldPrintedName": "isProxy()",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "isProxy()",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isKindOfClass:",
+    "OldPrintedName": "isKind(of:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "isKind(of:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isMemberOfClass:",
+    "OldPrintedName": "isMember(of:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "isMember(of:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)respondsToSelector:",
+    "OldPrintedName": "responds(to:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "responds(to:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)MDLTransformComponent(cm)globalTransformWithObject:atTime:",
+    "OldPrintedName": "globalTransform(with:atTime:)",
+    "OldTypeName": "MDLTransformComponent",
+    "NewPrintedName": "globalTransform(with:atTime:)",
+    "NewTypeName": "MDLTransform"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAssetImageGeneratorApertureModeCleanAperture",
+    "OldPrintedName": "AVAssetImageGeneratorApertureModeCleanAperture",
+    "OldTypeName": "",
+    "NewPrintedName": "cleanAperture",
+    "NewTypeName": "AVAssetImageGeneratorApertureMode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAssetImageGeneratorApertureModeProductionAperture",
+    "OldPrintedName": "AVAssetImageGeneratorApertureModeProductionAperture",
+    "OldTypeName": "",
+    "NewPrintedName": "productionAperture",
+    "NewTypeName": "AVAssetImageGeneratorApertureMode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAssetImageGeneratorApertureModeEncodedPixels",
+    "OldPrintedName": "AVAssetImageGeneratorApertureModeEncodedPixels",
+    "OldTypeName": "",
+    "NewPrintedName": "encodedPixels",
+    "NewTypeName": "AVAssetImageGeneratorApertureMode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeAudioFallback",
+    "OldPrintedName": "AVTrackAssociationTypeAudioFallback",
+    "OldTypeName": "",
+    "NewPrintedName": "audioFallback",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeChapterList",
+    "OldPrintedName": "AVTrackAssociationTypeChapterList",
+    "OldTypeName": "",
+    "NewPrintedName": "chapterList",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeForcedSubtitlesOnly",
+    "OldPrintedName": "AVTrackAssociationTypeForcedSubtitlesOnly",
+    "OldTypeName": "",
+    "NewPrintedName": "forcedSubtitlesOnly",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeSelectionFollower",
+    "OldPrintedName": "AVTrackAssociationTypeSelectionFollower",
+    "OldTypeName": "",
+    "NewPrintedName": "selectionFollower",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeTimecode",
+    "OldPrintedName": "AVTrackAssociationTypeTimecode",
+    "OldTypeName": "",
+    "NewPrintedName": "timecode",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeMetadataReferent",
+    "OldPrintedName": "AVTrackAssociationTypeMetadataReferent",
+    "OldTypeName": "",
+    "NewPrintedName": "metadataReferent",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAudioTimePitchAlgorithmLowQualityZeroLatency",
+    "OldPrintedName": "AVAudioTimePitchAlgorithmLowQualityZeroLatency",
+    "OldTypeName": "",
+    "NewPrintedName": "lowQualityZeroLatency",
+    "NewTypeName": "AVAudioTimePitchAlgorithm"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAudioTimePitchAlgorithmTimeDomain",
+    "OldPrintedName": "AVAudioTimePitchAlgorithmTimeDomain",
+    "OldTypeName": "",
+    "NewPrintedName": "timeDomain",
+    "NewTypeName": "AVAudioTimePitchAlgorithm"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAudioTimePitchAlgorithmSpectral",
+    "OldPrintedName": "AVAudioTimePitchAlgorithmSpectral",
+    "OldTypeName": "",
+    "NewPrintedName": "spectral",
+    "NewTypeName": "AVAudioTimePitchAlgorithm"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAudioTimePitchAlgorithmVarispeed",
+    "OldPrintedName": "AVAudioTimePitchAlgorithmVarispeed",
+    "OldTypeName": "",
+    "NewPrintedName": "varispeed",
+    "NewTypeName": "AVAudioTimePitchAlgorithm"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureDevicePosition",
+    "OldPrintedName": "AVCaptureDevicePosition",
+    "OldTypeName": "",
+    "NewPrintedName": "Position",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@AVCaptureDeviceType",
+    "OldPrintedName": "AVCaptureDeviceType",
+    "OldTypeName": "",
+    "NewPrintedName": "DeviceType",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureDeviceTypeBuiltInMicrophone",
+    "OldPrintedName": "builtInMicrophone",
+    "OldTypeName": "AVCaptureDeviceType",
+    "NewPrintedName": "builtInMicrophone",
+    "NewTypeName": "AVCaptureDevice.DeviceType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureDeviceTypeBuiltInWideAngleCamera",
+    "OldPrintedName": "builtInWideAngleCamera",
+    "OldTypeName": "AVCaptureDeviceType",
+    "NewPrintedName": "builtInWideAngleCamera",
+    "NewTypeName": "AVCaptureDevice.DeviceType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureDeviceTypeBuiltInTelephotoCamera",
+    "OldPrintedName": "builtInTelephotoCamera",
+    "OldTypeName": "AVCaptureDeviceType",
+    "NewPrintedName": "builtInTelephotoCamera",
+    "NewTypeName": "AVCaptureDevice.DeviceType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureDeviceTypeBuiltInDualCamera",
+    "OldPrintedName": "builtInDualCamera",
+    "OldTypeName": "AVCaptureDeviceType",
+    "NewPrintedName": "builtInDualCamera",
+    "NewTypeName": "AVCaptureDevice.DeviceType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureDeviceTypeBuiltInDuoCamera",
+    "OldPrintedName": "builtInDuoCamera",
+    "OldTypeName": "AVCaptureDeviceType",
+    "NewPrintedName": "builtInDuoCamera",
+    "NewTypeName": "AVCaptureDevice.DeviceType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureFlashMode",
+    "OldPrintedName": "AVCaptureFlashMode",
+    "OldTypeName": "",
+    "NewPrintedName": "FlashMode",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureTorchMode",
+    "OldPrintedName": "AVCaptureTorchMode",
+    "OldTypeName": "",
+    "NewPrintedName": "TorchMode",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureMaxAvailableTorchLevel",
+    "OldPrintedName": "AVCaptureMaxAvailableTorchLevel",
+    "OldTypeName": "",
+    "NewPrintedName": "maxAvailableTorchLevel",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureFocusMode",
+    "OldPrintedName": "AVCaptureFocusMode",
+    "OldTypeName": "",
+    "NewPrintedName": "FocusMode",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureAutoFocusRangeRestriction",
+    "OldPrintedName": "AVCaptureAutoFocusRangeRestriction",
+    "OldTypeName": "",
+    "NewPrintedName": "AutoFocusRangeRestriction",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureLensPositionCurrent",
+    "OldPrintedName": "AVCaptureLensPositionCurrent",
+    "OldTypeName": "",
+    "NewPrintedName": "currentLensPosition",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureExposureMode",
+    "OldPrintedName": "AVCaptureExposureMode",
+    "OldTypeName": "",
+    "NewPrintedName": "ExposureMode",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureExposureDurationCurrent",
+    "OldPrintedName": "AVCaptureExposureDurationCurrent",
+    "OldTypeName": "",
+    "NewPrintedName": "currentExposureDuration",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureISOCurrent",
+    "OldPrintedName": "AVCaptureISOCurrent",
+    "OldTypeName": "",
+    "NewPrintedName": "currentISO",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureExposureTargetBiasCurrent",
+    "OldPrintedName": "AVCaptureExposureTargetBiasCurrent",
+    "OldTypeName": "",
+    "NewPrintedName": "currentExposureTargetBias",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureWhiteBalanceMode",
+    "OldPrintedName": "AVCaptureWhiteBalanceMode",
+    "OldTypeName": "",
+    "NewPrintedName": "WhiteBalanceMode",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@SA@AVCaptureWhiteBalanceGains",
+    "OldPrintedName": "AVCaptureWhiteBalanceGains",
+    "OldTypeName": "",
+    "NewPrintedName": "WhiteBalanceGains",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@SA@AVCaptureWhiteBalanceChromaticityValues",
+    "OldPrintedName": "AVCaptureWhiteBalanceChromaticityValues",
+    "OldTypeName": "",
+    "NewPrintedName": "WhiteBalanceChromaticityValues",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@SA@AVCaptureWhiteBalanceTemperatureAndTintValues",
+    "OldPrintedName": "AVCaptureWhiteBalanceTemperatureAndTintValues",
+    "OldTypeName": "",
+    "NewPrintedName": "WhiteBalanceTemperatureAndTintValues",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureWhiteBalanceGainsCurrent",
+    "OldPrintedName": "AVCaptureWhiteBalanceGainsCurrent",
+    "OldTypeName": "",
+    "NewPrintedName": "currentWhiteBalanceGains",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(cs)AVCaptureDeviceDiscoverySession",
+    "OldPrintedName": "AVCaptureDeviceDiscoverySession",
+    "OldTypeName": "",
+    "NewPrintedName": "DiscoverySession",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(cs)AVCaptureDeviceFormat",
+    "OldPrintedName": "AVCaptureDeviceFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "Format",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(cs)AVFrameRateRange",
+    "OldPrintedName": "AVFrameRateRange",
+    "OldTypeName": "",
+    "NewPrintedName": "FrameRateRange",
+    "NewTypeName": "AVCaptureDevice.Format"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureAutoFocusSystem",
+    "OldPrintedName": "AVCaptureAutoFocusSystem",
+    "OldTypeName": "",
+    "NewPrintedName": "AutoFocusSystem",
+    "NewTypeName": "AVCaptureDevice.Format"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureSessionInterruptionReason",
+    "OldPrintedName": "AVCaptureSessionInterruptionReason",
+    "OldTypeName": "",
+    "NewPrintedName": "InterruptionReason",
+    "NewTypeName": "AVCaptureSession"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetPhoto",
+    "OldPrintedName": "AVCaptureSessionPresetPhoto",
+    "OldTypeName": "",
+    "NewPrintedName": "photo",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetHigh",
+    "OldPrintedName": "AVCaptureSessionPresetHigh",
+    "OldTypeName": "",
+    "NewPrintedName": "high",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetMedium",
+    "OldPrintedName": "AVCaptureSessionPresetMedium",
+    "OldTypeName": "",
+    "NewPrintedName": "medium",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetLow",
+    "OldPrintedName": "AVCaptureSessionPresetLow",
+    "OldTypeName": "",
+    "NewPrintedName": "low",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPreset352x288",
+    "OldPrintedName": "AVCaptureSessionPreset352x288",
+    "OldTypeName": "",
+    "NewPrintedName": "cif352x288",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPreset640x480",
+    "OldPrintedName": "AVCaptureSessionPreset640x480",
+    "OldTypeName": "",
+    "NewPrintedName": "vga640x480",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPreset1280x720",
+    "OldPrintedName": "AVCaptureSessionPreset1280x720",
+    "OldTypeName": "",
+    "NewPrintedName": "hd1280x720",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPreset1920x1080",
+    "OldPrintedName": "AVCaptureSessionPreset1920x1080",
+    "OldTypeName": "",
+    "NewPrintedName": "hd1920x1080",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPreset3840x2160",
+    "OldPrintedName": "AVCaptureSessionPreset3840x2160",
+    "OldTypeName": "",
+    "NewPrintedName": "hd4K3840x2160",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetiFrame960x540",
+    "OldPrintedName": "AVCaptureSessionPresetiFrame960x540",
+    "OldTypeName": "",
+    "NewPrintedName": "iFrame960x540",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetiFrame1280x720",
+    "OldPrintedName": "AVCaptureSessionPresetiFrame1280x720",
+    "OldTypeName": "",
+    "NewPrintedName": "iFrame1280x720",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetInputPriority",
+    "OldPrintedName": "AVCaptureSessionPresetInputPriority",
+    "OldTypeName": "",
+    "NewPrintedName": "inputPriority",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeQuickTimeMovie",
+    "OldPrintedName": "AVFileTypeQuickTimeMovie",
+    "OldTypeName": "",
+    "NewPrintedName": "mov",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeMPEG4",
+    "OldPrintedName": "AVFileTypeMPEG4",
+    "OldTypeName": "",
+    "NewPrintedName": "mp4",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAppleM4V",
+    "OldPrintedName": "AVFileTypeAppleM4V",
+    "OldTypeName": "",
+    "NewPrintedName": "m4v",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAppleM4A",
+    "OldPrintedName": "AVFileTypeAppleM4A",
+    "OldTypeName": "",
+    "NewPrintedName": "m4a",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileType3GPP",
+    "OldPrintedName": "AVFileType3GPP",
+    "OldTypeName": "",
+    "NewPrintedName": "mobile3GPP",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileType3GPP2",
+    "OldPrintedName": "AVFileType3GPP2",
+    "OldTypeName": "",
+    "NewPrintedName": "mobile3GPP2",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeCoreAudioFormat",
+    "OldPrintedName": "AVFileTypeCoreAudioFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "caf",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeWAVE",
+    "OldPrintedName": "AVFileTypeWAVE",
+    "OldTypeName": "",
+    "NewPrintedName": "wav",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAIFF",
+    "OldPrintedName": "AVFileTypeAIFF",
+    "OldTypeName": "",
+    "NewPrintedName": "aiff",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAIFC",
+    "OldPrintedName": "AVFileTypeAIFC",
+    "OldTypeName": "",
+    "NewPrintedName": "aifc",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAMR",
+    "OldPrintedName": "AVFileTypeAMR",
+    "OldTypeName": "",
+    "NewPrintedName": "amr",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeMPEGLayer3",
+    "OldPrintedName": "AVFileTypeMPEGLayer3",
+    "OldTypeName": "",
+    "NewPrintedName": "mp3",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeSunAU",
+    "OldPrintedName": "AVFileTypeSunAU",
+    "OldTypeName": "",
+    "NewPrintedName": "au",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAC3",
+    "OldPrintedName": "AVFileTypeAC3",
+    "OldTypeName": "",
+    "NewPrintedName": "ac3",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeEnhancedAC3",
+    "OldPrintedName": "AVFileTypeEnhancedAC3",
+    "OldTypeName": "",
+    "NewPrintedName": "eac3",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVLayerVideoGravityResizeAspect",
+    "OldPrintedName": "AVLayerVideoGravityResizeAspect",
+    "OldTypeName": "",
+    "NewPrintedName": "resizeAspect",
+    "NewTypeName": "AVLayerVideoGravity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVLayerVideoGravityResizeAspectFill",
+    "OldPrintedName": "AVLayerVideoGravityResizeAspectFill",
+    "OldTypeName": "",
+    "NewPrintedName": "resizeAspectFill",
+    "NewTypeName": "AVLayerVideoGravity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVLayerVideoGravityResize",
+    "OldPrintedName": "AVLayerVideoGravityResize",
+    "OldTypeName": "",
+    "NewPrintedName": "resize",
+    "NewTypeName": "AVLayerVideoGravity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicVisual",
+    "OldPrintedName": "AVMediaCharacteristicVisual",
+    "OldTypeName": "",
+    "NewPrintedName": "visual",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicAudible",
+    "OldPrintedName": "AVMediaCharacteristicAudible",
+    "OldTypeName": "",
+    "NewPrintedName": "audible",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicLegible",
+    "OldPrintedName": "AVMediaCharacteristicLegible",
+    "OldTypeName": "",
+    "NewPrintedName": "legible",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicFrameBased",
+    "OldPrintedName": "AVMediaCharacteristicFrameBased",
+    "OldTypeName": "",
+    "NewPrintedName": "frameBased",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicUsesWideGamutColorSpace",
+    "OldPrintedName": "AVMediaCharacteristicUsesWideGamutColorSpace",
+    "OldTypeName": "",
+    "NewPrintedName": "usesWideGamutColorSpace",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicIsMainProgramContent",
+    "OldPrintedName": "AVMediaCharacteristicIsMainProgramContent",
+    "OldTypeName": "",
+    "NewPrintedName": "isMainProgramContent",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicIsAuxiliaryContent",
+    "OldPrintedName": "AVMediaCharacteristicIsAuxiliaryContent",
+    "OldTypeName": "",
+    "NewPrintedName": "isAuxiliaryContent",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicContainsOnlyForcedSubtitles",
+    "OldPrintedName": "AVMediaCharacteristicContainsOnlyForcedSubtitles",
+    "OldTypeName": "",
+    "NewPrintedName": "containsOnlyForcedSubtitles",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicTranscribesSpokenDialogForAccessibility",
+    "OldPrintedName": "AVMediaCharacteristicTranscribesSpokenDialogForAccessibility",
+    "OldTypeName": "",
+    "NewPrintedName": "transcribesSpokenDialogForAccessibility",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicDescribesMusicAndSoundForAccessibility",
+    "OldPrintedName": "AVMediaCharacteristicDescribesMusicAndSoundForAccessibility",
+    "OldTypeName": "",
+    "NewPrintedName": "describesMusicAndSoundForAccessibility",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicEasyToRead",
+    "OldPrintedName": "AVMediaCharacteristicEasyToRead",
+    "OldTypeName": "",
+    "NewPrintedName": "easyToRead",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicDescribesVideoForAccessibility",
+    "OldPrintedName": "AVMediaCharacteristicDescribesVideoForAccessibility",
+    "OldTypeName": "",
+    "NewPrintedName": "describesVideoForAccessibility",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicLanguageTranslation",
+    "OldPrintedName": "AVMediaCharacteristicLanguageTranslation",
+    "OldTypeName": "",
+    "NewPrintedName": "languageTranslation",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicDubbedTranslation",
+    "OldPrintedName": "AVMediaCharacteristicDubbedTranslation",
+    "OldTypeName": "",
+    "NewPrintedName": "dubbedTranslation",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicVoiceOverTranslation",
+    "OldPrintedName": "AVMediaCharacteristicVoiceOverTranslation",
+    "OldTypeName": "",
+    "NewPrintedName": "voiceOverTranslation",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeVideo",
+    "OldPrintedName": "AVMediaTypeVideo",
+    "OldTypeName": "",
+    "NewPrintedName": "video",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeAudio",
+    "OldPrintedName": "AVMediaTypeAudio",
+    "OldTypeName": "",
+    "NewPrintedName": "audio",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeText",
+    "OldPrintedName": "AVMediaTypeText",
+    "OldTypeName": "",
+    "NewPrintedName": "text",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeClosedCaption",
+    "OldPrintedName": "AVMediaTypeClosedCaption",
+    "OldTypeName": "",
+    "NewPrintedName": "closedCaption",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeSubtitle",
+    "OldPrintedName": "AVMediaTypeSubtitle",
+    "OldTypeName": "",
+    "NewPrintedName": "subtitle",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeTimecode",
+    "OldPrintedName": "AVMediaTypeTimecode",
+    "OldTypeName": "",
+    "NewPrintedName": "timecode",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeMetadata",
+    "OldPrintedName": "AVMediaTypeMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeMuxed",
+    "OldPrintedName": "AVMediaTypeMuxed",
+    "OldTypeName": "",
+    "NewPrintedName": "muxed",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeMetadataObject",
+    "OldPrintedName": "AVMediaTypeMetadataObject",
+    "OldTypeName": "",
+    "NewPrintedName": "metadataObject",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataExtraAttributeValueURIKey",
+    "OldPrintedName": "AVMetadataExtraAttributeValueURIKey",
+    "OldTypeName": "",
+    "NewPrintedName": "valueURI",
+    "NewTypeName": "AVMetadataExtraAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataExtraAttributeBaseURIKey",
+    "OldPrintedName": "AVMetadataExtraAttributeBaseURIKey",
+    "OldTypeName": "",
+    "NewPrintedName": "baseURI",
+    "NewTypeName": "AVMetadataExtraAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataExtraAttributeInfoKey",
+    "OldPrintedName": "AVMetadataExtraAttributeInfoKey",
+    "OldTypeName": "",
+    "NewPrintedName": "info",
+    "NewTypeName": "AVMetadataExtraAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatQuickTimeUserData",
+    "OldPrintedName": "AVMetadataFormatQuickTimeUserData",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserData",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatISOUserData",
+    "OldPrintedName": "AVMetadataFormatISOUserData",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserData",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatQuickTimeMetadata",
+    "OldPrintedName": "AVMetadataFormatQuickTimeMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadata",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatiTunesMetadata",
+    "OldPrintedName": "AVMetadataFormatiTunesMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadata",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatID3Metadata",
+    "OldPrintedName": "AVMetadataFormatID3Metadata",
+    "OldTypeName": "",
+    "NewPrintedName": "id3Metadata",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatHLSMetadata",
+    "OldPrintedName": "AVMetadataFormatHLSMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "hlsMetadata",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierTitle",
+    "OldPrintedName": "AVMetadataCommonIdentifierTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierCreator",
+    "OldPrintedName": "AVMetadataCommonIdentifierCreator",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierCreator",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierSubject",
+    "OldPrintedName": "AVMetadataCommonIdentifierSubject",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierSubject",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierDescription",
+    "OldPrintedName": "AVMetadataCommonIdentifierDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierPublisher",
+    "OldPrintedName": "AVMetadataCommonIdentifierPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierContributor",
+    "OldPrintedName": "AVMetadataCommonIdentifierContributor",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierContributor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierCreationDate",
+    "OldPrintedName": "AVMetadataCommonIdentifierCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierCreationDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierLastModifiedDate",
+    "OldPrintedName": "AVMetadataCommonIdentifierLastModifiedDate",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierLastModifiedDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierType",
+    "OldPrintedName": "AVMetadataCommonIdentifierType",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierType",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierFormat",
+    "OldPrintedName": "AVMetadataCommonIdentifierFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierFormat",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierAssetIdentifier",
+    "OldPrintedName": "AVMetadataCommonIdentifierAssetIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierAssetIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierSource",
+    "OldPrintedName": "AVMetadataCommonIdentifierSource",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierSource",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierLanguage",
+    "OldPrintedName": "AVMetadataCommonIdentifierLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierLanguage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierRelation",
+    "OldPrintedName": "AVMetadataCommonIdentifierRelation",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierRelation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierLocation",
+    "OldPrintedName": "AVMetadataCommonIdentifierLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierLocation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierCopyrights",
+    "OldPrintedName": "AVMetadataCommonIdentifierCopyrights",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierCopyrights",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierAlbumName",
+    "OldPrintedName": "AVMetadataCommonIdentifierAlbumName",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierAlbumName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierAuthor",
+    "OldPrintedName": "AVMetadataCommonIdentifierAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierArtist",
+    "OldPrintedName": "AVMetadataCommonIdentifierArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierArtwork",
+    "OldPrintedName": "AVMetadataCommonIdentifierArtwork",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierArtwork",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierMake",
+    "OldPrintedName": "AVMetadataCommonIdentifierMake",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierMake",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierModel",
+    "OldPrintedName": "AVMetadataCommonIdentifierModel",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierModel",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierSoftware",
+    "OldPrintedName": "AVMetadataCommonIdentifierSoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierSoftware",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataAlbum",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataAlbum",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataArranger",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataArranger",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataArtist",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataAuthor",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataChapter",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataChapter",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataChapter",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataComment",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataComment",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataComment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataComposer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataComposer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataCopyright",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataCreationDate",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataCreationDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataDescription",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataDirector",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataDirector",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataDisclaimer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataDisclaimer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataDisclaimer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataEncodedBy",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataEncodedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataFullName",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataFullName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataFullName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataGenre",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataHostComputer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataHostComputer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataHostComputer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataInformation",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataInformation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataKeywords",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataKeywords",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeywords",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataMake",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataMake",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataMake",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataModel",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataModel",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataModel",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataOriginalArtist",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataOriginalArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataOriginalFormat",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataOriginalFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataOriginalFormat",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataOriginalSource",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataOriginalSource",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataOriginalSource",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataPerformers",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataPerformers",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataPerformers",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataProducer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataProducer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataPublisher",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataProduct",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataProduct",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataProduct",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataSoftware",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataSoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataSoftware",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataSpecialPlaybackRequirements",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataSpecialPlaybackRequirements",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataSpecialPlaybackRequirements",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataTrack",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataTrack",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataTrack",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataWarning",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataWarning",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataWarning",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataWriter",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataWriter",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataWriter",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataURLLink",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataURLLink",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataURLLink",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataLocationISO6709",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataLocationISO6709",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataLocationISO6709",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataTrackName",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataTrackName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataTrackName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataCredits",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataCredits",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataPhonogramRights",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataPhonogramRights",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataTaggedCharacteristic",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataTaggedCharacteristic",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataTaggedCharacteristic",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierISOUserDataCopyright",
+    "OldPrintedName": "AVMetadataIdentifierISOUserDataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierISOUserDataDate",
+    "OldPrintedName": "AVMetadataIdentifierISOUserDataDate",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierISOUserDataTaggedCharacteristic",
+    "OldPrintedName": "AVMetadataIdentifierISOUserDataTaggedCharacteristic",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataTaggedCharacteristic",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataCopyright",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataAuthor",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataPerformer",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataPerformer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataGenre",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataRecordingYear",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataRecordingYear",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataRecordingYear",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataLocation",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataLocation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataTitle",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataDescription",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataCollection",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataCollection",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataCollection",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataUserRating",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataUserRating",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataUserRating",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataThumbnail",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataThumbnail",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataThumbnail",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataAlbumAndTrack",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataAlbumAndTrack",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataAlbumAndTrack",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataKeywordList",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataKeywordList",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataKeywordList",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataMediaClassification",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataMediaClassification",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataMediaClassification",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataMediaRating",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataMediaRating",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataMediaRating",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataAuthor",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataComment",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataComment",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataComment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCopyright",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCreationDate",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCreationDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDirector",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDirector",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDisplayName",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDisplayName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDisplayName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataInformation",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataInformation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataKeywords",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataKeywords",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeywords",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataProducer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataProducer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataPublisher",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataAlbum",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataAlbum",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataArtist",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataArtwork",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataArtwork",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataArtwork",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDescription",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataSoftware",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataSoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataSoftware",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataYear",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataYear",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataYear",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataGenre",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataiXML",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataiXML",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataiXML",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationISO6709",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationISO6709",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationISO6709",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataMake",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataMake",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataMake",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataModel",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataModel",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataModel",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataArranger",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataArranger",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataEncodedBy",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataEncodedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataOriginalArtist",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataOriginalArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataPerformer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataPerformer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataComposer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataComposer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCredits",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCredits",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataPhonogramRights",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataPhonogramRights",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCameraIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCameraIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCameraIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCameraFrameReadoutTime",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCameraFrameReadoutTime",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCameraFrameReadoutTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataTitle",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCollectionUser",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCollectionUser",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCollectionUser",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataRatingUser",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataRatingUser",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataRatingUser",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationName",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationBody",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationBody",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationBody",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationNote",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationNote",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationNote",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationRole",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationRole",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationRole",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationDate",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDirectionFacing",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDirectionFacing",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDirectionFacing",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDirectionMotion",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDirectionMotion",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDirectionMotion",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataPreferredAffineTransform",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataPreferredAffineTransform",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataPreferredAffineTransform",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDetectedFace",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDetectedFace",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDetectedFace",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataVideoOrientation",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataVideoOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataVideoOrientation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataContentIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataContentIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataContentIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAlbum",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAlbum",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataArtist",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataUserComment",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataUserComment",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataUserComment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataCoverArt",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataCoverArt",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataCoverArt",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataCopyright",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataReleaseDate",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataReleaseDate",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataReleaseDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataEncodedBy",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataEncodedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPredefinedGenre",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPredefinedGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPredefinedGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataUserGenre",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataUserGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataUserGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataSongName",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataSongName",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataSongName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataTrackSubTitle",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataTrackSubTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataTrackSubTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataEncodingTool",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataEncodingTool",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataEncodingTool",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataComposer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataComposer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAlbumArtist",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAlbumArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAlbumArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAccountKind",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAccountKind",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAccountKind",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAppleID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAppleID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAppleID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataArtistID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataArtistID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataArtistID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataSongID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataSongID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataSongID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataDiscCompilation",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataDiscCompilation",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataDiscCompilation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataDiscNumber",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataDiscNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataDiscNumber",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataGenreID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataGenreID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataGenreID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataGrouping",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataGrouping",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataGrouping",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPlaylistID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPlaylistID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPlaylistID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataContentRating",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataContentRating",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataContentRating",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataBeatsPerMin",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataBeatsPerMin",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataBeatsPerMin",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataTrackNumber",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataTrackNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataTrackNumber",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataArtDirector",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataArtDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataArtDirector",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataArranger",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataArranger",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAuthor",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataLyrics",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataLyrics",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataLyrics",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAcknowledgement",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAcknowledgement",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAcknowledgement",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataConductor",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataConductor",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataConductor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataDescription",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataDirector",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataDirector",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataEQ",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataEQ",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataEQ",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataLinerNotes",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataLinerNotes",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataLinerNotes",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataRecordCompany",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataRecordCompany",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataRecordCompany",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataOriginalArtist",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataOriginalArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPhonogramRights",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPhonogramRights",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataProducer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataProducer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPerformer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPerformer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPublisher",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataSoundEngineer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataSoundEngineer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataSoundEngineer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataSoloist",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataSoloist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataSoloist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataCredits",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataCredits",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataThanks",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataThanks",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataThanks",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataOnlineExtras",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataOnlineExtras",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataOnlineExtras",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataExecProducer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataExecProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataExecProducer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAudioEncryption",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAudioEncryption",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAudioEncryption",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAttachedPicture",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAttachedPicture",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAttachedPicture",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAudioSeekPointIndex",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAudioSeekPointIndex",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAudioSeekPointIndex",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataComments",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataComments",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataComments",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCommercial",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCommercial",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCommercial",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCommerical",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCommerical",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCommerical",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEncryption",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEncryption",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEncryption",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEqualization",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEqualization",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEqualization",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEqualization2",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEqualization2",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEqualization2",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEventTimingCodes",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEventTimingCodes",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEventTimingCodes",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataGeneralEncapsulatedObject",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataGeneralEncapsulatedObject",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataGeneralEncapsulatedObject",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataGroupIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataGroupIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataGroupIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInvolvedPeopleList_v23",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInvolvedPeopleList_v23",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInvolvedPeopleList_v23",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLink",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLink",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLink",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMusicCDIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMusicCDIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMusicCDIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMPEGLocationLookupTable",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMPEGLocationLookupTable",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMPEGLocationLookupTable",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOwnership",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOwnership",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOwnership",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPrivate",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPrivate",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPrivate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPlayCounter",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPlayCounter",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPlayCounter",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPopularimeter",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPopularimeter",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPopularimeter",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPositionSynchronization",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPositionSynchronization",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPositionSynchronization",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRecommendedBufferSize",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRecommendedBufferSize",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRecommendedBufferSize",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRelativeVolumeAdjustment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment2",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment2",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRelativeVolumeAdjustment2",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataReverb",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataReverb",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataReverb",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSeek",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSeek",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSeek",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSignature",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSignature",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSignature",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSynchronizedLyric",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSynchronizedLyric",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSynchronizedLyric",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSynchronizedTempoCodes",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSynchronizedTempoCodes",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSynchronizedTempoCodes",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAlbumTitle",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAlbumTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAlbumTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataBeatsPerMinute",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataBeatsPerMinute",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataBeatsPerMinute",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataComposer",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataComposer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataContentType",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataContentType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataContentType",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCopyright",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataDate",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataDate",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEncodingTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEncodingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEncodingTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPlaylistDelay",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPlaylistDelay",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPlaylistDelay",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalReleaseTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalReleaseTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalReleaseTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRecordingTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRecordingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRecordingTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataReleaseTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataReleaseTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataReleaseTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTaggingTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTaggingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTaggingTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEncodedBy",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEncodedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLyricist",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLyricist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLyricist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataFileType",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataFileType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataFileType",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInvolvedPeopleList_v24",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInvolvedPeopleList_v24",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInvolvedPeopleList_v24",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataContentGroupDescription",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataContentGroupDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataContentGroupDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTitleDescription",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTitleDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTitleDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSubTitle",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSubTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSubTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInitialKey",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInitialKey",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInitialKey",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLanguage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLanguage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLength",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLength",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLength",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMusicianCreditsList",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMusicianCreditsList",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMusicianCreditsList",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMediaType",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMediaType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMediaType",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMood",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMood",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMood",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalAlbumTitle",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalAlbumTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalAlbumTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalFilename",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalFilename",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalFilename",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalLyricist",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalLyricist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalLyricist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalArtist",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalReleaseYear",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalReleaseYear",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalReleaseYear",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataFileOwner",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataFileOwner",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataFileOwner",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLeadPerformer",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLeadPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLeadPerformer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataBand",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataBand",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataBand",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataConductor",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataConductor",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataConductor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataModifiedBy",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataModifiedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataModifiedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPartOfASet",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPartOfASet",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPartOfASet",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataProducedNotice",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataProducedNotice",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataProducedNotice",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPublisher",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTrackNumber",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTrackNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTrackNumber",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRecordingDates",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRecordingDates",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRecordingDates",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInternetRadioStationName",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInternetRadioStationName",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInternetRadioStationName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInternetRadioStationOwner",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInternetRadioStationOwner",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInternetRadioStationOwner",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSize",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSize",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSize",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAlbumSortOrder",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAlbumSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAlbumSortOrder",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPerformerSortOrder",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPerformerSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPerformerSortOrder",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTitleSortOrder",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTitleSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTitleSortOrder",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInternationalStandardRecordingCode",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInternationalStandardRecordingCode",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInternationalStandardRecordingCode",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEncodedWith",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEncodedWith",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEncodedWith",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSetSubtitle",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSetSubtitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSetSubtitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataYear",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataYear",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataYear",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataUserText",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataUserText",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataUserText",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataUniqueFileIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataUniqueFileIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataUniqueFileIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTermsOfUse",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTermsOfUse",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTermsOfUse",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataUnsynchronizedLyric",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataUnsynchronizedLyric",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataUnsynchronizedLyric",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCommercialInformation",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCommercialInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCommercialInformation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCopyrightInformation",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCopyrightInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCopyrightInformation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialAudioFileWebpage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialAudioFileWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialAudioFileWebpage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialArtistWebpage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialArtistWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialArtistWebpage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialAudioSourceWebpage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialAudioSourceWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialAudioSourceWebpage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialInternetRadioStationHomepage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialInternetRadioStationHomepage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialInternetRadioStationHomepage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPayment",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPayment",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPayment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialPublisherWebpage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialPublisherWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialPublisherWebpage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataUserURL",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataUserURL",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataUserURL",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierIcyMetadataStreamTitle",
+    "OldPrintedName": "AVMetadataIdentifierIcyMetadataStreamTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "icyMetadataStreamTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierIcyMetadataStreamURL",
+    "OldPrintedName": "AVMetadataIdentifierIcyMetadataStreamURL",
+    "OldTypeName": "",
+    "NewPrintedName": "icyMetadataStreamURL",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyTitle",
+    "OldPrintedName": "AVMetadataCommonKeyTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyCreator",
+    "OldPrintedName": "AVMetadataCommonKeyCreator",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyCreator",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeySubject",
+    "OldPrintedName": "AVMetadataCommonKeySubject",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeySubject",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyDescription",
+    "OldPrintedName": "AVMetadataCommonKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyPublisher",
+    "OldPrintedName": "AVMetadataCommonKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyContributor",
+    "OldPrintedName": "AVMetadataCommonKeyContributor",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyContributor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyCreationDate",
+    "OldPrintedName": "AVMetadataCommonKeyCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyCreationDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyLastModifiedDate",
+    "OldPrintedName": "AVMetadataCommonKeyLastModifiedDate",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyLastModifiedDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyType",
+    "OldPrintedName": "AVMetadataCommonKeyType",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyType",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyFormat",
+    "OldPrintedName": "AVMetadataCommonKeyFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyFormat",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyIdentifier",
+    "OldPrintedName": "AVMetadataCommonKeyIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeySource",
+    "OldPrintedName": "AVMetadataCommonKeySource",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeySource",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyLanguage",
+    "OldPrintedName": "AVMetadataCommonKeyLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyLanguage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyRelation",
+    "OldPrintedName": "AVMetadataCommonKeyRelation",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyRelation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyLocation",
+    "OldPrintedName": "AVMetadataCommonKeyLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyLocation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyCopyrights",
+    "OldPrintedName": "AVMetadataCommonKeyCopyrights",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyCopyrights",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyAlbumName",
+    "OldPrintedName": "AVMetadataCommonKeyAlbumName",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyAlbumName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyAuthor",
+    "OldPrintedName": "AVMetadataCommonKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyArtist",
+    "OldPrintedName": "AVMetadataCommonKeyArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyArtwork",
+    "OldPrintedName": "AVMetadataCommonKeyArtwork",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyArtwork",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyMake",
+    "OldPrintedName": "AVMetadataCommonKeyMake",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyMake",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyModel",
+    "OldPrintedName": "AVMetadataCommonKeyModel",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyModel",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeySoftware",
+    "OldPrintedName": "AVMetadataCommonKeySoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeySoftware",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyAlbum",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyAlbum",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyArranger",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyArranger",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyArtist",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyAuthor",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyChapter",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyChapter",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyChapter",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyComment",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyComment",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyComment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyComposer",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyComposer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyCopyright",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyCreationDate",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyCreationDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyDescription",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyDirector",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyDirector",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyDisclaimer",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyDisclaimer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyDisclaimer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyEncodedBy",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyEncodedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyFullName",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyFullName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyFullName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyGenre",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyHostComputer",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyHostComputer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyHostComputer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyInformation",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyInformation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyKeywords",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyKeywords",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyKeywords",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyMake",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyMake",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyMake",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyModel",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyModel",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyModel",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyOriginalArtist",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyOriginalArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyOriginalFormat",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyOriginalFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyOriginalFormat",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyOriginalSource",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyOriginalSource",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyOriginalSource",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyPerformers",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyPerformers",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyPerformers",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyProducer",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyProducer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyPublisher",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyProduct",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyProduct",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyProduct",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeySoftware",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeySoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeySoftware",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeySpecialPlaybackRequirements",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeySpecialPlaybackRequirements",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeySpecialPlaybackRequirements",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyTrack",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyTrack",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyTrack",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyWarning",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyWarning",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyWarning",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyWriter",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyWriter",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyWriter",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyURLLink",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyURLLink",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyURLLink",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyLocationISO6709",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyLocationISO6709",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyLocationISO6709",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyTrackName",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyTrackName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyTrackName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyCredits",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyCredits",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyPhonogramRights",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyPhonogramRights",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyTaggedCharacteristic",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyTaggedCharacteristic",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyTaggedCharacteristic",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataISOUserDataKeyCopyright",
+    "OldPrintedName": "AVMetadataISOUserDataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataISOUserDataKeyTaggedCharacteristic",
+    "OldPrintedName": "AVMetadataISOUserDataKeyTaggedCharacteristic",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataKeyTaggedCharacteristic",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataISOUserDataKeyDate",
+    "OldPrintedName": "AVMetadataISOUserDataKeyDate",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataKeyDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyCopyright",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyAuthor",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyPerformer",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyPerformer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyGenre",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyRecordingYear",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyRecordingYear",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyRecordingYear",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyLocation",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyLocation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyTitle",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyDescription",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyCollection",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyCollection",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyCollection",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyUserRating",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyUserRating",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyUserRating",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyThumbnail",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyThumbnail",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyThumbnail",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyAlbumAndTrack",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyAlbumAndTrack",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyAlbumAndTrack",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyKeywordList",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyKeywordList",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyKeywordList",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyMediaClassification",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyMediaClassification",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyMediaClassification",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyMediaRating",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyMediaRating",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyMediaRating",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyAuthor",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyComment",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyComment",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyComment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCopyright",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCreationDate",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCreationDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDirector",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDirector",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDisplayName",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDisplayName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDisplayName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyInformation",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyInformation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyKeywords",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyKeywords",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyKeywords",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyProducer",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyProducer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyPublisher",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyAlbum",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyAlbum",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyArtist",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyArtwork",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyArtwork",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyArtwork",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDescription",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeySoftware",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeySoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeySoftware",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyYear",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyYear",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyYear",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyGenre",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyiXML",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyiXML",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyiXML",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationISO6709",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationISO6709",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationISO6709",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyMake",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyMake",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyMake",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyModel",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyModel",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyModel",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyArranger",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyArranger",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyEncodedBy",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyEncodedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyOriginalArtist",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyOriginalArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyPerformer",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyPerformer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyComposer",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyComposer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCredits",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCredits",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyPhonogramRights",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyPhonogramRights",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCameraIdentifier",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCameraIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCameraIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCameraFrameReadoutTime",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCameraFrameReadoutTime",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCameraFrameReadoutTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyTitle",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCollectionUser",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCollectionUser",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCollectionUser",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyRatingUser",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyRatingUser",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyRatingUser",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationName",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationBody",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationBody",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationBody",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationNote",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationNote",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationNote",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationRole",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationRole",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationRole",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationDate",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDirectionFacing",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDirectionFacing",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDirectionFacing",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDirectionMotion",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDirectionMotion",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDirectionMotion",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyContentIdentifier",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyContentIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyContentIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAlbum",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAlbum",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyArtist",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyUserComment",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyUserComment",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyUserComment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyCoverArt",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyCoverArt",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyCoverArt",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyCopyright",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyReleaseDate",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyReleaseDate",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyReleaseDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyEncodedBy",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyEncodedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPredefinedGenre",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPredefinedGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPredefinedGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyUserGenre",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyUserGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyUserGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeySongName",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeySongName",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeySongName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyTrackSubTitle",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyTrackSubTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyTrackSubTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyEncodingTool",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyEncodingTool",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyEncodingTool",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyComposer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyComposer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAlbumArtist",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAlbumArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAlbumArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAccountKind",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAccountKind",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAccountKind",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAppleID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAppleID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAppleID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyArtistID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyArtistID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyArtistID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeySongID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeySongID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeySongID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyDiscCompilation",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyDiscCompilation",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyDiscCompilation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyDiscNumber",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyDiscNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyDiscNumber",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyGenreID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyGenreID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyGenreID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyGrouping",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyGrouping",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyGrouping",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPlaylistID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPlaylistID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPlaylistID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyContentRating",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyContentRating",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyContentRating",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyBeatsPerMin",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyBeatsPerMin",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyBeatsPerMin",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyTrackNumber",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyTrackNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyTrackNumber",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyArtDirector",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyArtDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyArtDirector",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyArranger",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyArranger",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAuthor",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyLyrics",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyLyrics",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyLyrics",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAcknowledgement",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAcknowledgement",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAcknowledgement",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyConductor",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyConductor",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyConductor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyDescription",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyDirector",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyDirector",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyEQ",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyEQ",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyEQ",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyLinerNotes",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyLinerNotes",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyLinerNotes",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyRecordCompany",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyRecordCompany",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyRecordCompany",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyOriginalArtist",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyOriginalArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPhonogramRights",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPhonogramRights",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyProducer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyProducer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPerformer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPerformer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPublisher",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeySoundEngineer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeySoundEngineer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeySoundEngineer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeySoloist",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeySoloist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeySoloist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyCredits",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyCredits",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyThanks",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyThanks",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyThanks",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyOnlineExtras",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyOnlineExtras",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyOnlineExtras",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyExecProducer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyExecProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyExecProducer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAudioEncryption",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAudioEncryption",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAudioEncryption",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAttachedPicture",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAttachedPicture",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAttachedPicture",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAudioSeekPointIndex",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAudioSeekPointIndex",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAudioSeekPointIndex",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyComments",
+    "OldPrintedName": "AVMetadataID3MetadataKeyComments",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyComments",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCommercial",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCommercial",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCommercial",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCommerical",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCommerical",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCommerical",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEncryption",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEncryption",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEncryption",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEqualization",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEqualization",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEqualization",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEqualization2",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEqualization2",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEqualization2",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEventTimingCodes",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEventTimingCodes",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEventTimingCodes",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyGeneralEncapsulatedObject",
+    "OldPrintedName": "AVMetadataID3MetadataKeyGeneralEncapsulatedObject",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyGeneralEncapsulatedObject",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyGroupIdentifier",
+    "OldPrintedName": "AVMetadataID3MetadataKeyGroupIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyGroupIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInvolvedPeopleList_v23",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInvolvedPeopleList_v23",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInvolvedPeopleList_v23",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLink",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLink",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLink",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMusicCDIdentifier",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMusicCDIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMusicCDIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMPEGLocationLookupTable",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMPEGLocationLookupTable",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMPEGLocationLookupTable",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOwnership",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOwnership",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOwnership",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPrivate",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPrivate",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPrivate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPlayCounter",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPlayCounter",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPlayCounter",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPopularimeter",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPopularimeter",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPopularimeter",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPositionSynchronization",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPositionSynchronization",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPositionSynchronization",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRecommendedBufferSize",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRecommendedBufferSize",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRecommendedBufferSize",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRelativeVolumeAdjustment",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRelativeVolumeAdjustment",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRelativeVolumeAdjustment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRelativeVolumeAdjustment2",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRelativeVolumeAdjustment2",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRelativeVolumeAdjustment2",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyReverb",
+    "OldPrintedName": "AVMetadataID3MetadataKeyReverb",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyReverb",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySeek",
+    "OldPrintedName": "AVMetadataID3MetadataKeySeek",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySeek",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySignature",
+    "OldPrintedName": "AVMetadataID3MetadataKeySignature",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySignature",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySynchronizedLyric",
+    "OldPrintedName": "AVMetadataID3MetadataKeySynchronizedLyric",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySynchronizedLyric",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySynchronizedTempoCodes",
+    "OldPrintedName": "AVMetadataID3MetadataKeySynchronizedTempoCodes",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySynchronizedTempoCodes",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAlbumTitle",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAlbumTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAlbumTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyBeatsPerMinute",
+    "OldPrintedName": "AVMetadataID3MetadataKeyBeatsPerMinute",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyBeatsPerMinute",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyComposer",
+    "OldPrintedName": "AVMetadataID3MetadataKeyComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyComposer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyContentType",
+    "OldPrintedName": "AVMetadataID3MetadataKeyContentType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyContentType",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCopyright",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyDate",
+    "OldPrintedName": "AVMetadataID3MetadataKeyDate",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEncodingTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEncodingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEncodingTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPlaylistDelay",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPlaylistDelay",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPlaylistDelay",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalReleaseTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalReleaseTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalReleaseTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRecordingTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRecordingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRecordingTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyReleaseTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyReleaseTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyReleaseTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTaggingTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTaggingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTaggingTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEncodedBy",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEncodedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLyricist",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLyricist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLyricist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyFileType",
+    "OldPrintedName": "AVMetadataID3MetadataKeyFileType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyFileType",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInvolvedPeopleList_v24",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInvolvedPeopleList_v24",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInvolvedPeopleList_v24",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyContentGroupDescription",
+    "OldPrintedName": "AVMetadataID3MetadataKeyContentGroupDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyContentGroupDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTitleDescription",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTitleDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTitleDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySubTitle",
+    "OldPrintedName": "AVMetadataID3MetadataKeySubTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySubTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInitialKey",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInitialKey",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInitialKey",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLanguage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLanguage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLength",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLength",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLength",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMusicianCreditsList",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMusicianCreditsList",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMusicianCreditsList",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMediaType",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMediaType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMediaType",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMood",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMood",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMood",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalAlbumTitle",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalAlbumTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalAlbumTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalFilename",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalFilename",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalFilename",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalLyricist",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalLyricist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalLyricist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalArtist",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalReleaseYear",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalReleaseYear",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalReleaseYear",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyFileOwner",
+    "OldPrintedName": "AVMetadataID3MetadataKeyFileOwner",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyFileOwner",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLeadPerformer",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLeadPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLeadPerformer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyBand",
+    "OldPrintedName": "AVMetadataID3MetadataKeyBand",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyBand",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyConductor",
+    "OldPrintedName": "AVMetadataID3MetadataKeyConductor",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyConductor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyModifiedBy",
+    "OldPrintedName": "AVMetadataID3MetadataKeyModifiedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyModifiedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPartOfASet",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPartOfASet",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPartOfASet",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyProducedNotice",
+    "OldPrintedName": "AVMetadataID3MetadataKeyProducedNotice",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyProducedNotice",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPublisher",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTrackNumber",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTrackNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTrackNumber",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRecordingDates",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRecordingDates",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRecordingDates",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInternetRadioStationName",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInternetRadioStationName",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInternetRadioStationName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInternetRadioStationOwner",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInternetRadioStationOwner",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInternetRadioStationOwner",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySize",
+    "OldPrintedName": "AVMetadataID3MetadataKeySize",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySize",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAlbumSortOrder",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAlbumSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAlbumSortOrder",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPerformerSortOrder",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPerformerSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPerformerSortOrder",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTitleSortOrder",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTitleSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTitleSortOrder",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInternationalStandardRecordingCode",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInternationalStandardRecordingCode",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInternationalStandardRecordingCode",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEncodedWith",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEncodedWith",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEncodedWith",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySetSubtitle",
+    "OldPrintedName": "AVMetadataID3MetadataKeySetSubtitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySetSubtitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyYear",
+    "OldPrintedName": "AVMetadataID3MetadataKeyYear",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyYear",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyUserText",
+    "OldPrintedName": "AVMetadataID3MetadataKeyUserText",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyUserText",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyUniqueFileIdentifier",
+    "OldPrintedName": "AVMetadataID3MetadataKeyUniqueFileIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyUniqueFileIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTermsOfUse",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTermsOfUse",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTermsOfUse",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyUnsynchronizedLyric",
+    "OldPrintedName": "AVMetadataID3MetadataKeyUnsynchronizedLyric",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyUnsynchronizedLyric",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCommercialInformation",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCommercialInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCommercialInformation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCopyrightInformation",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCopyrightInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCopyrightInformation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialAudioFileWebpage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialAudioFileWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialAudioFileWebpage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialArtistWebpage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialArtistWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialArtistWebpage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialAudioSourceWebpage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialAudioSourceWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialAudioSourceWebpage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialInternetRadioStationHomepage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialInternetRadioStationHomepage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialInternetRadioStationHomepage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPayment",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPayment",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPayment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialPublisherWebpage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialPublisherWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialPublisherWebpage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyUserURL",
+    "OldPrintedName": "AVMetadataID3MetadataKeyUserURL",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyUserURL",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIcyMetadataKeyStreamTitle",
+    "OldPrintedName": "AVMetadataIcyMetadataKeyStreamTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "icyMetadataKeyStreamTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIcyMetadataKeyStreamURL",
+    "OldPrintedName": "AVMetadataIcyMetadataKeyStreamURL",
+    "OldTypeName": "",
+    "NewPrintedName": "icyMetadataKeyStreamURL",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceCommon",
+    "OldPrintedName": "AVMetadataKeySpaceCommon",
+    "OldTypeName": "",
+    "NewPrintedName": "common",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceQuickTimeUserData",
+    "OldPrintedName": "AVMetadataKeySpaceQuickTimeUserData",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserData",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceISOUserData",
+    "OldPrintedName": "AVMetadataKeySpaceISOUserData",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserData",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceQuickTimeMetadata",
+    "OldPrintedName": "AVMetadataKeySpaceQuickTimeMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadata",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceiTunes",
+    "OldPrintedName": "AVMetadataKeySpaceiTunes",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunes",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceID3",
+    "OldPrintedName": "AVMetadataKeySpaceID3",
+    "OldTypeName": "",
+    "NewPrintedName": "id3",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceIcy",
+    "OldPrintedName": "AVMetadataKeySpaceIcy",
+    "OldTypeName": "",
+    "NewPrintedName": "icy",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceHLSDateRange",
+    "OldPrintedName": "AVMetadataKeySpaceHLSDateRange",
+    "OldTypeName": "",
+    "NewPrintedName": "hlsDateRange",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeFace",
+    "OldPrintedName": "AVMetadataObjectTypeFace",
+    "OldTypeName": "",
+    "NewPrintedName": "face",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeUPCECode",
+    "OldPrintedName": "AVMetadataObjectTypeUPCECode",
+    "OldTypeName": "",
+    "NewPrintedName": "upce",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeCode39Code",
+    "OldPrintedName": "AVMetadataObjectTypeCode39Code",
+    "OldTypeName": "",
+    "NewPrintedName": "code39",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeCode39Mod43Code",
+    "OldPrintedName": "AVMetadataObjectTypeCode39Mod43Code",
+    "OldTypeName": "",
+    "NewPrintedName": "code39Mod43",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeEAN13Code",
+    "OldPrintedName": "AVMetadataObjectTypeEAN13Code",
+    "OldTypeName": "",
+    "NewPrintedName": "ean13",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeEAN8Code",
+    "OldPrintedName": "AVMetadataObjectTypeEAN8Code",
+    "OldTypeName": "",
+    "NewPrintedName": "ean8",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeCode93Code",
+    "OldPrintedName": "AVMetadataObjectTypeCode93Code",
+    "OldTypeName": "",
+    "NewPrintedName": "code93",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeCode128Code",
+    "OldPrintedName": "AVMetadataObjectTypeCode128Code",
+    "OldTypeName": "",
+    "NewPrintedName": "code128",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypePDF417Code",
+    "OldPrintedName": "AVMetadataObjectTypePDF417Code",
+    "OldTypeName": "",
+    "NewPrintedName": "pdf417",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeQRCode",
+    "OldPrintedName": "AVMetadataObjectTypeQRCode",
+    "OldTypeName": "",
+    "NewPrintedName": "qr",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeAztecCode",
+    "OldPrintedName": "AVMetadataObjectTypeAztecCode",
+    "OldTypeName": "",
+    "NewPrintedName": "aztec",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeInterleaved2of5Code",
+    "OldPrintedName": "AVMetadataObjectTypeInterleaved2of5Code",
+    "OldTypeName": "",
+    "NewPrintedName": "interleaved2of5",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeITF14Code",
+    "OldPrintedName": "AVMetadataObjectTypeITF14Code",
+    "OldTypeName": "",
+    "NewPrintedName": "itf14",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeDataMatrixCode",
+    "OldPrintedName": "AVMetadataObjectTypeDataMatrixCode",
+    "OldTypeName": "",
+    "NewPrintedName": "dataMatrix",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset640x480",
+    "OldPrintedName": "AVOutputSettingsPreset640x480",
+    "OldTypeName": "",
+    "NewPrintedName": "preset640x480",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset960x540",
+    "OldPrintedName": "AVOutputSettingsPreset960x540",
+    "OldTypeName": "",
+    "NewPrintedName": "preset960x540",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset1280x720",
+    "OldPrintedName": "AVOutputSettingsPreset1280x720",
+    "OldTypeName": "",
+    "NewPrintedName": "preset1280x720",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset1920x1080",
+    "OldPrintedName": "AVOutputSettingsPreset1920x1080",
+    "OldTypeName": "",
+    "NewPrintedName": "preset1920x1080",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset3840x2160",
+    "OldPrintedName": "AVOutputSettingsPreset3840x2160",
+    "OldTypeName": "",
+    "NewPrintedName": "preset3840x2160",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerWaitingToMinimizeStallsReason",
+    "OldPrintedName": "AVPlayerWaitingToMinimizeStallsReason",
+    "OldTypeName": "",
+    "NewPrintedName": "toMinimizeStalls",
+    "NewTypeName": "AVPlayer.WaitingReason"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerWaitingWhileEvaluatingBufferingRateReason",
+    "OldPrintedName": "AVPlayerWaitingWhileEvaluatingBufferingRateReason",
+    "OldTypeName": "",
+    "NewPrintedName": "evaluatingBufferingRate",
+    "NewTypeName": "AVPlayer.WaitingReason"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerWaitingWithNoItemToPlayReason",
+    "OldPrintedName": "AVPlayerWaitingWithNoItemToPlayReason",
+    "OldTypeName": "",
+    "NewPrintedName": "noItemToPlay",
+    "NewTypeName": "AVPlayer.WaitingReason"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerItemLegibleOutputTextStylingResolutionDefault",
+    "OldPrintedName": "AVPlayerItemLegibleOutputTextStylingResolutionDefault",
+    "OldTypeName": "",
+    "NewPrintedName": "default",
+    "NewTypeName": "AVPlayerItemLegibleOutputTextStylingResolution"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerItemLegibleOutputTextStylingResolutionSourceAndRulesOnly",
+    "OldPrintedName": "AVPlayerItemLegibleOutputTextStylingResolutionSourceAndRulesOnly",
+    "OldTypeName": "",
+    "NewPrintedName": "sourceAndRulesOnly",
+    "NewTypeName": "AVPlayerItemLegibleOutputTextStylingResolution"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCTPerformanceMetric_WallClockTime",
+    "OldPrintedName": "XCTPerformanceMetric_WallClockTime",
+    "OldTypeName": "",
+    "NewPrintedName": "wallClockTime",
+    "NewTypeName": "XCTPerformanceMetric"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCTWaiterResult",
+    "OldPrintedName": "XCTWaiterResult",
+    "OldTypeName": "",
+    "NewPrintedName": "Result",
+    "NewTypeName": "XCTWaiter"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCTestErrorCode",
+    "OldPrintedName": "XCTestErrorCode",
+    "OldTypeName": "",
+    "NewPrintedName": "Code",
+    "NewTypeName": "XCTestError"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIDeviceButton",
+    "OldPrintedName": "XCUIDeviceButton",
+    "OldTypeName": "",
+    "NewPrintedName": "Button",
+    "NewTypeName": "XCUIDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIElementType",
+    "OldPrintedName": "XCUIElementType",
+    "OldTypeName": "",
+    "NewPrintedName": "Type",
+    "NewTypeName": "XCUIElement"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIUserInterfaceSizeClass",
+    "OldPrintedName": "XCUIUserInterfaceSizeClass",
+    "OldTypeName": "",
+    "NewPrintedName": "SizeClass",
+    "NewTypeName": "XCUIElement"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags",
+    "OldPrintedName": "XCUIKeyModifierFlags",
+    "OldTypeName": "",
+    "NewPrintedName": "KeyModifierFlags",
+    "NewTypeName": "XCUIElement"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierCapsLock",
+    "OldPrintedName": "capsLock",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "capsLock",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierShift",
+    "OldPrintedName": "shift",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "shift",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierControl",
+    "OldPrintedName": "control",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "control",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierOption",
+    "OldPrintedName": "option",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "option",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierCommand",
+    "OldPrintedName": "command",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "command",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierAlphaShift",
+    "OldPrintedName": "alphaShift",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "alphaShift",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierAlternate",
+    "OldPrintedName": "alternate",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "alternate",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyDelete",
+    "OldPrintedName": "XCUIKeyboardKeyDelete",
+    "OldTypeName": "",
+    "NewPrintedName": "delete",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyReturn",
+    "OldPrintedName": "XCUIKeyboardKeyReturn",
+    "OldTypeName": "",
+    "NewPrintedName": "return",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyEnter",
+    "OldPrintedName": "XCUIKeyboardKeyEnter",
+    "OldTypeName": "",
+    "NewPrintedName": "enter",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyTab",
+    "OldPrintedName": "XCUIKeyboardKeyTab",
+    "OldTypeName": "",
+    "NewPrintedName": "tab",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeySpace",
+    "OldPrintedName": "XCUIKeyboardKeySpace",
+    "OldTypeName": "",
+    "NewPrintedName": "space",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyEscape",
+    "OldPrintedName": "XCUIKeyboardKeyEscape",
+    "OldTypeName": "",
+    "NewPrintedName": "escape",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyUpArrow",
+    "OldPrintedName": "XCUIKeyboardKeyUpArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "upArrow",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyDownArrow",
+    "OldPrintedName": "XCUIKeyboardKeyDownArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "downArrow",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyLeftArrow",
+    "OldPrintedName": "XCUIKeyboardKeyLeftArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "leftArrow",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightArrow",
+    "OldPrintedName": "XCUIKeyboardKeyRightArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "rightArrow",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF1",
+    "OldPrintedName": "XCUIKeyboardKeyF1",
+    "OldTypeName": "",
+    "NewPrintedName": "F1",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF2",
+    "OldPrintedName": "XCUIKeyboardKeyF2",
+    "OldTypeName": "",
+    "NewPrintedName": "F2",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF3",
+    "OldPrintedName": "XCUIKeyboardKeyF3",
+    "OldTypeName": "",
+    "NewPrintedName": "F3",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF4",
+    "OldPrintedName": "XCUIKeyboardKeyF4",
+    "OldTypeName": "",
+    "NewPrintedName": "F4",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF5",
+    "OldPrintedName": "XCUIKeyboardKeyF5",
+    "OldTypeName": "",
+    "NewPrintedName": "F5",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF6",
+    "OldPrintedName": "XCUIKeyboardKeyF6",
+    "OldTypeName": "",
+    "NewPrintedName": "F6",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF7",
+    "OldPrintedName": "XCUIKeyboardKeyF7",
+    "OldTypeName": "",
+    "NewPrintedName": "F7",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF8",
+    "OldPrintedName": "XCUIKeyboardKeyF8",
+    "OldTypeName": "",
+    "NewPrintedName": "F8",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF9",
+    "OldPrintedName": "XCUIKeyboardKeyF9",
+    "OldTypeName": "",
+    "NewPrintedName": "F9",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF10",
+    "OldPrintedName": "XCUIKeyboardKeyF10",
+    "OldTypeName": "",
+    "NewPrintedName": "F10",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF11",
+    "OldPrintedName": "XCUIKeyboardKeyF11",
+    "OldTypeName": "",
+    "NewPrintedName": "F11",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF12",
+    "OldPrintedName": "XCUIKeyboardKeyF12",
+    "OldTypeName": "",
+    "NewPrintedName": "F12",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF13",
+    "OldPrintedName": "XCUIKeyboardKeyF13",
+    "OldTypeName": "",
+    "NewPrintedName": "F13",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF14",
+    "OldPrintedName": "XCUIKeyboardKeyF14",
+    "OldTypeName": "",
+    "NewPrintedName": "F14",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF15",
+    "OldPrintedName": "XCUIKeyboardKeyF15",
+    "OldTypeName": "",
+    "NewPrintedName": "F15",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF16",
+    "OldPrintedName": "XCUIKeyboardKeyF16",
+    "OldTypeName": "",
+    "NewPrintedName": "F16",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF17",
+    "OldPrintedName": "XCUIKeyboardKeyF17",
+    "OldTypeName": "",
+    "NewPrintedName": "F17",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF18",
+    "OldPrintedName": "XCUIKeyboardKeyF18",
+    "OldTypeName": "",
+    "NewPrintedName": "F18",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF19",
+    "OldPrintedName": "XCUIKeyboardKeyF19",
+    "OldTypeName": "",
+    "NewPrintedName": "F19",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyForwardDelete",
+    "OldPrintedName": "XCUIKeyboardKeyForwardDelete",
+    "OldTypeName": "",
+    "NewPrintedName": "forwardDelete",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyHome",
+    "OldPrintedName": "XCUIKeyboardKeyHome",
+    "OldTypeName": "",
+    "NewPrintedName": "home",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyEnd",
+    "OldPrintedName": "XCUIKeyboardKeyEnd",
+    "OldTypeName": "",
+    "NewPrintedName": "end",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyPageUp",
+    "OldPrintedName": "XCUIKeyboardKeyPageUp",
+    "OldTypeName": "",
+    "NewPrintedName": "pageUp",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyPageDown",
+    "OldPrintedName": "XCUIKeyboardKeyPageDown",
+    "OldTypeName": "",
+    "NewPrintedName": "pageDown",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyClear",
+    "OldPrintedName": "XCUIKeyboardKeyClear",
+    "OldTypeName": "",
+    "NewPrintedName": "clear",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyHelp",
+    "OldPrintedName": "XCUIKeyboardKeyHelp",
+    "OldTypeName": "",
+    "NewPrintedName": "help",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyCapsLock",
+    "OldPrintedName": "XCUIKeyboardKeyCapsLock",
+    "OldTypeName": "",
+    "NewPrintedName": "capsLock",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyShift",
+    "OldPrintedName": "XCUIKeyboardKeyShift",
+    "OldTypeName": "",
+    "NewPrintedName": "shift",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyControl",
+    "OldPrintedName": "XCUIKeyboardKeyControl",
+    "OldTypeName": "",
+    "NewPrintedName": "control",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyOption",
+    "OldPrintedName": "XCUIKeyboardKeyOption",
+    "OldTypeName": "",
+    "NewPrintedName": "option",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyCommand",
+    "OldPrintedName": "XCUIKeyboardKeyCommand",
+    "OldTypeName": "",
+    "NewPrintedName": "command",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightShift",
+    "OldPrintedName": "XCUIKeyboardKeyRightShift",
+    "OldTypeName": "",
+    "NewPrintedName": "rightShift",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightControl",
+    "OldPrintedName": "XCUIKeyboardKeyRightControl",
+    "OldTypeName": "",
+    "NewPrintedName": "rightControl",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightOption",
+    "OldPrintedName": "XCUIKeyboardKeyRightOption",
+    "OldTypeName": "",
+    "NewPrintedName": "rightOption",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightCommand",
+    "OldPrintedName": "XCUIKeyboardKeyRightCommand",
+    "OldTypeName": "",
+    "NewPrintedName": "rightCommand",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeySecondaryFn",
+    "OldPrintedName": "XCUIKeyboardKeySecondaryFn",
+    "OldTypeName": "",
+    "NewPrintedName": "secondaryFn",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSAttributedString(im)enumerateAttributesInRange:options:usingBlock:",
+    "Index": 3
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSAttributedString(im)enumerateAttribute:inRange:options:usingBlock:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateReadingItemAtURL:options:error:byAccessor:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateWritingItemAtURL:options:error:byAccessor:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateReadingItemAtURL:options:writingItemAtURL:options:error:byAccessor:",
+    "Index": 6
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateWritingItemAtURL:options:writingItemAtURL:options:error:byAccessor:",
+    "Index": 6
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)prepareForReadingItemsAtURLs:options:writingItemsAtURLs:options:error:byAccessor:",
+    "Index": 6
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:unit:scheme:options:usingBlock:",
+    "Index": 5
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:scheme:options:usingBlock:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSLinguisticTagger(cm)enumerateTagsForString:range:unit:scheme:options:orthography:usingBlock:",
+    "Index": 7
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSString(im)enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:",
+    "Index": 5
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(pl)NSXPCProxyCreating(im)synchronousRemoteObjectProxyWithErrorHandler:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(pl)UIDataSourceTranslating(im)performUsingPresentationValues:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(pl)UICollectionViewDropPlaceholderContext(im)commitInsertionWithDataSourceUpdates:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(pl)UIDataSourceTranslating(im)performUsingPresentationValues:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(pl)UIDataSourceTranslating(im)performUsingPresentationValues:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(pl)UITableViewDropPlaceholderContext(im)commitInsertionWithDataSourceUpdates:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:@F@CGPathApplyWithBlock",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)XCTestCase(im)measureBlock:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)XCTestCase(im)measureMetrics:automaticallyStartMeasuring:forBlock:",
+    "Index": 3
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPMusicPlayerController(im)setQueueWithStoreIDs:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPMusicPlayerController(im)setQueueWithDescriptor:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSCNNBinaryKernel(im)encodeToCommandBuffer:primaryImage:secondaryImage:destinationImage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSCNNBinaryKernel(im)encodeToCommandBuffer:primaryImage:secondaryImage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSImage(im)readBytes:dataLayout:imageIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSImage(im)writeBytes:dataLayout:imageIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSNNGraph(im)encodeToCommandBuffer:sourceImages:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:8Dispatch0A4DataV9copyBytesys29UnsafeMutableRawBufferPointerV2to_Si5counttF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:8Dispatch0A4DataV9copyBytesys29UnsafeMutableRawBufferPointerV2to_s14CountableRangeVySiG4fromtF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NFCNDEFReaderSessionDelegate(im)readerSession:didInvalidateWithError:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NFCNDEFReaderSessionDelegate(im)readerSession:didDetectNDEFs:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NFCReaderSessionDelegate(im)readerSession:didDetectTags:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NFCReaderSessionDelegate(im)readerSession:didInvalidateWithError:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFDocument(im)writeToFile:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFDocument(im)writeToFile:withOptions:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFDocument(im)writeToURL:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFDocument(im)writeToURL:withOptions:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFDocument(im)findString:withOptions:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFPage(im)transformForBox:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFPage(im)selectionForRect:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFPage(im)selectionForRange:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFSelection(im)addSelection:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFSelection(im)addSelections:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFSelection(im)extendSelectionAtEnd:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFSelection(im)extendSelectionAtStart:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFSelection(im)drawForPage:active:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFView(im)goToPage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFView(im)goToDestination:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFView(im)goToSelection:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFView(im)goToRect:onPage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFView(im)areaOfInterestForMouse:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFView(im)areaOfInterestForPoint:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFView(im)convertPoint:toPage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFView(im)convertRect:toPage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFView(im)convertPoint:fromPage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFView(im)convertRect:fromPage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIGestureRecognizerDelegate(im)gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIGestureRecognizerDelegate(im)gestureRecognizer:shouldRequireFailureOfGestureRecognizer:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIGestureRecognizerDelegate(im)gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIGestureRecognizerDelegate(im)gestureRecognizer:shouldReceiveTouch:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIGestureRecognizerDelegate(im)gestureRecognizer:shouldReceivePress:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)HMEventTrigger(cm)predicateForEvaluatingTriggerOccurringBeforeSignificantEvent:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)HMEventTrigger(cm)predicateForEvaluatingTriggerOccurringAfterSignificantEvent:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSAttributedString(im)attributesAtIndex:effectiveRange:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSAttributedString(im)attribute:atIndex:effectiveRange:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSLinguisticTagger(cm)availableTagSchemesForLanguage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSMutableAttributedString(im)readFromURL:options:documentAttributes:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSMutableAttributedString(im)readFromData:options:documentAttributes:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSTextCheckingResult(im)rangeAtIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSTextCheckingResult(im)rangeWithName:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSURLSessionTaskDelegate(im)URLSession:taskIsWaitingForConnectivity:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6insertys5RangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6insertys11ClosedRangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6removeys5RangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6removeys11ClosedRangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6insertSb8inserted_s7UnicodeO6ScalarV17memberAfterInserttAIF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6removes7UnicodeO6ScalarVSgAHF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation19PropertyListDecoderC6decodexxm_AA4DataV4fromtKs9DecodableRzlF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation19PropertyListDecoderC6decodexxm_AA4DataV4fromSo0bC13SerializationC0bC6FormatOz6formattKs9DecodableRzlF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLArgumentEncoder(im)setArgumentBuffer:offset:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)newCaptureScopeWithDevice:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)newCaptureScopeWithCommandQueue:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)startCaptureWithDevice:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)startCaptureWithCommandQueue:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)startCaptureWithScope:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLComputeCommandEncoder(im)setSamplerState:atIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLDevice(im)newTextureWithDescriptor:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLFunction(im)newArgumentEncoderWithBufferIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLFunction(im)newArgumentEncoderWithBufferIndex:reflection:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexSamplerState:atIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentSamplerState:atIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLTexture(im)newTextureViewWithPixelFormat:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MSConversation(im)sendMessage:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MSConversation(im)sendSticker:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIAccessibilityContainerDataTable(im)accessibilityHeaderElementsForRow:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIAccessibilityContainerDataTable(im)accessibilityHeaderElementsForColumn:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UICollectionViewDragDelegate(im)collectionView:dragPreviewParametersForItemAtIndexPath:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UICollectionViewDragDelegate(im)collectionView:dragSessionWillBegin:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UICollectionViewDragDelegate(im)collectionView:dragSessionDidEnd:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UICollectionViewDropCoordinator(im)dropItem:toItemAtIndexPath:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UICollectionViewDropCoordinator(im)dropItem:toTarget:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UICollectionViewDropDelegate(im)collectionView:performDropWithCoordinator:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UICollectionViewDropDelegate(im)collectionView:canHandleDropSession:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UICollectionViewDropDelegate(im)collectionView:dropSessionDidEnter:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UICollectionViewDropDelegate(im)collectionView:dropSessionDidExit:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UICollectionViewDropDelegate(im)collectionView:dropSessionDidEnd:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDocumentBrowserViewControllerDelegate(im)documentBrowser:didPickDocumentURLs:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDocumentBrowserViewControllerDelegate(im)documentBrowser:didRequestDocumentCreationWithHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDocumentBrowserViewControllerDelegate(im)documentBrowser:applicationActivitiesForDocumentURLs:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDocumentBrowserViewControllerDelegate(im)documentBrowser:willPresentActivityViewController:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDocumentBrowserViewControllerDelegate(im)documentBrowser:commitDocumentURLPreview:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDragInteractionDelegate(im)dragInteraction:itemsForBeginningSession:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDragInteractionDelegate(im)dragInteraction:sessionWillBegin:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDragInteractionDelegate(im)dragInteraction:sessionAllowsMoveOperation:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDragInteractionDelegate(im)dragInteraction:sessionIsRestrictedToDraggingApplication:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDragInteractionDelegate(im)dragInteraction:prefersFullSizePreviewsForSession:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDragInteractionDelegate(im)dragInteraction:sessionDidMove:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDragInteractionDelegate(im)dragInteraction:session:willEndWithOperation:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDragInteractionDelegate(im)dragInteraction:session:didEndWithOperation:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDragInteractionDelegate(im)dragInteraction:sessionDidTransferItems:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDropInteractionDelegate(im)dropInteraction:canHandleSession:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDropInteractionDelegate(im)dropInteraction:sessionDidEnter:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDropInteractionDelegate(im)dropInteraction:sessionDidUpdate:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDropInteractionDelegate(im)dropInteraction:sessionDidExit:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDropInteractionDelegate(im)dropInteraction:performDrop:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDropInteractionDelegate(im)dropInteraction:concludeDrop:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIDropInteractionDelegate(im)dropInteraction:sessionDidEnd:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledFontForFont:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledFontForFont:maximumPointSize:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledFontForFont:compatibleWithTraitCollection:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledFontForFont:maximumPointSize:compatibleWithTraitCollection:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledValueForValue:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledValueForValue:compatibleWithTraitCollection:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIPasteboard(im)setObjects:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIPickerViewAccessibilityDelegate(im)pickerView:accessibilityAttributedLabelForComponent:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIPickerViewAccessibilityDelegate(im)pickerView:accessibilityAttributedHintForComponent:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDelegate(im)tableView:leadingSwipeActionsConfigurationForRowAtIndexPath:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDelegate(im)tableView:trailingSwipeActionsConfigurationForRowAtIndexPath:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDelegate(im)tableView:leadingSwipeActionsConfigurationForRowAtIndexPath:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDelegate(im)tableView:trailingSwipeActionsConfigurationForRowAtIndexPath:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDragDelegate(im)tableView:dragPreviewParametersForRowAtIndexPath:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDragDelegate(im)tableView:dragSessionWillBegin:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDragDelegate(im)tableView:dragSessionDidEnd:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDropCoordinator(im)dropItem:toRowAtIndexPath:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDropCoordinator(im)dropItem:toTarget:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDropDelegate(im)tableView:performDropWithCoordinator:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDropDelegate(im)tableView:canHandleDropSession:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDropDelegate(im)tableView:dropSessionDidEnter:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDropDelegate(im)tableView:dropSessionDidExit:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITableViewDropDelegate(im)tableView:dropSessionDidEnd:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextDragDelegate(im)textDraggableView:itemsForDrag:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextDragDelegate(im)textDraggableView:dragSessionWillBegin:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextDropDelegate(im)textDroppableView:willBecomeEditableForDrop:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextDropDelegate(im)textDroppableView:proposalForDrop:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextDropDelegate(im)textDroppableView:willPerformDrop:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextDropDelegate(im)textDroppableView:previewForDroppingAllItemsWithDefault:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextDropDelegate(im)textDroppableView:dropSessionDidEnter:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextDropDelegate(im)textDroppableView:dropSessionDidUpdate:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextDropDelegate(im)textDroppableView:dropSessionDidExit:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextDropDelegate(im)textDroppableView:dropSessionDidEnd:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextPasteDelegate(im)textPasteConfigurationSupporting:transformPasteItem:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextPasteItem(im)setStringResult:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextPasteItem(im)setAttributedStringResult:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UITextPasteItem(im)setAttachmentResult:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NEHotspotConfigurationManager(im)removeConfigurationForSSID:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NEHotspotConfigurationManager(im)removeConfigurationForHS20DomainName:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CLGeocoder(im)geocodePostalAddress:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CIContext(im)startTaskToRender:toDestination:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CIContext(im)startTaskToClear:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)copyFloatArrayInto:maxCount:atTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)copyDoubleArrayInto:maxCount:atTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)resetWithFloatArray:count:atTimes:count:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)resetWithDoubleArray:count:atTimes:count:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)copyFloatArrayInto:maxCount:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)copyDoubleArrayInto:maxCount:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLTexture(im)writeToURL:level:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)WKURLSchemeHandler(im)webView:startURLSchemeTask:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)WKURLSchemeHandler(im)webView:stopURLSchemeTask:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)WKURLSchemeTask(im)didReceiveResponse:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)WKURLSchemeTask(im)didReceiveData:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAsset(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAsset(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)AVAssetDownloadDelegate(im)URLSession:aggregateAssetDownloadTask:willDownloadToURL:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)AVAssetDownloadDelegate(im)URLSession:aggregateAssetDownloadTask:didCompleteForMediaSelection:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAudioNode(im)nameForInputBus:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAudioNode(im)nameForOutputBus:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVCaptureDevice(cm)defaultDeviceWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVCaptureDevice(im)deviceWhiteBalanceGainsForChromaticityValues:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVCaptureDevice(im)deviceWhiteBalanceGainsForTemperatureAndTintValues:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)AVCapturePhotoCaptureDelegate(im)captureOutput:willBeginCaptureForResolvedSettings:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)AVCapturePhotoCaptureDelegate(im)captureOutput:willCapturePhotoForResolvedSettings:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)AVCapturePhotoCaptureDelegate(im)captureOutput:didCapturePhotoForResolvedSettings:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)AVCapturePhotoCaptureDelegate(im)captureOutput:didFinishProcessingPhoto:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVComposition(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVComposition(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMetadataItem(cm)metadataItemsFromArray:filteredByIdentifier:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMutableComposition(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMutableComposition(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVPlayerItem(im)seekToTime:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVPlayerItem(im)seekToDate:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)SCNAnimatable(im)removeAnimationForKey:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)SCNAnimatable(im)removeAnimationForKey:blendOutDuration:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)SCNAnimatable(im)removeAnimationForKey:fadeOutDuration:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNCameraController(im)dollyZoomToTarget:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)convertVector:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)convertVector:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertPosition:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertPosition:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertVector:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertVector:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertTransform:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertTransform:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdLookAt:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)lookAt:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)ARSCNViewDelegate(im)renderer:nodeForAnchor:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)ARSKViewDelegate(im)view:nodeForAnchor:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)ARSessionDelegate(im)session:didUpdateFrame:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)ARSessionDelegate(im)session:didAddAnchors:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)ARSessionDelegate(im)session:didUpdateAnchors:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)ARSessionDelegate(im)session:didRemoveAnchors:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)ARSessionObserver(im)session:didFailWithError:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)ARSessionObserver(im)session:cameraDidChangeTrackingState:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:enforceOrder:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCTWaiter(cm)waitForExpectations:timeout:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCTWaiter(cm)waitForExpectations:timeout:enforceOrder:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCUIElementQuery(im)elementAtIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCUIElementQuery(im)elementBoundByIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)PKPaymentAuthorizationViewControllerDelegate(im)paymentAuthorizationViewController:didSelectShippingMethod:handler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)PKPaymentAuthorizationViewControllerDelegate(im)paymentAuthorizationViewController:didSelectPaymentMethod:handler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CXCallController(im)requestTransactionWithActions:completion:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CXCallController(im)requestTransactionWithAction:completion:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSCoreDataCoreSpotlightDelegate(im)searchableIndex:reindexAllSearchableItemsWithAcknowledgementHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)fetchHistoryAfterDate:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)fetchHistoryAfterToken:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)fetchHistoryAfterTransaction:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)deleteHistoryBeforeDate:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)deleteHistoryBeforeToken:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)deleteHistoryBeforeTransaction:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCVPixelBuffer:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCVPixelBuffer:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCGImage:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCGImage:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCIImage:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCIImage:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onImageURL:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onImageURL:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onImageData:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onImageData:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)HKWorkoutSessionDelegate(im)workoutSession:didFailWithError:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)HKWorkoutSessionDelegate(im)workoutSession:didGenerateEvent:"
+  }
 ]
\ No newline at end of file
diff --git a/lib/Migrator/macos.json b/lib/Migrator/macos.json
index 32960f8..557573d 100644
--- a/lib/Migrator/macos.json
+++ b/lib/Migrator/macos.json
@@ -1,2 +1,38302 @@
 [
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSArray(cm)arrayWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ScriptingBridge"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "s:FVSC24__Reply__act_get_state_tcFT4HeadVSC17mach_msg_header_t3NDRVSC12NDR_record_t7RetCodeVs5Int3212old_stateCntVs6UInt329old_stateTS3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3___S_",
+    "LeftComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "RightUsr": "",
+    "RightComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "6",
+    "LeftUsr": "s:FVSC41__Reply__exception_raise_state_identity_tcFT4HeadVSC17mach_msg_header_t3NDRVSC12NDR_record_t7RetCodeVs5Int326flavorS2_12new_stateCntVs6UInt329new_stateTS3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3___S_",
+    "LeftComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "RightUsr": "",
+    "RightComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "6",
+    "LeftUsr": "s:FVSC32__Reply__exception_raise_state_tcFT4HeadVSC17mach_msg_header_t3NDRVSC12NDR_record_t7RetCodeVs5Int326flavorS2_12new_stateCntVs6UInt329new_stateTS3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3___S_",
+    "LeftComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "RightUsr": "",
+    "RightComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "s:FVSC25__Reply__task_get_state_tcFT4HeadVSC17mach_msg_header_t3NDRVSC12NDR_record_t7RetCodeVs5Int3212old_stateCntVs6UInt329old_stateTS3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3___S_",
+    "LeftComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "RightUsr": "",
+    "RightComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "s:FVSC27__Reply__thread_get_state_tcFT4HeadVSC17mach_msg_header_t3NDRVSC12NDR_record_t7RetCodeVs5Int3212old_stateCntVs6UInt329old_stateTS3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3___S_",
+    "LeftComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "RightUsr": "",
+    "RightComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "s:FVSC26__Request__act_set_state_tcFT4HeadVSC17mach_msg_header_t3NDRVSC12NDR_record_t6flavorVs5Int3212new_stateCntVs6UInt329new_stateTS3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3___S_",
+    "LeftComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "RightUsr": "",
+    "RightComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "11",
+    "LeftUsr": "s:FVSC43__Request__exception_raise_state_identity_tcFT4HeadVSC17mach_msg_header_t9msgh_bodyVSC15mach_msg_body_t6threadVSC26mach_msg_port_descriptor_t4taskS2_3NDRVSC12NDR_record_t9exceptionVs5Int327codeCntVs6UInt324codeTS4_S4__6flavorS4_12old_stateCntS5_9old_stateTS5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5_S5___S_",
+    "LeftComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "RightUsr": "",
+    "RightComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "8",
+    "LeftUsr": "s:FVSC34__Request__exception_raise_state_tcFT4HeadVSC17mach_msg_header_t3NDRVSC12NDR_record_t9exceptionVs5Int327codeCntVs6UInt324codeTS2_S2__6flavorS2_12old_stateCntS3_9old_stateTS3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3___S_",
+    "LeftComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "RightUsr": "",
+    "RightComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "s:FVSC27__Request__task_set_state_tcFT4HeadVSC17mach_msg_header_t3NDRVSC12NDR_record_t6flavorVs5Int3212new_stateCntVs6UInt329new_stateTS3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3___S_",
+    "LeftComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "RightUsr": "",
+    "RightComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "s:FVSC34__Request__thread_create_running_tcFT4HeadVSC17mach_msg_header_t3NDRVSC12NDR_record_t6flavorVs5Int3212new_stateCntVs6UInt329new_stateTS3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3___S_",
+    "LeftComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "RightUsr": "",
+    "RightComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "s:FVSC29__Request__thread_set_state_tcFT4HeadVSC17mach_msg_header_t3NDRVSC12NDR_record_t6flavorVs5Int3212new_stateCntVs6UInt329new_stateTS3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3_S3___S_",
+    "LeftComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "RightUsr": "",
+    "RightComment": "(natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t, natural_t)",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FVSC13x86_state_hdrcFT6flavorVs5Int325countS0__S_",
+    "LeftComment": "Int32",
+    "RightUsr": "",
+    "RightComment": "UInt32",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "s:FVSC13x86_state_hdrcFT6flavorVs5Int325countS0__S_",
+    "LeftComment": "Int32",
+    "RightUsr": "",
+    "RightComment": "UInt32",
+    "ModuleName": "Darwin"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FE8DispatchCSo10DispatchIOcFT4typeOES_S0_10StreamType4pathGSPVs4Int8_5oflagVs5Int324modeVs6UInt165queueCSo13DispatchQueue14cleanupHandlerFS3_T__S0_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Dispatch"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "s:FE8DispatchCSo13DispatchQueue11setSpecificurFT3keyGCS_19DispatchSpecificKeyx_5valuex_T_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Dispatch"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)IKImageBrowserView(im)initWithFrame:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFAction(im)type",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "type",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFActionRemoteGoTo(im)initWithPageIndex:atPoint:fileURL:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFActionURL(im)initWithURL:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)PDFAnnotation(im)setValue:forAnnotationKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "PDFAnnotationKey",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)PDFAnnotation(im)setBoolean:forAnnotationKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "PDFAnnotationKey",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)PDFAnnotation(im)setRect:forAnnotationKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "PDFAnnotationKey",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)PDFAnnotation(im)valueForAnnotationKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "PDFAnnotationKey",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)PDFAnnotation(im)removeValueForAnnotationKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "PDFAnnotationKey",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFAnnotationLine(im)startLineStyle",
+    "LeftComment": "startStyle()",
+    "RightUsr": "",
+    "RightComment": "startLineStyle()",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFAnnotationLine(im)endLineStyle",
+    "LeftComment": "endStyle()",
+    "RightUsr": "",
+    "RightComment": "endLineStyle()",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FOSC17PDFAreaOfInterestcFT8rawValueSi_GSqS__",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)PDFDocument(im)writeToFile:withOptions:",
+    "LeftComment": "AnyHashable",
+    "RightUsr": "",
+    "RightComment": "PDFDocumentWriteOption",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)PDFDocument(im)writeToURL:withOptions:",
+    "LeftComment": "AnyHashable",
+    "RightUsr": "",
+    "RightComment": "PDFDocumentWriteOption",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)PDFDocument(im)findString:withOptions:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "NSString.CompareOptions",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFDocument(im)findString:withOptions:",
+    "LeftComment": "findString(_:withOptions:)",
+    "RightUsr": "",
+    "RightComment": "findString(_:with:)",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)PDFDocument(im)beginFindString:withOptions:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "NSString.CompareOptions",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFDocument(im)beginFindString:withOptions:",
+    "LeftComment": "beginFindString(_:withOptions:)",
+    "RightUsr": "",
+    "RightComment": "beginFindString(_:with:)",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)PDFDocument(im)beginFindStrings:withOptions:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "NSString.CompareOptions",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFDocument(im)beginFindStrings:withOptions:",
+    "LeftComment": "beginFind(_:withOptions:)",
+    "RightUsr": "",
+    "RightComment": "beginFind(_:with:)",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)PDFDocument(im)findString:fromSelection:withOptions:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "NSString.CompareOptions",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFDocument(im)findString:fromSelection:withOptions:",
+    "LeftComment": "findString(_:from:withOptions:)",
+    "RightUsr": "",
+    "RightComment": "findString(_:from:with:)",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFThumbnailView(im)selectedPages",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "selectedPages",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFView(im)canGoToFirstPage",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "canGoToFirstPage",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFView(im)canGoToLastPage",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "canGoToLastPage",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFView(im)canGoToNextPage",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "canGoToNextPage",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFView(im)canGoToPreviousPage",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "canGoToPreviousPage",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFView(im)canGoBack",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "canGoBack",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFView(im)canGoForward",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "canGoForward",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFView(im)canZoomIn",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "canZoomIn",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFView(im)canZoomOut",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "canZoomOut",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PDFView(im)visiblePages",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "visiblePages",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)NSMenuDelegate(im)menuHasKeyEquivalent:forEvent:target:action:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)NSMenuDelegate(im)menuHasKeyEquivalent:forEvent:target:action:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "Quartz"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "SafariServices"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "SafariServices"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameController"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "GameController"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CALayer(im)setNeedsDisplayInRect:",
+    "LeftComment": "setNeedsDisplayIn(_:)",
+    "RightUsr": "",
+    "RightComment": "setNeedsDisplay(_:)",
+    "ModuleName": "QuartzCore"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)CAMediaTimingFunction(im)getControlPointAtIndex:values:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "QuartzCore"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FE8SceneKitVSC13CATransform3DcFV4simd8float4x4S0_",
+    "LeftComment": "float4x4",
+    "RightUsr": "",
+    "RightComment": "float4x4",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FE8SceneKitVSC13CATransform3DcFV4simd9double4x4S0_",
+    "LeftComment": "double4x4",
+    "RightUsr": "",
+    "RightComment": "double4x4",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)AMAction(im)initWithDefinition:fromArchive:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "[String : Any]",
+    "ModuleName": "Automator"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AMAction(im)initWithDefinition:fromArchive:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Automator"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)AMAction(im)initWithDefinition:fromArchive:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "[String : Any]",
+    "ModuleName": "Automator"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AMAction(im)initWithDefinition:fromArchive:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Automator"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)AMAction(im)initWithDefinition:fromArchive:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "[String : Any]",
+    "ModuleName": "Automator"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AMAction(im)initWithDefinition:fromArchive:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Automator"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)AMAction(im)initWithDefinition:fromArchive:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "[String : Any]",
+    "ModuleName": "Automator"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AMAction(im)initWithDefinition:fromArchive:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Automator"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AMWorkflow(im)valueForVariableWithName:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Automator"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FVSC21__AMWorkflowViewFlagscFT25ignoreSubviewFrameChangesV10ObjectiveC8ObjCBool14editingEnabledS1_8reservedSi_S_",
+    "LeftComment": "ObjCBool",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "Automator"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "s:FVSC21__AMWorkflowViewFlagscFT25ignoreSubviewFrameChangesV10ObjectiveC8ObjCBool14editingEnabledS1_8reservedSi_S_",
+    "LeftComment": "ObjCBool",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "Automator"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Social"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "Social"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:writablePasteboardTypesForCell:atIndex:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "Social"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:writeCell:atIndex:toPasteboard:type:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "Social"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldChangeTypingAttributes:toAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Social"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldChangeTypingAttributes:toAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Social"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:willCheckTextInRange:options:types:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "Social"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:willCheckTextInRange:options:types:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "Social"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:didCheckTextInRange:types:options:results:orthography:wordCount:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "Social"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldUpdateTouchBarItemIdentifiers:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "Social"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldUpdateTouchBarItemIdentifiers:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "Social"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)INImage(cm)imageWithURL:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Intents"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)INPersonHandle(im)initWithValue:type:label:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Intents"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)INPersonHandle(im)initWithValue:type:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Intents"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "NotificationCenter"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "NotificationCenter"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NCWidgetProviding(im)widgetMarginInsetsForProposedMarginInsets:",
+    "LeftComment": "EdgeInsets",
+    "RightUsr": "",
+    "RightComment": "NSEdgeInsets",
+    "ModuleName": "NotificationCenter"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NCWidgetProviding(im)widgetMarginInsetsForProposedMarginInsets:",
+    "LeftComment": "EdgeInsets",
+    "RightUsr": "",
+    "RightComment": "NSEdgeInsets",
+    "ModuleName": "NotificationCenter"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "NotificationCenter"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "NotificationCenter"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1:0",
+    "LeftUsr": "c:objc(cs)CBIdentityPicker(im)runModalForWindow:completionHandler:",
+    "LeftComment": "NSModalResponse",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ModalResponse",
+    "ModuleName": "Collaboration"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AddressBook"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBundle(im)pathForSoundResource:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSound.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBundle(im)loadNibNamed:owner:topLevelObjects:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSBundle(im)loadNibNamed:owner:topLevelObjects:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBundle(im)imageForResource:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSImage.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBundle(im)pathForImageResource:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSImage.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBundle(im)URLForImageResource:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSImage.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBundle(im)contextHelpForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSHelpManager.ContextHelpKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FVSC10EdgeInsetscFT_S_",
+    "LeftComment": "EdgeInsets",
+    "RightUsr": "",
+    "RightComment": "NSEdgeInsets",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FVSC10EdgeInsetscFT3topV12CoreGraphics7CGFloat4leftS1_6bottomS1_5rightS1__S_",
+    "LeftComment": "EdgeInsets",
+    "RightUsr": "",
+    "RightComment": "NSEdgeInsets",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "TypeDecl",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@S@NSEdgeInsets",
+    "LeftComment": "EdgeInsets",
+    "RightUsr": "",
+    "RightComment": "NSEdgeInsets",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSFileManager(im)createDirectoryAtURL:withIntermediateDirectories:attributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileAttributeKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSFileManager(im)createDirectoryAtPath:withIntermediateDirectories:attributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileAttributeKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSFileManager(im)createFileAtPath:contents:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileAttributeKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FE10FoundationCSo11FileManager13replaceItemAtFzTVS_3URL10withItemAtS1_14backupItemNameGSqSS_7optionsVS0_22ItemReplacementOptions_GSqCSo5NSURL_",
+    "LeftComment": "NSURL",
+    "RightUsr": "",
+    "RightComment": "URL",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSArray(cm)arrayWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attributesAtIndex:effectiveRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)drawWithRect:options:",
+    "LeftComment": "NSStringDrawingOptions",
+    "RightUsr": "",
+    "RightComment": "NSString.DrawingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)boundingRectWithSize:options:",
+    "LeftComment": "NSStringDrawingOptions",
+    "RightUsr": "",
+    "RightComment": "NSString.DrawingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)drawWithRect:options:context:",
+    "LeftComment": "NSStringDrawingOptions",
+    "RightUsr": "",
+    "RightComment": "NSString.DrawingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)boundingRectWithSize:options:context:",
+    "LeftComment": "NSStringDrawingOptions",
+    "RightUsr": "",
+    "RightComment": "NSString.DrawingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(cm)textTypes",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "textTypes",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(cm)textUnfilteredTypes",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "textUnfilteredTypes",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardReadingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardWritingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.WritingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)pasteboardPropertyListForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)fontAttributesInRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)rulerAttributesInRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)dataFromRange:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentAttributeKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)fileWrapperFromRange:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentAttributeKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithHTML:options:documentAttributes:",
+    "LeftComment": "AnyHashable",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)RTFFromRange:documentAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentAttributeKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)RTFDFromRange:documentAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentAttributeKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)RTFDFileWrapperFromRange:documentAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentAttributeKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)docFormatFromRange:documentAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentAttributeKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attribute:atIndex:effectiveRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attributesAtIndex:longestEffectiveRange:inRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attribute:atIndex:longestEffectiveRange:inRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithString:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:1:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)enumerateAttributesInRange:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)enumerateAttribute:inRange:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FE10FoundationCSo7NSCoder20decodeTopLevelObjectFzT6forKeySS_GSqPs9AnyObject__",
+    "LeftComment": "AnyObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSet(cm)setWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDecimalNumberHandler(cm)defaultDecimalNumberHandler",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSIndexPath(im)initWithIndexes:length:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:ZFE10FoundationCSo17NSKeyedUnarchiver31unarchiveTopLevelObjectWithDataFzCSo6NSDataGSqPs9AnyObject__",
+    "LeftComment": "AnyObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)initWithTagSchemes:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(cm)availableTagSchemesForLanguage:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:scheme:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:1:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:scheme:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag?",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)tagAtIndex:scheme:tokenRange:sentenceRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)tagAtIndex:scheme:tokenRange:sentenceRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSArray(cm)arrayWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)setAttributes:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithHTML:options:documentAttributes:",
+    "LeftComment": "AnyHashable",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithString:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)addAttribute:value:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)addAttributes:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)removeAttribute:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)readFromURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)readFromData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSOrderedSet(cm)orderedSetWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableOrderedSet(im)addObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSMutableOrderedSet(im)replaceObjectsInRange:withObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSet(cm)setWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSOrderedSet(cm)orderedSetWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSet(cm)setWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSString(im)drawWithRect:options:attributes:",
+    "LeftComment": "NSStringDrawingOptions",
+    "RightUsr": "",
+    "RightComment": "NSString.DrawingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawWithRect:options:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSString(im)boundingRectWithSize:options:attributes:",
+    "LeftComment": "NSStringDrawingOptions",
+    "RightUsr": "",
+    "RightComment": "NSString.DrawingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)boundingRectWithSize:options:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSString(im)drawWithRect:options:attributes:context:",
+    "LeftComment": "NSStringDrawingOptions",
+    "RightUsr": "",
+    "RightComment": "NSString.DrawingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawWithRect:options:attributes:context:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSString(im)boundingRectWithSize:options:attributes:context:",
+    "LeftComment": "NSStringDrawingOptions",
+    "RightUsr": "",
+    "RightComment": "NSString.DrawingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)boundingRectWithSize:options:attributes:context:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)sizeWithAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawAtPoint:withAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawInRect:withAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardWritingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.WritingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)pasteboardPropertyListForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardReadingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)linguisticTagsInRange:scheme:options:orthography:tokenRanges:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSString(im)linguisticTagsInRange:scheme:options:orthography:tokenRanges:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSString(im)enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5:1:0",
+    "LeftUsr": "c:objc(cs)NSString(im)enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag?",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(cm)addressCheckingResultWithRange:components:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextCheckingKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(cm)transitInformationCheckingResultWithRange:components:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextCheckingKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(im)rangeAtIndex:",
+    "LeftComment": "rangeAt(_:)",
+    "RightUsr": "",
+    "RightComment": "range(at:)",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(im)resultByAdjustingRangesWithOffset:",
+    "LeftComment": "resultByAdjustingRangesWithOffset(_:)",
+    "RightUsr": "",
+    "RightComment": "adjustingRanges(offset:)",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardWritingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.WritingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)pasteboardPropertyListForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardReadingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSUUID(im)initWithUUIDBytes:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSUUID(im)getUUIDBytes:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSUbiquitousKeyValueStore(cm)defaultStore",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSValue(cm)valueWithEdgeInsets:",
+    "LeftComment": "EdgeInsets",
+    "RightUsr": "",
+    "RightComment": "NSEdgeInsets",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSProgress(im)initWithParent:userInfo:",
+    "LeftComment": "AnyHashable",
+    "RightUsr": "",
+    "RightComment": "ProgressUserInfoKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSXMLDTD(im)initWithContentsOfURL:options:error:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "XMLNode.Options",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSXMLDTD(im)initWithData:options:error:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "XMLNode.Options",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSXMLDocument(im)initWithXMLString:options:error:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "XMLNode.Options",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSXMLDocument(im)initWithContentsOfURL:options:error:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "XMLNode.Options",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSXMLDocument(im)initWithData:options:error:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "XMLNode.Options",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSXMLDocument(im)XMLDataWithOptions:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "XMLNode.Options",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSXMLDocument(im)XMLDataWithOptions:",
+    "LeftComment": "xmlData(withOptions:)",
+    "RightUsr": "",
+    "RightComment": "xmlData(options:)",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSXMLNode(im)XMLStringWithOptions:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "XMLNode.Options",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSXMLNode(im)XMLStringWithOptions:",
+    "LeftComment": "xmlString(withOptions:)",
+    "RightUsr": "",
+    "RightComment": "xmlString(options:)",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FE10FoundationVSC8_NSRangecFGVs5RangeSi_S0_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FE10FoundationVSC8_NSRangecFGVs5RangeSi_S0_",
+    "LeftComment": "Range<Int>",
+    "RightUsr": "",
+    "RightComment": "String",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSetcFT12charactersInGVs5RangeSc__S0_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSetcFT12charactersInGVs11ClosedRangeSc__S0_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFT12charactersInGVs5RangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFT12charactersInGVs11ClosedRangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFT12charactersInGVs5RangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFT12charactersInGVs11ClosedRangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFScT8insertedSb17memberAfterInsertSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFScT8insertedSb17memberAfterInsertSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6updateFT4withSc_GSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6updateFT4withSc_GSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFScGSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFScGSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet8containsFScSb",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FOV10Foundation8URLError4CodecFT8rawValueSi_GSqS1__",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "DiscRecordingUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)ScreenSaverView(cm)backingStoreType",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "ScreenSaver"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)ScreenSaverView(im)initWithFrame:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ScreenSaver"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)ScreenSaverView(im)hasConfigureSheet",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "hasConfigureSheet",
+    "ModuleName": "ScreenSaver"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)ScreenSaverView(im)configureSheet",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "configureSheet",
+    "ModuleName": "ScreenSaver"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "IOBluetoothUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:owner:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "IOBluetoothUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "IOBluetoothUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:owner:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "IOBluetoothUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "IOBluetoothUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:owner:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "IOBluetoothUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "IOBluetoothUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:owner:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "IOBluetoothUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@MTLAttributeFormat@MTLAttributeFormatUInt1010102Normalized",
+    "LeftComment": "uInt1010102Normalized",
+    "RightUsr": "",
+    "RightComment": "uint1010102Normalized",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandBuffer(im)blitCommandEncoder",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandBuffer(im)renderCommandEncoderWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandBuffer(im)computeCommandEncoder",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandBuffer(im)parallelRenderCommandEncoderWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandQueue(im)commandBuffer",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandQueue(im)commandBufferWithUnretainedReferences",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBytes:length:atIndex:",
+    "LeftComment": "setBytes(_:length:at:)",
+    "RightUsr": "",
+    "RightComment": "setBytes(_:length:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBuffer:offset:atIndex:",
+    "LeftComment": "setBuffer(_:offset:at:)",
+    "RightUsr": "",
+    "RightComment": "setBuffer(_:offset:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBufferOffset:atIndex:",
+    "LeftComment": "setBufferOffset(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setBufferOffset(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setTexture:atIndex:",
+    "LeftComment": "setTexture(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setTexture(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setSamplerState:atIndex:",
+    "LeftComment": "setSamplerState(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setSamplerState(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setSamplerState:lodMinClamp:lodMaxClamp:atIndex:",
+    "LeftComment": "setSamplerState(_:lodMinClamp:lodMaxClamp:at:)",
+    "RightUsr": "",
+    "RightComment": "setSamplerState(_:lodMinClamp:lodMaxClamp:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setThreadgroupMemoryLength:atIndex:",
+    "LeftComment": "setThreadgroupMemoryLength(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setThreadgroupMemoryLength(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newCommandQueue",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newCommandQueueWithMaxCommandBufferCount:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newBufferWithLength:options:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newBufferWithBytes:length:options:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newBufferWithBytesNoCopy:length:options:deallocator:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newDepthStencilStateWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newTextureWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newTextureWithDescriptor:iosurface:plane:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newSamplerStateWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newDefaultLibrary",
+    "LeftComment": "newDefaultLibrary()",
+    "RightUsr": "",
+    "RightComment": "makeDefaultLibrary()",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MTLFunctionConstantValues(im)setConstantValue:type:atIndex:",
+    "LeftComment": "setConstantValue(_:type:at:)",
+    "RightUsr": "",
+    "RightComment": "setConstantValue(_:type:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLParallelRenderCommandEncoder(im)renderCommandEncoder",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLParallelRenderCommandEncoder(im)setColorStoreAction:atIndex:",
+    "LeftComment": "setColorStoreAction(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setColorStoreAction(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBytes:length:atIndex:",
+    "LeftComment": "setVertexBytes(_:length:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexBytes(_:length:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBuffer:offset:atIndex:",
+    "LeftComment": "setVertexBuffer(_:offset:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexBuffer(_:offset:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBufferOffset:atIndex:",
+    "LeftComment": "setVertexBufferOffset(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexBufferOffset(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexTexture:atIndex:",
+    "LeftComment": "setVertexTexture(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexTexture(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexSamplerState:atIndex:",
+    "LeftComment": "setVertexSamplerState(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexSamplerState(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexSamplerState:lodMinClamp:lodMaxClamp:atIndex:",
+    "LeftComment": "setVertexSamplerState(_:lodMinClamp:lodMaxClamp:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexSamplerState(_:lodMinClamp:lodMaxClamp:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBytes:length:atIndex:",
+    "LeftComment": "setFragmentBytes(_:length:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentBytes(_:length:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBuffer:offset:atIndex:",
+    "LeftComment": "setFragmentBuffer(_:offset:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentBuffer(_:offset:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBufferOffset:atIndex:",
+    "LeftComment": "setFragmentBufferOffset(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentBufferOffset(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentTexture:atIndex:",
+    "LeftComment": "setFragmentTexture(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentTexture(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentSamplerState:atIndex:",
+    "LeftComment": "setFragmentSamplerState(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentSamplerState(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentSamplerState:lodMinClamp:lodMaxClamp:atIndex:",
+    "LeftComment": "setFragmentSamplerState(_:lodMinClamp:lodMaxClamp:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentSamplerState(_:lodMinClamp:lodMaxClamp:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setColorStoreAction:atIndex:",
+    "LeftComment": "setColorStoreAction(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setColorStoreAction(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLTexture(im)newTextureViewWithPixelFormat:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLTexture(im)newTextureViewWithPixelFormat:textureType:levels:slices:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ContactsUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "ContactsUI"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)SKUniform(im)initWithName:matrixFloat2x2:",
+    "LeftComment": "matrix_float2x2",
+    "RightUsr": "",
+    "RightComment": "matrix_float2x2",
+    "ModuleName": "SpriteKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)SKUniform(im)initWithName:matrixFloat3x3:",
+    "LeftComment": "matrix_float3x3",
+    "RightUsr": "",
+    "RightComment": "matrix_float3x3",
+    "ModuleName": "SpriteKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)SKUniform(im)initWithName:matrixFloat4x4:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "SpriteKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NEPacketTunnelNetworkSettings(py)IPv4Settings",
+    "LeftComment": "iPv4Settings",
+    "RightUsr": "",
+    "RightComment": "ipv4Settings",
+    "ModuleName": "NetworkExtension"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NEPacketTunnelNetworkSettings(py)IPv6Settings",
+    "LeftComment": "iPv6Settings",
+    "RightUsr": "",
+    "RightComment": "ipv6Settings",
+    "ModuleName": "NetworkExtension"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EKEventStore(im)sourceWithIdentifier:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "EventKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EKEventStore(im)defaultCalendarForNewReminders",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "EventKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EKEventStore(im)calendarItemWithIdentifier:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "EventKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:displayGamut:bundle:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:displayGamut:bundle:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithNames:scaleFactor:bundle:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithNames:scaleFactor:bundle:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithNames:scaleFactor:displayGamut:bundle:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithNames:scaleFactor:displayGamut:bundle:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:displayGamut:bundle:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:displayGamut:bundle:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSObject(cm)setDefaultPlaceholder:forMarker:withBinding:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSObject(cm)defaultPlaceholderForMarker:withBinding:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(cm)exposeBinding:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)valueClassForBinding:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)valueClassForBinding:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)bind:toObject:withKeyPath:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)NSObject(im)bind:toObject:withKeyPath:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingOption",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)bind:toObject:withKeyPath:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)NSObject(im)bind:toObject:withKeyPath:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingOption",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)unbind:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)unbind:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0:0",
+    "LeftUsr": "c:objc(cs)NSObject(im)infoForBinding:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingInfoKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)infoForBinding:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0:0",
+    "LeftUsr": "c:objc(cs)NSObject(im)infoForBinding:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingInfoKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)infoForBinding:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)optionDescriptionsForBinding:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)optionDescriptionsForBinding:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSObject(im)exposedBindings",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBindingName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSObject(im)exposedBindings",
+    "LeftComment": "exposedBindings()",
+    "RightUsr": "",
+    "RightComment": "exposedBindings",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSObject(im)pasteboard:provideDataForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSObject(im)pasteboard:provideDataForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSObject(im)validModesForFontPanel:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "NSFontPanel.ModeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSObject(im)validModesForFontPanel:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "NSFontPanel.ModeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilitySetOverrideValue:forAttribute:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilitySetOverrideValue:forAttribute:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityAttributeNames",
+    "LeftComment": "Any",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityAttributeNames",
+    "LeftComment": "Any",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityAttributeValue:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityAttributeValue:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityIsAttributeSettable:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityIsAttributeSettable:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilitySetValue:forAttribute:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilitySetValue:forAttribute:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityParameterizedAttributeNames",
+    "LeftComment": "Any",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityParameterizedAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityParameterizedAttributeNames",
+    "LeftComment": "Any",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityParameterizedAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityAttributeValue:forParameter:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityParameterizedAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityAttributeValue:forParameter:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityParameterizedAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityActionNames",
+    "LeftComment": "Any",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityActionName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityActionNames",
+    "LeftComment": "Any",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityActionName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityActionDescription:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityActionName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityActionDescription:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityActionName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityPerformAction:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityActionName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityPerformAction:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityActionName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityArrayAttributeCount:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityArrayAttributeCount:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityArrayAttributeValues:index:maxCount:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSObject(im)accessibilityArrayAttributeValues:index:maxCount:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityAttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)blackColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "black",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)whiteColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "white",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)grayColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "gray",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)redColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "red",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)greenColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "green",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)blueColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "blue",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)cyanColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "cyan",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)magentaColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "magenta",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)yellowColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "yellow",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)clearColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "clear",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MDLAsset(im)initWithURL:vertexDescriptor:bufferAllocator:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)MDLMaterialProperty(im)initWithName:semantic:matrix4x4:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)MDLMesh(im)initCapsuleWithExtent:cylinderSegments:hemisphereSegments:inwardNormals:geometryType:allocator:",
+    "LeftComment": "UInt32",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MDLTransform(im)initWithMatrix:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MDLTransform(im)initWithMatrix:resetsTransform:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MDLTransform(im)setMatrix:forTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MDLTransform(im)rotationMatrixAtTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)localTransformAtTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(cm)globalTransformWithObject:atTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)localTransformAtTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(cm)globalTransformWithObject:atTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "MultipeerConnectivity"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "MultipeerConnectivity"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2:1:0",
+    "LeftUsr": "c:objc(cs)MCSession(im)nearbyConnectionDataForPeer:withCompletionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "MultipeerConnectivity"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)MCSessionDelegate(im)session:didFinishReceivingResourceWithName:fromPeer:atURL:withError:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "MultipeerConnectivity"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedGray",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedGray",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGColorSpaceCreateLab",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:@F@CGColorSpaceCreateLab",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:@F@CGColorSpaceCreateLab",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@F@CGFontCreateWithDataProvider",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "5",
+    "LeftUsr": "c:@F@CGFontCreatePostScriptSubset",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGFontCreatePostScriptEncoding",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FVSC22CBAttributePermissionscFT8rawValueSi_S_",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "UInt",
+    "ModuleName": "CoreBluetooth"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FVSC26CBCharacteristicPropertiescFT8rawValueSi_S_",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "UInt",
+    "ModuleName": "CoreBluetooth"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)CBMutableCharacteristic(im)initWithType:properties:value:permissions:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreBluetooth"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)CBMutableService(im)initWithType:primary:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreBluetooth"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)IOSurface(im)setAllAttachments:",
+    "LeftComment": "AnyHashable",
+    "RightUsr": "",
+    "RightComment": "String",
+    "ModuleName": "IOSurface"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0:0",
+    "LeftUsr": "c:objc(cs)IOSurface(im)allAttachments",
+    "LeftComment": "AnyHashable",
+    "RightUsr": "",
+    "RightComment": "String",
+    "ModuleName": "IOSurface"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)GKDialogController(im)presentViewController:",
+    "LeftComment": "NSViewController",
+    "RightUsr": "",
+    "RightComment": "NSViewController & GKViewController",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "ModernizeEnum",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@Ea@GKPhotoSizeSmall@GKPhotoSizeNormal",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "GKPhotoSize.normal",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "ModernizeEnum",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@Ea@GKPhotoSizeSmall@GKPhotoSizeSmall",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "GKPhotoSize.small",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)GKPlayer(im)loadPhotoForSize:withCompletionHandler:",
+    "LeftComment": "GKPhotoSize",
+    "RightUsr": "",
+    "RightComment": "GKPhotoSize",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)GKPlayer(im)loadPhotoForSize:withCompletionHandler:",
+    "LeftComment": "loadPhoto(forSize:withCompletionHandler:)",
+    "RightUsr": "",
+    "RightComment": "loadPhoto(for:withCompletionHandler:)",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "6:0:1:1",
+    "LeftUsr": "c:objc(cs)GKTurnBasedMatch(im)sendExchangeToParticipants:data:localizableMessageKey:arguments:timeout:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)MKMapView(im)setVisibleMapRect:edgePadding:animated:",
+    "LeftComment": "EdgeInsets",
+    "RightUsr": "",
+    "RightComment": "NSEdgeInsets",
+    "ModuleName": "MapKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)MKMapView(im)mapRectThatFits:edgePadding:",
+    "LeftComment": "EdgeInsets",
+    "RightUsr": "",
+    "RightComment": "NSEdgeInsets",
+    "ModuleName": "MapKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSATSTypesetter(cm)sharedTypesetter",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilitySubrole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilitySubrole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilityRole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilityRole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAccessibilityElement(cm)accessibilityElementWithRole:frame:label:parent:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilitySubrole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilitySubrole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilityRole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilityRole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSAlert(im)runModal",
+    "LeftComment": "NSModalResponse",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ModalResponse",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1:0",
+    "LeftUsr": "c:objc(cs)NSAlert(im)beginSheetModalForWindow:completionHandler:",
+    "LeftComment": "NSModalResponse",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ModalResponse",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSAlignmentFeedbackFilter(cm)inputEventMask",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "inputEventMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSAlignmentFeedbackFilter(im)performFeedback:performanceTime:",
+    "LeftComment": "NSHapticFeedbackPerformanceTime",
+    "RightUsr": "",
+    "RightComment": "NSHapticFeedbackManager.PerformanceTime",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(im)animationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(cm)defaultAnimationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSAnimation(im)initWithDuration:animationCurve:",
+    "LeftComment": "NSAnimationCurve",
+    "RightUsr": "",
+    "RightComment": "NSAnimation.Curve",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSAnimationContext(cm)currentContext",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "current",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSAppearance(cm)currentAppearance",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "current",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSAppearance(cm)setCurrentAppearance:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "current",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAppearance(cm)appearanceNamed:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAppearance.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAppearance(im)initWithAppearanceNamed:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAppearance.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSApplication(cm)sharedApplication",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSApplication(im)runModalForWindow:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ModalResponse",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSApplication(im)stopModalWithCode:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ModalResponse",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSApplication(im)runModalSession:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ModalResponse",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSApplication(im)requestUserAttention:",
+    "LeftComment": "NSRequestUserAttentionType",
+    "RightUsr": "",
+    "RightComment": "NSApplication.RequestUserAttentionType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSApplication(im)enumerateWindowsWithOptions:usingBlock:",
+    "LeftComment": "NSWindowListOptions",
+    "RightUsr": "",
+    "RightComment": "NSApplication.WindowListOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSApplication(im)activationPolicy",
+    "LeftComment": "NSApplicationActivationPolicy",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ActivationPolicy",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSApplication(im)setActivationPolicy:",
+    "LeftComment": "NSApplicationActivationPolicy",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ActivationPolicy",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSApplication(im)replyToOpenOrPrint:",
+    "LeftComment": "NSApplicationDelegateReply",
+    "RightUsr": "",
+    "RightComment": "NSApplication.DelegateReply",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilitySubrole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilitySubrole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilityRole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilityRole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSApplication(im)restoreWindowWithIdentifier:state:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSApplication(im)registerForRemoteNotificationTypes:",
+    "LeftComment": "NSRemoteNotificationType",
+    "RightUsr": "",
+    "RightComment": "NSApplication.RemoteNotificationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSApplication(im)orderFrontStandardAboutPanelWithOptions:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSApplication.AboutPanelOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSApplication(im)registerServicesMenuSendTypes:returnTypes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSApplication(im)registerServicesMenuSendTypes:returnTypes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSApplication(im)validRequestorForSendType:returnType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType?",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSApplication(im)validRequestorForSendType:returnType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType?",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSApplication(im)nextEventMatchingMask:untilDate:inMode:dequeue:",
+    "LeftComment": "NSEventMask",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventTypeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSApplication(im)discardEventsMatchingMask:beforeEvent:",
+    "LeftComment": "NSEventMask",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventTypeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSApplicationDelegate(im)applicationShouldTerminate:",
+    "LeftComment": "NSApplicationTerminateReply",
+    "RightUsr": "",
+    "RightComment": "NSApplication.TerminateReply",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSApplicationDelegate(im)application:printFiles:withSettings:showPrintPanels:",
+    "LeftComment": "NSApplicationPrintReply",
+    "RightUsr": "",
+    "RightComment": "NSApplication.PrintReply",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(pl)NSApplicationDelegate(im)application:printFiles:withSettings:showPrintPanels:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPrintInfo.AttributeKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSAutoresizingMaskOptions@NSViewNotSizable",
+    "LeftComment": "viewNotSizable",
+    "RightUsr": "",
+    "RightComment": "none",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSAutoresizingMaskOptions@NSViewMinXMargin",
+    "LeftComment": "viewMinXMargin",
+    "RightUsr": "",
+    "RightComment": "minXMargin",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSAutoresizingMaskOptions@NSViewWidthSizable",
+    "LeftComment": "viewWidthSizable",
+    "RightUsr": "",
+    "RightComment": "width",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSAutoresizingMaskOptions@NSViewMaxXMargin",
+    "LeftComment": "viewMaxXMargin",
+    "RightUsr": "",
+    "RightComment": "maxXMargin",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSAutoresizingMaskOptions@NSViewMinYMargin",
+    "LeftComment": "viewMinYMargin",
+    "RightUsr": "",
+    "RightComment": "minYMargin",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSAutoresizingMaskOptions@NSViewHeightSizable",
+    "LeftComment": "viewHeightSizable",
+    "RightUsr": "",
+    "RightComment": "height",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSAutoresizingMaskOptions@NSViewMaxYMargin",
+    "LeftComment": "viewMaxYMargin",
+    "RightUsr": "",
+    "RightComment": "maxYMargin",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(cm)setDefaultMiterLimit:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultMiterLimit",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(cm)defaultMiterLimit",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultMiterLimit",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(cm)setDefaultFlatness:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultFlatness",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(cm)defaultFlatness",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultFlatness",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(cm)setDefaultWindingRule:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultWindingRule",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(cm)defaultWindingRule",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultWindingRule",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(cm)setDefaultLineCapStyle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultLineCapStyle",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(cm)defaultLineCapStyle",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultLineCapStyle",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(cm)setDefaultLineJoinStyle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultLineJoinStyle",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(cm)defaultLineJoinStyle",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultLineJoinStyle",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(cm)setDefaultLineWidth:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultLineWidth",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(cm)defaultLineWidth",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultLineWidth",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(im)elementAtIndex:associatedPoints:",
+    "LeftComment": "NSBezierPathElement",
+    "RightUsr": "",
+    "RightComment": "NSBezierPath.ElementType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBezierPath(im)elementAtIndex:",
+    "LeftComment": "NSBezierPathElement",
+    "RightUsr": "",
+    "RightComment": "NSBezierPath.ElementType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSBitmapImageFileType@NSBitmapImageFileTypeTIFF",
+    "LeftComment": "TIFF",
+    "RightUsr": "",
+    "RightComment": "tiff",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSBitmapImageFileType@NSBitmapImageFileTypeBMP",
+    "LeftComment": "BMP",
+    "RightUsr": "",
+    "RightComment": "bmp",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSBitmapImageFileType@NSBitmapImageFileTypeGIF",
+    "LeftComment": "GIF",
+    "RightUsr": "",
+    "RightComment": "gif",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSBitmapImageFileType@NSBitmapImageFileTypeJPEG",
+    "LeftComment": "JPEG",
+    "RightUsr": "",
+    "RightComment": "jpeg",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSBitmapImageFileType@NSBitmapImageFileTypePNG",
+    "LeftComment": "PNG",
+    "RightUsr": "",
+    "RightComment": "png",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSBitmapImageFileType@NSBitmapImageFileTypeJPEG2000",
+    "LeftComment": "JPEG2000",
+    "RightUsr": "",
+    "RightComment": "jpeg2000",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "8",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColorSpaceName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "8",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColorSpaceName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "9",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:",
+    "LeftComment": "NSBitmapFormat",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.Format",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)getCompression:factor:",
+    "LeftComment": "NSTIFFCompression",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.TIFFCompression",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)setCompression:factor:",
+    "LeftComment": "NSTIFFCompression",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.TIFFCompression",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)TIFFRepresentationUsingCompression:factor:",
+    "LeftComment": "NSTIFFCompression",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.TIFFCompression",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(cm)TIFFRepresentationOfImageRepsInArray:usingCompression:factor:",
+    "LeftComment": "NSTIFFCompression",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.TIFFCompression",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0:0",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(cm)getTIFFCompressionTypes:count:",
+    "LeftComment": "NSTIFFCompression",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.TIFFCompression",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(cm)localizedNameForTIFFCompressionType:",
+    "LeftComment": "NSTIFFCompression",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.TIFFCompression",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)canBeCompressedUsing:",
+    "LeftComment": "NSTIFFCompression",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.TIFFCompression",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)getPixel:atX:y:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)setPixel:atX:y:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(cm)representationOfImageRepsInArray:usingType:properties:",
+    "LeftComment": "NSBitmapImageFileType",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.FileType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(cm)representationOfImageRepsInArray:usingType:properties:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.PropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)representationUsingType:properties:",
+    "LeftComment": "NSBitmapImageFileType",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.FileType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)representationUsingType:properties:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.PropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)setProperty:withValue:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.PropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBitmapImageRep(im)valueForProperty:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.PropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBrowser(cm)cellClass",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "cellClass",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSBrowser(cm)removeSavedColumnsWithAutosaveName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSBrowser.ColumnsAutosaveName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBrowserCell(cm)branchImage",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "branchImage",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSBrowserCell(cm)highlightedBranchImage",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "highlightedBranchImage",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5:0",
+    "LeftUsr": "c:objc(pl)NSBrowserDelegate(im)browser:validateDrop:proposedRow:column:dropOperation:",
+    "LeftComment": "NSBrowserDropOperation",
+    "RightUsr": "",
+    "RightComment": "NSBrowser.DropOperation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "c:objc(pl)NSBrowserDelegate(im)browser:acceptDrop:atRow:column:dropOperation:",
+    "LeftComment": "NSBrowserDropOperation",
+    "RightUsr": "",
+    "RightComment": "NSBrowser.DropOperation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSBrowserDelegate(im)browser:typeSelectStringForRow:inColumn:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSButton(im)setButtonType:",
+    "LeftComment": "NSButtonType",
+    "RightUsr": "",
+    "RightComment": "NSButton.ButtonType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSButtonCell(im)setButtonType:",
+    "LeftComment": "NSButtonType",
+    "RightUsr": "",
+    "RightComment": "NSButton.ButtonType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTouchBarItem(im)initWithIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCell(cm)prefersTrackingUntilMouseUp",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "prefersTrackingUntilMouseUp",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCell(im)sendActionOn:",
+    "LeftComment": "NSEventMask",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventTypeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCell(im)cellAttribute:",
+    "LeftComment": "NSCellAttribute",
+    "RightUsr": "",
+    "RightComment": "NSCell.Attribute",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCell(im)setCellAttribute:to:",
+    "LeftComment": "NSCellAttribute",
+    "RightUsr": "",
+    "RightComment": "NSCell.Attribute",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCell(im)highlightColorWithFrame:inView:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCell(cm)defaultMenu",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultMenu",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilitySubrole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilitySubrole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilityRole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilityRole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCell(im)hitTestForEvent:inRect:ofView:",
+    "LeftComment": "NSCellHitResult",
+    "RightUsr": "",
+    "RightComment": "NSCell.HitResult",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCell(cm)defaultFocusRingType",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultFocusRingType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSGestureRecognizer(im)initWithTarget:action:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSCloudSharingServiceDelegate(im)optionsForSharingService:shareProvider:",
+    "LeftComment": "NSCloudKitSharingServiceOptions",
+    "RightUsr": "",
+    "RightComment": "NSSharingService.CloudKitOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)layoutAttributesForSupplementaryElementOfKind:atIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)selectItemsAtIndexPaths:scrollPosition:",
+    "LeftComment": "NSCollectionViewScrollPosition",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.ScrollPosition",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)registerClass:forItemWithIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)registerNib:forItemWithIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)registerClass:forSupplementaryViewOfKind:withIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)registerClass:forSupplementaryViewOfKind:withIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)registerNib:forSupplementaryViewOfKind:withIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)registerNib:forSupplementaryViewOfKind:withIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)makeItemWithIdentifier:forIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)makeSupplementaryViewOfKind:withIdentifier:forIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)makeSupplementaryViewOfKind:withIdentifier:forIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)supplementaryViewForElementKind:atIndexPath:",
+    "LeftComment": "NSView",
+    "RightUsr": "",
+    "RightComment": "NSView & NSCollectionViewElement",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)supplementaryViewForElementKind:atIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)visibleSupplementaryViewsOfKind:",
+    "LeftComment": "NSView",
+    "RightUsr": "",
+    "RightComment": "NSView & NSCollectionViewElement",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)visibleSupplementaryViewsOfKind:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)indexPathsForVisibleSupplementaryElementsOfKind:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSCollectionView(im)scrollToItemsAtIndexPaths:scrollPosition:",
+    "LeftComment": "NSCollectionViewScrollPosition",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.ScrollPosition",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSCollectionViewDataSource(im)collectionView:viewForSupplementaryElementOfKind:atIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0",
+    "LeftUsr": "c:objc(pl)NSCollectionViewDelegate(im)collectionView:validateDrop:proposedIndexPath:dropOperation:",
+    "LeftComment": "NSCollectionViewDropOperation",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DropOperation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0",
+    "LeftUsr": "c:objc(pl)NSCollectionViewDelegate(im)collectionView:validateDrop:proposedIndex:dropOperation:",
+    "LeftComment": "NSCollectionViewDropOperation",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DropOperation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)NSCollectionViewDelegate(im)collectionView:acceptDrop:indexPath:dropOperation:",
+    "LeftComment": "NSCollectionViewDropOperation",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DropOperation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)NSCollectionViewDelegate(im)collectionView:acceptDrop:index:dropOperation:",
+    "LeftComment": "NSCollectionViewDropOperation",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DropOperation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)NSCollectionViewDelegate(im)collectionView:shouldChangeItemsAtIndexPaths:toHighlightState:",
+    "LeftComment": "NSCollectionViewItemHighlightState",
+    "RightUsr": "",
+    "RightComment": "NSCollectionViewItem.HighlightState",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)NSCollectionViewDelegate(im)collectionView:didChangeItemsAtIndexPaths:toHighlightState:",
+    "LeftComment": "NSCollectionViewItemHighlightState",
+    "RightUsr": "",
+    "RightComment": "NSCollectionViewItem.HighlightState",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)NSCollectionViewDelegate(im)collectionView:willDisplaySupplementaryView:forElementKind:atIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)NSCollectionViewDelegate(im)collectionView:didEndDisplayingSupplementaryView:forElementOfKind:atIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSCollectionViewDelegateFlowLayout(im)collectionView:layout:insetForSectionAtIndex:",
+    "LeftComment": "EdgeInsets",
+    "RightUsr": "",
+    "RightComment": "NSEdgeInsets",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(im)registerClass:forDecorationViewOfKind:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DecorationElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(im)registerNib:forDecorationViewOfKind:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DecorationElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(cm)layoutAttributesClass",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "layoutAttributesClass",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(cm)invalidationContextClass",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "invalidationContextClass",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(im)layoutAttributesForSupplementaryViewOfKind:atIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(im)layoutAttributesForDecorationViewOfKind:atIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DecorationElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(im)initialLayoutAttributesForAppearingSupplementaryElementOfKind:atIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(im)finalLayoutAttributesForDisappearingSupplementaryElementOfKind:atIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(im)initialLayoutAttributesForAppearingDecorationElementOfKind:atIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DecorationElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(im)finalLayoutAttributesForDisappearingDecorationElementOfKind:atIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DecorationElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(im)indexPathsToDeleteForSupplementaryViewOfKind:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(im)indexPathsToDeleteForDecorationViewOfKind:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DecorationElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(im)indexPathsToInsertForSupplementaryViewOfKind:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayout(im)indexPathsToInsertForDecorationViewOfKind:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DecorationElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayoutAttributes(cm)layoutAttributesForSupplementaryViewOfKind:withIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayoutAttributes(cm)layoutAttributesForDecorationViewOfKind:withIndexPath:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DecorationElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayoutInvalidationContext(im)invalidateSupplementaryElementsOfKind:atIndexPaths:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.SupplementaryElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewLayoutInvalidationContext(im)invalidateDecorationElementsOfKind:atIndexPaths:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionView.DecorationElementKind",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSCollectionViewTransitionLayout(im)updateValue:forAnimatedKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionViewTransitionLayout.AnimatedKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSCollectionViewTransitionLayout(im)valueForAnimatedKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSCollectionViewTransitionLayout.AnimatedKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColor(cm)colorWithCatalogName:colorName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColorList.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSColor(cm)colorWithCatalogName:colorName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColor.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColor(im)colorUsingColorSpaceName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColorSpaceName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSColor(im)colorUsingColorSpaceName:device:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColorSpaceName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSColor(im)colorUsingColorSpaceName:device:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSDeviceDescriptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardReadingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardWritingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.WritingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)pasteboardPropertyListForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSColorList(cm)availableColorLists",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "availableColorLists",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorList(cm)colorListNamed:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColorList.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorList(im)initWithName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColorList.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorList(im)initWithName:fromFile:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColorList.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSColorList(im)setColor:forKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColor.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSColorList(im)insertColor:key:atIndex:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColor.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorList(im)removeColorWithKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColor.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorList(im)colorWithKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSColor.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSColorPanel(cm)sharedColorPanel",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSColorPanel(cm)sharedColorPanelExists",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "sharedColorPanelExists",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorPanel(cm)setPickerMask:",
+    "LeftComment": "NSColorPanelOptions",
+    "RightUsr": "",
+    "RightComment": "NSColorPanel.Options",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorPanel(cm)setPickerMode:",
+    "LeftComment": "NSColorPanelMode",
+    "RightUsr": "",
+    "RightComment": "NSColorPanel.Mode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorPicker(im)setMode:",
+    "LeftComment": "NSColorPanelMode",
+    "RightUsr": "",
+    "RightComment": "NSColorPanel.Mode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorPickerTouchBarItem(cm)colorPickerWithIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorPickerTouchBarItem(cm)textColorPickerWithIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorPickerTouchBarItem(cm)strokeColorPickerWithIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorPickerTouchBarItem(cm)colorPickerWithIdentifier:buttonImage:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTouchBarItem(im)initWithIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSColorPickingCustom(im)supportsMode:",
+    "LeftComment": "NSColorPanelMode",
+    "RightUsr": "",
+    "RightComment": "NSColorPanel.Mode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSColorPickingCustom(im)currentMode",
+    "LeftComment": "NSColorPanelMode",
+    "RightUsr": "",
+    "RightComment": "NSColorPanel.Mode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSColorPickingDefault(im)setMode:",
+    "LeftComment": "NSColorPanelMode",
+    "RightUsr": "",
+    "RightComment": "NSColorPanel.Mode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSColorSpace(cm)availableColorSpacesWithModel:",
+    "LeftComment": "NSColorSpaceModel",
+    "RightUsr": "",
+    "RightComment": "NSColorSpace.Model",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextField(cm)textFieldWithString:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSControl(im)sendActionOn:",
+    "LeftComment": "NSEventMask",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventTypeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSControl(cm)setCellClass:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "cellClass",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSControl(cm)cellClass",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "cellClass",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)currentCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "current",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)currentSystemCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "currentSystem",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)arrowCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "arrow",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)IBeamCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "iBeam",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)pointingHandCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "pointingHand",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)closedHandCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "closedHand",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)openHandCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "openHand",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)resizeLeftCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "resizeLeft",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)resizeRightCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "resizeRight",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)resizeLeftRightCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "resizeLeftRight",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)resizeUpCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "resizeUp",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)resizeDownCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "resizeDown",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)resizeUpDownCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "resizeUpDown",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)crosshairCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "crosshair",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)disappearingItemCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "disappearingItem",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)operationNotAllowedCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "operationNotAllowed",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)dragLinkCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "dragLink",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)dragCopyCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "dragCopy",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)contextualMenuCursor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "contextualMenu",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSCursor(cm)IBeamCursorForVerticalLayout",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "iBeamCursorForVerticalLayout",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTouchBarItem(im)initWithIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSDataAsset(im)initWithName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSDataAsset.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSDataAsset(im)initWithName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSDataAsset.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSDocument(im)writeSafelyToURL:ofType:forSaveOperation:error:",
+    "LeftComment": "NSSaveOperationType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.SaveOperationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSDocument(im)writeToURL:ofType:forSaveOperation:originalContentsURL:error:",
+    "LeftComment": "NSSaveOperationType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.SaveOperationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSDocument(im)fileAttributesToWriteToURL:ofType:forSaveOperation:originalContentsURL:error:",
+    "LeftComment": "NSSaveOperationType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.SaveOperationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSDocument(im)runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo:",
+    "LeftComment": "NSSaveOperationType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.SaveOperationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSDocument(im)saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",
+    "LeftComment": "NSSaveOperationType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.SaveOperationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSDocument(im)saveToURL:ofType:forSaveOperation:completionHandler:",
+    "LeftComment": "NSSaveOperationType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.SaveOperationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSDocument(im)canAsynchronouslyWriteToURL:ofType:forSaveOperation:",
+    "LeftComment": "NSSaveOperationType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.SaveOperationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDocument(cm)autosavesInPlace",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "autosavesInPlace",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDocument(cm)preservesVersions",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "preservesVersions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDocument(cm)autosavesDrafts",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "autosavesDrafts",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDocument(im)printDocument:",
+    "LeftComment": "print(_:)",
+    "RightUsr": "",
+    "RightComment": "printDocument(_:)",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSDocument(im)printDocumentWithSettings:showPrintPanel:delegate:didPrintSelector:contextInfo:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPrintInfo.AttributeKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSDocument(im)printOperationWithSettings:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPrintInfo.AttributeKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSDocument(im)updateChangeCount:",
+    "LeftComment": "NSDocumentChangeType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.ChangeType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSDocument(im)changeCountTokenForSaveOperation:",
+    "LeftComment": "NSSaveOperationType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.SaveOperationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSDocument(im)updateChangeCountWithToken:forSaveOperation:",
+    "LeftComment": "NSSaveOperationType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.SaveOperationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDocument(cm)readableTypes",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "readableTypes",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDocument(cm)writableTypes",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "writableTypes",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSDocument(im)writableTypesForSaveOperation:",
+    "LeftComment": "NSSaveOperationType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.SaveOperationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSDocument(im)fileNameExtensionForType:saveOperation:",
+    "LeftComment": "NSSaveOperationType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.SaveOperationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDocument(cm)usesUbiquitousStorage",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "usesUbiquitousStorage",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSDocument(im)restoreDocumentWindowWithIdentifier:state:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDocument(cm)restorableStateKeyPaths",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "restorableStateKeyPaths",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDocumentController(cm)sharedDocumentController",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSWindowRestoration(cm)restoreWindowWithIdentifier:state:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSDraggingDestination(im)draggingEnded:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSDraggingImageComponent(im)initWithKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSDraggingItem.ImageComponentKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0",
+    "LeftUsr": "c:objc(pl)NSDraggingInfo(im)enumerateDraggingItemsWithOptions:forView:classes:searchOptions:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0",
+    "LeftUsr": "c:objc(cs)NSDraggingSession(im)enumerateDraggingItemsWithOptions:forView:classes:searchOptions:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilitySubrole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilitySubrole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilityRole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilityRole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)isMouseCoalescingEnabled",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isMouseCoalescingEnabled",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSEvent(im)touchesMatchingPhase:inView:",
+    "LeftComment": "NSTouchPhase",
+    "RightUsr": "",
+    "RightComment": "NSTouch.Phase",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)isSwipeTrackingFromScrollEventsEnabled",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isSwipeTrackingFromScrollEventsEnabled",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSEvent(im)trackSwipeEventWithOptions:dampenAmountThresholdMin:max:usingHandler:",
+    "LeftComment": "NSEventSwipeTrackingOptions",
+    "RightUsr": "",
+    "RightComment": "NSEvent.SwipeTrackingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:1:1",
+    "LeftUsr": "c:objc(cs)NSEvent(im)trackSwipeEventWithOptions:dampenAmountThresholdMin:max:usingHandler:",
+    "LeftComment": "NSEventPhase",
+    "RightUsr": "",
+    "RightComment": "NSEvent.Phase",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",
+    "LeftComment": "NSEventType",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",
+    "LeftComment": "NSEventModifierFlags",
+    "RightUsr": "",
+    "RightComment": "NSEvent.ModifierFlags",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",
+    "LeftComment": "NSEventType",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",
+    "LeftComment": "NSEventModifierFlags",
+    "RightUsr": "",
+    "RightComment": "NSEvent.ModifierFlags",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)enterExitEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:trackingNumber:userData:",
+    "LeftComment": "NSEventType",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)enterExitEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:trackingNumber:userData:",
+    "LeftComment": "NSEventModifierFlags",
+    "RightUsr": "",
+    "RightComment": "NSEvent.ModifierFlags",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",
+    "LeftComment": "NSEventType",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",
+    "LeftComment": "NSEventModifierFlags",
+    "RightUsr": "",
+    "RightComment": "NSEvent.ModifierFlags",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)mouseLocation",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "mouseLocation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)modifierFlags",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "modifierFlags",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)pressedMouseButtons",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "pressedMouseButtons",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)doubleClickInterval",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "doubleClickInterval",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)keyRepeatDelay",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "keyRepeatDelay",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)keyRepeatInterval",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "keyRepeatInterval",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)addGlobalMonitorForEventsMatchingMask:handler:",
+    "LeftComment": "NSEventMask",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventTypeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSEvent(cm)addLocalMonitorForEventsMatchingMask:handler:",
+    "LeftComment": "NSEventMask",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventTypeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardWritingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.WritingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)pasteboardPropertyListForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSFilePromiseReceiver(cm)readableDraggedTypes",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "readableDraggedTypes",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardReadingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSFont(cm)systemFontOfSize:weight:",
+    "LeftComment": "CGFloat",
+    "RightUsr": "",
+    "RightComment": "NSFont.Weight",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSFont(cm)monospacedDigitSystemFontOfSize:weight:",
+    "LeftComment": "CGFloat",
+    "RightUsr": "",
+    "RightComment": "NSFont.Weight",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSFont(cm)systemFontSize",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "systemFontSize",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSFont(cm)smallSystemFontSize",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "smallSystemFontSize",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSFont(cm)labelFontSize",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "labelFontSize",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSFont(cm)systemFontSizeForControlSize:",
+    "LeftComment": "NSControlSize",
+    "RightUsr": "",
+    "RightComment": "NSControl.ControlSize",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSFontCollection(cm)fontCollectionWithAllAvailableDescriptors",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "withAllAvailableDescriptors",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSFontCollection(cm)showFontCollection:withName:visibility:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSFontCollection(cm)showFontCollection:withName:visibility:error:",
+    "LeftComment": "NSFontCollectionVisibility",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Visibility",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSFontCollection(cm)hideFontCollectionWithName:visibility:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSFontCollection(cm)hideFontCollectionWithName:visibility:error:",
+    "LeftComment": "NSFontCollectionVisibility",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Visibility",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSFontCollection(cm)renameFontCollectionWithName:visibility:toName:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSFontCollection(cm)renameFontCollectionWithName:visibility:toName:error:",
+    "LeftComment": "NSFontCollectionVisibility",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Visibility",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSFontCollection(cm)renameFontCollectionWithName:visibility:toName:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSFontCollection(cm)allFontCollectionNames",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "allFontCollectionNames",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSFontCollection(cm)fontCollectionWithName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSFontCollection(cm)fontCollectionWithName:visibility:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSFontCollection(cm)fontCollectionWithName:visibility:",
+    "LeftComment": "NSFontCollectionVisibility",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Visibility",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSFontCollection(im)matchingDescriptorsWithOptions:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontCollectionMatchingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSFontCollection(im)matchingDescriptorsForFamily:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontCollectionMatchingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSFontDescriptor(im)objectForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontDescriptor.AttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSFontDescriptor(im)initWithFontAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontDescriptor.AttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSFontDescriptor(im)matchingFontDescriptorsWithMandatoryKeys:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontDescriptor.AttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSFontDescriptor(im)matchingFontDescriptorWithMandatoryKeys:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontDescriptor.AttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSFontDescriptor(im)fontDescriptorByAddingAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontDescriptor.AttributeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSFontDescriptor(im)fontDescriptorWithSymbolicTraits:",
+    "LeftComment": "NSFontSymbolicTraits",
+    "RightUsr": "",
+    "RightComment": "NSFontDescriptor.SymbolicTraits",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSFontManager(cm)sharedFontManager",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSFontPanel(cm)sharedFontPanel",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSFontPanel(cm)sharedFontPanelExists",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "sharedFontPanelExists",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSMatrix(im)initWithFrame:mode:prototype:numberOfRows:numberOfColumns:",
+    "LeftComment": "NSMatrixMode",
+    "RightUsr": "",
+    "RightComment": "NSMatrix.Mode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSMatrix(im)initWithFrame:mode:cellClass:numberOfRows:numberOfColumns:",
+    "LeftComment": "NSMatrixMode",
+    "RightUsr": "",
+    "RightComment": "NSMatrix.Mode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSGestureRecognizer(im)initWithTarget:action:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSGlyphGenerator(cm)sharedGlyphGenerator",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSGradient(im)drawFromPoint:toPoint:options:",
+    "LeftComment": "NSGradientDrawingOptions",
+    "RightUsr": "",
+    "RightComment": "NSGradient.DrawingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "c:objc(cs)NSGradient(im)drawFromCenter:radius:toCenter:radius:options:",
+    "LeftComment": "NSGradientDrawingOptions",
+    "RightUsr": "",
+    "RightComment": "NSGradient.DrawingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSGraphicsContext(cm)graphicsContextWithAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSGraphicsContext.AttributeKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSGraphicsContext(cm)currentContext",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "current",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSGraphicsContext(cm)setCurrentContext:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "current",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTouchBarItem(im)initWithIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSHapticFeedbackManager(cm)defaultPerformer",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultPerformer",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSHapticFeedbackPerformer(im)performFeedbackPattern:performanceTime:",
+    "LeftComment": "NSHapticFeedbackPattern",
+    "RightUsr": "",
+    "RightComment": "NSHapticFeedbackManager.FeedbackPattern",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSHapticFeedbackPerformer(im)performFeedbackPattern:performanceTime:",
+    "LeftComment": "NSHapticFeedbackPerformanceTime",
+    "RightUsr": "",
+    "RightComment": "NSHapticFeedbackManager.PerformanceTime",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSHelpManager(cm)sharedHelpManager",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSHelpManager(cm)isContextHelpModeActive",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isContextHelpModeActive",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSHelpManager(im)openHelpAnchor:inBook:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSHelpManager.AnchorName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSHelpManager(im)openHelpAnchor:inBook:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSHelpManager.BookName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSHelpManager(im)findString:inBook:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSHelpManager.BookName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSImage(cm)imageNamed:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSImage.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSImage(im)setName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSImage.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSImage(im)name",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSImage.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "6:0:0",
+    "LeftUsr": "c:objc(cs)NSImage(im)drawInRect:fromRect:operation:fraction:respectFlipped:hints:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSImageRep.HintKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSImage(im)TIFFRepresentationUsingCompression:factor:",
+    "LeftComment": "NSTIFFCompression",
+    "RightUsr": "",
+    "RightComment": "NSBitmapImageRep.TIFFCompression",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSImage(cm)imageUnfilteredPasteboardTypes",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSImage(cm)imagePasteboardTypes",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSImage(cm)imageTypes",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "imageTypes",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSImage(cm)imageUnfilteredTypes",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "imageUnfilteredTypes",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSImage(im)CGImageForProposedRect:context:hints:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSImageRep.HintKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSImage(im)bestRepresentationForRect:context:hints:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSImageRep.HintKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)NSImage(im)hitTestRect:withImageDestinationRect:context:hints:flipped:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSImageRep.HintKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardReadingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardWritingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.WritingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)pasteboardPropertyListForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)NSImageDelegate(im)image:didLoadRepresentation:withStatus:",
+    "LeftComment": "NSImageLoadStatus",
+    "RightUsr": "",
+    "RightComment": "NSImage.LoadStatus",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "6:0:0",
+    "LeftUsr": "c:objc(cs)NSImageRep(im)drawInRect:fromRect:operation:fraction:respectFlipped:hints:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSImageRep.HintKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSImageRep(cm)registeredImageRepClasses",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "registeredClasses",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSImageRep(cm)imageRepClassForPasteboardType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSImageRep(cm)imageUnfilteredPasteboardTypes",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSImageRep(cm)imagePasteboardTypes",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSImageRep(cm)imageUnfilteredTypes",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "imageUnfilteredTypes",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSImageRep(cm)imageTypes",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "imageTypes",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSImageRep(im)CGImageForProposedRect:context:hints:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSImageRep.HintKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSLayoutConstraint(cm)constraintsWithVisualFormat:options:metrics:views:",
+    "LeftComment": "NSLayoutFormatOptions",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.FormatOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSLayoutConstraint(cm)constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:",
+    "LeftComment": "NSLayoutAttribute",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Attribute",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSLayoutConstraint(cm)constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:",
+    "LeftComment": "NSLayoutRelation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Relation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "c:objc(cs)NSLayoutConstraint(cm)constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:",
+    "LeftComment": "NSLayoutAttribute",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Attribute",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(im)animationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(cm)defaultAnimationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSLayoutGuide(im)constraintsAffectingLayoutForOrientation:",
+    "LeftComment": "NSLayoutConstraintOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)setGlyphs:properties:characterIndexes:font:forGlyphRange:",
+    "LeftComment": "NSGlyphProperty",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.GlyphProperty",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)propertyForGlyphAtIndex:",
+    "LeftComment": "NSGlyphProperty",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.GlyphProperty",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)getGlyphsInRange:glyphs:properties:characterIndexes:bidiLevels:",
+    "LeftComment": "NSGlyphProperty",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.GlyphProperty",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "6:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)showCGGlyphs:positions:count:font:matrix:attributes:inContext:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)temporaryAttributesAtCharacterIndex:effectiveRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)setTemporaryAttributes:forCharacterRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)addTemporaryAttributes:forCharacterRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)removeTemporaryAttribute:forCharacterRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)temporaryAttribute:atCharacterIndex:effectiveRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)addTemporaryAttribute:value:forCharacterRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(pl)NSLayoutManagerDelegate(im)layoutManager:shouldGenerateGlyphs:properties:characterIndexes:font:forGlyphRange:",
+    "LeftComment": "NSGlyphProperty",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.GlyphProperty",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSLayoutManagerDelegate(im)layoutManager:shouldUseAction:forControlCharacterAtIndex:",
+    "LeftComment": "NSControlCharacterAction",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.ControlCharacterAction",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSLayoutManagerDelegate(im)layoutManager:shouldUseAction:forControlCharacterAtIndex:",
+    "LeftComment": "NSControlCharacterAction",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.ControlCharacterAction",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0:0",
+    "LeftUsr": "c:objc(pl)NSLayoutManagerDelegate(im)layoutManager:shouldUseTemporaryAttributes:forDrawingToScreen:atCharacterIndex:effectiveRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(pl)NSLayoutManagerDelegate(im)layoutManager:shouldUseTemporaryAttributes:forDrawingToScreen:atCharacterIndex:effectiveRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSLevelIndicatorCell(im)initWithLevelIndicatorStyle:",
+    "LeftComment": "NSLevelIndicatorStyle",
+    "RightUsr": "",
+    "RightComment": "NSLevelIndicator.Style",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSGestureRecognizer(im)initWithTarget:action:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSMatrix(im)initWithFrame:mode:prototype:numberOfRows:numberOfColumns:",
+    "LeftComment": "NSMatrixMode",
+    "RightUsr": "",
+    "RightComment": "NSMatrix.Mode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSMatrix(im)initWithFrame:mode:cellClass:numberOfRows:numberOfColumns:",
+    "LeftComment": "NSMatrixMode",
+    "RightUsr": "",
+    "RightComment": "NSMatrix.Mode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSMediaLibraryBrowserController(cm)sharedMediaLibraryBrowserController",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMenu(im)indexOfItemWithRepresentedObject:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilitySubrole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilitySubrole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilityRole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilityRole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)NSMenuDelegate(im)menuHasKeyEquivalent:forEvent:target:action:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)NSMenuDelegate(im)menuHasKeyEquivalent:forEvent:target:action:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSMenuItem(cm)setUsesUserKeyEquivalents:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "usesUserKeyEquivalents",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSMenuItem(cm)usesUserKeyEquivalents",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "usesUserKeyEquivalents",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilitySubrole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilitySubrole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilityRole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilityRole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSMutableFontCollection(cm)fontCollectionWithAllAvailableDescriptors",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "withAllAvailableDescriptors",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableFontCollection(cm)fontCollectionWithName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableFontCollection(cm)fontCollectionWithName:visibility:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSMutableFontCollection(cm)fontCollectionWithName:visibility:",
+    "LeftComment": "NSFontCollectionVisibility",
+    "RightUsr": "",
+    "RightComment": "NSFontCollection.Visibility",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSNib(im)initWithNibNamed:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSNib(im)instantiateWithOwner:topLevelObjects:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSOpenGLContext(cm)currentContext",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "current",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSOpenGLContext(im)setValues:forParameter:",
+    "LeftComment": "NSOpenGLContextParameter",
+    "RightUsr": "",
+    "RightComment": "NSOpenGLContext.Parameter",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSOpenGLContext(im)getValues:forParameter:",
+    "LeftComment": "NSOpenGLContextParameter",
+    "RightUsr": "",
+    "RightComment": "NSOpenGLContext.Parameter",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSOutlineView(im)insertItemsAtIndexes:inParent:withAnimation:",
+    "LeftComment": "NSTableViewAnimationOptions",
+    "RightUsr": "",
+    "RightComment": "NSTableView.AnimationOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSOutlineView(im)removeItemsAtIndexes:inParent:withAnimation:",
+    "LeftComment": "NSTableViewAnimationOptions",
+    "RightUsr": "",
+    "RightComment": "NSTableView.AnimationOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(im)animationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(cm)defaultAnimationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPageControllerDelegate(im)pageController:identifierForObject:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPageController.ObjectIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPageControllerDelegate(im)pageController:viewControllerForIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPageController.ObjectIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSGestureRecognizer(im)initWithTarget:action:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSParagraphStyle(cm)defaultParagraphStyle",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSPasteboard(cm)generalPasteboard",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "general",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPasteboard(cm)pasteboardWithName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)prepareForNewContentsWithOptions:",
+    "LeftComment": "NSPasteboardContentsOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ContentsOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)readObjectsForClasses:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)canReadObjectForClasses:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)declareTypes:owner:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)addTypes:owner:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)availableTypeFromArray:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)availableTypeFromArray:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)setData:forType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)setPropertyList:forType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)setString:forType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)dataForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)propertyListForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)stringForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSPasteboard(cm)typesFilterableTo:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPasteboard(cm)typesFilterableTo:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSPasteboard(cm)pasteboardByFilteringData:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSPasteboard(im)readFileContentsType:toFile:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSPasteboardItem(im)availableTypeFromArray:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSPasteboardItem(im)availableTypeFromArray:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSPasteboardItem(im)setDataProvider:forTypes:",
+    "LeftComment": "Any",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPasteboardItem(im)setData:forType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSPasteboardItem(im)setData:forType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPasteboardItem(im)setString:forType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSPasteboardItem(im)setString:forType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPasteboardItem(im)setPropertyList:forType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSPasteboardItem(im)setPropertyList:forType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPasteboardItem(im)dataForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPasteboardItem(im)stringForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPasteboardItem(im)propertyListForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardWritingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.WritingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)pasteboardPropertyListForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardReadingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)NSPasteboardItemDataProvider(im)pasteboard:item:provideDataForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardReadingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardWritingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.WritingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)pasteboardPropertyListForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSPathCell(cm)pathComponentCellClass",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "pathComponentCellClass",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSPersistentDocument(im)writeToURL:ofType:forSaveOperation:originalContentsURL:error:",
+    "LeftComment": "NSSaveOperationType",
+    "RightUsr": "",
+    "RightComment": "NSDocument.SaveOperationType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilitySubrole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilitySubrole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilityRole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilityRole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTouchBarItem(im)initWithIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSGestureRecognizer(im)initWithTarget:action:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPressureConfiguration(im)initWithPressureBehavior:",
+    "LeftComment": "NSPressureBehavior",
+    "RightUsr": "",
+    "RightComment": "NSEvent.PressureBehavior",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSPrintInfo(cm)setSharedPrintInfo:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSPrintInfo(cm)sharedPrintInfo",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSPrintInfo(im)initWithDictionary:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPrintInfo.AttributeKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSPrintInfo(cm)defaultPrinter",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultPrinter",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSPrintOperation(cm)currentOperation",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "current",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSPrintOperation(cm)setCurrentOperation:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "current",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPrintPanel(im)addAccessoryController:",
+    "LeftComment": "NSViewController",
+    "RightUsr": "",
+    "RightComment": "NSViewController & NSPrintPanelAccessorizing",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPrintPanel(im)removeAccessoryController:",
+    "LeftComment": "NSViewController",
+    "RightUsr": "",
+    "RightComment": "NSViewController & NSPrintPanelAccessorizing",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0:0",
+    "LeftUsr": "c:objc(pl)NSPrintPanelAccessorizing(im)localizedSummaryItems",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPrintPanel.AccessorySummaryKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSPrinter(cm)printerNames",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "printerNames",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSPrinter(cm)printerTypes",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "printerTypes",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPrinter(cm)printerWithType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPrinter.TypeName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPrinter(im)pageSizeForPaper:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPrinter.PaperName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSResponder(im)validRequestorForSendType:returnType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType?",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSResponder(im)validRequestorForSendType:returnType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType?",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSResponder(im)wantsScrollEventsForSwipeTrackingOnAxis:",
+    "LeftComment": "NSEventGestureAxis",
+    "RightUsr": "",
+    "RightComment": "NSEvent.GestureAxis",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSResponder(im)wantsForwardedScrollEventsForAxis:",
+    "LeftComment": "NSEventGestureAxis",
+    "RightUsr": "",
+    "RightComment": "NSEvent.GestureAxis",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSResponder(cm)restorableStateKeyPaths",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "restorableStateKeyPaths",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSGestureRecognizer(im)initWithTarget:action:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSRuleEditor(im)rowTypeForRow:",
+    "LeftComment": "NSRuleEditorRowType",
+    "RightUsr": "",
+    "RightComment": "NSRuleEditor.RowType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSRuleEditor(im)insertRowAtIndex:withType:asSubrowOfRow:animate:",
+    "LeftComment": "NSRuleEditorRowType",
+    "RightUsr": "",
+    "RightComment": "NSRuleEditor.RowType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)NSRuleEditorDelegate(im)ruleEditor:numberOfChildrenForCriterion:withRowType:",
+    "LeftComment": "NSRuleEditorRowType",
+    "RightUsr": "",
+    "RightComment": "NSRuleEditor.RowType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)NSRuleEditorDelegate(im)ruleEditor:child:forCriterion:withRowType:",
+    "LeftComment": "NSRuleEditorRowType",
+    "RightUsr": "",
+    "RightComment": "NSRuleEditor.RowType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0:0",
+    "LeftUsr": "c:objc(pl)NSRuleEditorDelegate(im)ruleEditor:predicatePartsForCriterion:withDisplayValue:inRow:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSRuleEditor.PredicatePartKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSRulerView(cm)registerUnitWithName:abbreviation:unitToPointsConversionFactor:stepUpCycle:stepDownCycle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSRulerView.UnitName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSRulerView(im)initWithScrollView:orientation:",
+    "LeftComment": "NSRulerOrientation",
+    "RightUsr": "",
+    "RightComment": "NSRulerView.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSRunningApplication(im)activateWithOptions:",
+    "LeftComment": "NSApplicationActivationOptions",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ActivationOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSRunningApplication(cm)currentApplication",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "current",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:1:0",
+    "LeftUsr": "c:objc(cs)NSSavePanel(im)beginSheetModalForWindow:completionHandler:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ModalResponse",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:1:0",
+    "LeftUsr": "c:objc(cs)NSSavePanel(im)beginWithCompletionHandler:",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ModalResponse",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSavePanel(im)runModal",
+    "LeftComment": "Int",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ModalResponse",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScreen(cm)screens",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "screens",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScreen(cm)mainScreen",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "main",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScreen(cm)deepestScreen",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "deepest",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScreen(cm)screensHaveSeparateSpaces",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "screensHaveSeparateSpaces",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "c:objc(cs)NSScrollView(cm)frameSizeForContentSize:horizontalScrollerClass:verticalScrollerClass:borderType:controlSize:scrollerStyle:",
+    "LeftComment": "NSControlSize",
+    "RightUsr": "",
+    "RightComment": "NSControl.ControlSize",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "6",
+    "LeftUsr": "c:objc(cs)NSScrollView(cm)frameSizeForContentSize:horizontalScrollerClass:verticalScrollerClass:borderType:controlSize:scrollerStyle:",
+    "LeftComment": "NSScrollerStyle",
+    "RightUsr": "",
+    "RightComment": "NSScroller.Style",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "c:objc(cs)NSScrollView(cm)contentSizeForFrameSize:horizontalScrollerClass:verticalScrollerClass:borderType:controlSize:scrollerStyle:",
+    "LeftComment": "NSControlSize",
+    "RightUsr": "",
+    "RightComment": "NSControl.ControlSize",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "6",
+    "LeftUsr": "c:objc(cs)NSScrollView(cm)contentSizeForFrameSize:horizontalScrollerClass:verticalScrollerClass:borderType:controlSize:scrollerStyle:",
+    "LeftComment": "NSScrollerStyle",
+    "RightUsr": "",
+    "RightComment": "NSScroller.Style",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSScrollView(im)addFloatingSubview:forAxis:",
+    "LeftComment": "NSEventGestureAxis",
+    "RightUsr": "",
+    "RightComment": "NSEvent.GestureAxis",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "SetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScrollView(cm)setRulerViewClass:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "rulerViewClass",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScrollView(cm)rulerViewClass",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "rulerViewClass",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScroller(cm)isCompatibleWithOverlayScrollers",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isCompatibleWithOverlayScrollers",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSScroller(cm)scrollerWidthForControlSize:scrollerStyle:",
+    "LeftComment": "NSControlSize",
+    "RightUsr": "",
+    "RightComment": "NSControl.ControlSize",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSScroller(cm)scrollerWidthForControlSize:scrollerStyle:",
+    "LeftComment": "NSScrollerStyle",
+    "RightUsr": "",
+    "RightComment": "NSScroller.Style",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScroller(cm)preferredScrollerStyle",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "preferredScrollerStyle",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSScroller(im)rectForPart:",
+    "LeftComment": "NSScrollerPart",
+    "RightUsr": "",
+    "RightComment": "NSScroller.Part",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSScroller(im)drawArrow:highlight:",
+    "LeftComment": "NSScrollerArrow",
+    "RightUsr": "",
+    "RightComment": "NSScroller.Arrow",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScroller(im)testPart:",
+    "LeftComment": "NSScrollerPart",
+    "RightUsr": "",
+    "RightComment": "NSScroller.Part",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSScrubber(im)scrollItemAtIndex:toAlignment:",
+    "LeftComment": "NSScrubberAlignment",
+    "RightUsr": "",
+    "RightComment": "NSScrubber.Alignment",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSScrubber(im)registerClass:forItemIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSScrubber(im)registerNib:forItemIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSScrubber(im)makeItemWithIdentifier:owner:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScrubberLayout(cm)layoutAttributesClass",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "layoutAttributesClass",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScrubberLayout(im)scrubberContentSize",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "scrubberContentSize",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScrubberLayout(im)shouldInvalidateLayoutForSelectionChange",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shouldInvalidateLayoutForSelectionChange",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScrubberLayout(im)shouldInvalidateLayoutForHighlightChange",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shouldInvalidateLayoutForHighlightChange",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSScrubberLayout(im)automaticallyMirrorsInRightToLeftLayout",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "automaticallyMirrorsInRightToLeftLayout",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextField(cm)textFieldWithString:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextField(cm)textFieldWithString:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSegmentedCell(im)interiorBackgroundStyleForSegment:",
+    "LeftComment": "NSBackgroundStyle",
+    "RightUsr": "",
+    "RightComment": "NSView.BackgroundStyle",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSSegmentedControl(cm)segmentedControlWithLabels:trackingMode:target:action:",
+    "LeftComment": "NSSegmentSwitchTracking",
+    "RightUsr": "",
+    "RightComment": "NSSegmentedControl.SwitchTracking",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSSegmentedControl(cm)segmentedControlWithImages:trackingMode:target:action:",
+    "LeftComment": "NSSegmentSwitchTracking",
+    "RightUsr": "",
+    "RightComment": "NSSegmentedControl.SwitchTracking",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSSeguePerforming(im)performSegueWithIdentifier:sender:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSStoryboardSegue.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSSeguePerforming(im)shouldPerformSegueWithIdentifier:sender:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSStoryboardSegue.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(pl)NSServicesMenuRequestor(im)writeSelectionToPasteboard:types:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSharingService(cm)sharingServiceNamed:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSharingService.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(pl)NSSharingServiceDelegate(im)sharingService:sourceWindowForShareItems:sharingContentScope:",
+    "LeftComment": "NSSharingContentScope",
+    "RightUsr": "",
+    "RightComment": "NSSharingService.SharingContentScope",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTouchBarItem(im)initWithIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilitySubrole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilitySubrole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilityRole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilityRole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSliderCell(cm)prefersTrackingUntilMouseUp",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "prefersTrackingUntilMouseUp",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTouchBarItem(im)initWithIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSound(cm)soundNamed:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSound.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSSound(im)setName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSound.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSound(cm)soundUnfilteredTypes",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "soundUnfilteredTypes",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardReadingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.ReadingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writableTypesForPasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "NSPasteboardWritingOptions",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.WritingOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)writingOptionsForType:pasteboard:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSPasteboardWriting(im)pasteboardPropertyListForType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(im)initWithVoice:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpeechSynthesizer.VoiceName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(im)stopSpeakingAtBoundary:",
+    "LeftComment": "NSSpeechBoundary",
+    "RightUsr": "",
+    "RightComment": "NSSpeechSynthesizer.Boundary",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(im)pauseSpeakingAtBoundary:",
+    "LeftComment": "NSSpeechBoundary",
+    "RightUsr": "",
+    "RightComment": "NSSpeechSynthesizer.Boundary",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(im)voice",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpeechSynthesizer.VoiceName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(im)setVoice:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpeechSynthesizer.VoiceName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(im)addSpeechDictionary:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpeechSynthesizer.DictionaryKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(im)objectForProperty:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpeechSynthesizer.SpeechPropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(im)setObject:forProperty:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpeechSynthesizer.SpeechPropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(cm)isAnyApplicationSpeaking",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isAnyApplicationSpeaking",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(cm)defaultVoice",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultVoice",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(cm)availableVoices",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "availableVoices",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(cm)attributesForVoice:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpeechSynthesizer.VoiceAttributeKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSpeechSynthesizer(cm)attributesForVoice:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpeechSynthesizer.VoiceName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(cm)sharedSpellChecker",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(cm)sharedSpellCheckerExists",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "sharedSpellCheckerExists",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(im)checkString:range:types:options:inSpellDocumentWithTag:orthography:wordCount:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(im)requestCheckingOfString:range:types:options:inSpellDocumentWithTag:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(im)requestCandidatesForSelectedRange:inString:types:options:inSpellDocumentWithTag:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(im)menuForResult:string:options:atLocation:inView:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(im)recordResponse:toCorrection:forWord:language:inSpellDocumentWithTag:",
+    "LeftComment": "NSCorrectionResponse",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.CorrectionResponse",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(im)showCorrectionIndicatorOfType:primaryString:alternativeStrings:forStringInRect:view:completionHandler:",
+    "LeftComment": "NSCorrectionIndicatorType",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.CorrectionIndicatorType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(cm)isAutomaticTextReplacementEnabled",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isAutomaticTextReplacementEnabled",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(cm)isAutomaticSpellingCorrectionEnabled",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isAutomaticSpellingCorrectionEnabled",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(cm)isAutomaticQuoteSubstitutionEnabled",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isAutomaticQuoteSubstitutionEnabled",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(cm)isAutomaticDashSubstitutionEnabled",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isAutomaticDashSubstitutionEnabled",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(cm)isAutomaticCapitalizationEnabled",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isAutomaticCapitalizationEnabled",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(cm)isAutomaticPeriodSubstitutionEnabled",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isAutomaticPeriodSubstitutionEnabled",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSpellChecker(cm)isAutomaticTextCompletionEnabled",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isAutomaticTextCompletionEnabled",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSSplitView(im)holdingPriorityForSubviewAtIndex:",
+    "LeftComment": "NSLayoutPriority",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Priority",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSplitView(im)setHoldingPriority:forSubviewAtIndex:",
+    "LeftComment": "NSLayoutPriority",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Priority",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(im)animationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(cm)defaultAnimationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSStackView(im)setVisibilityPriority:forView:",
+    "LeftComment": "NSStackViewVisibilityPriority",
+    "RightUsr": "",
+    "RightComment": "NSStackView.VisibilityPriority",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSStackView(im)visibilityPriorityForView:",
+    "LeftComment": "NSStackViewVisibilityPriority",
+    "RightUsr": "",
+    "RightComment": "NSStackView.VisibilityPriority",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSStackView(im)clippingResistancePriorityForOrientation:",
+    "LeftComment": "NSLayoutPriority",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Priority",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSStackView(im)clippingResistancePriorityForOrientation:",
+    "LeftComment": "NSLayoutConstraintOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSStackView(im)setClippingResistancePriority:forOrientation:",
+    "LeftComment": "NSLayoutPriority",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Priority",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSStackView(im)setClippingResistancePriority:forOrientation:",
+    "LeftComment": "NSLayoutConstraintOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSStackView(im)huggingPriorityForOrientation:",
+    "LeftComment": "NSLayoutPriority",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Priority",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSStackView(im)huggingPriorityForOrientation:",
+    "LeftComment": "NSLayoutConstraintOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSStackView(im)setHuggingPriority:forOrientation:",
+    "LeftComment": "NSLayoutPriority",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Priority",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSStackView(im)setHuggingPriority:forOrientation:",
+    "LeftComment": "NSLayoutConstraintOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSStackView(im)addView:inGravity:",
+    "LeftComment": "NSStackViewGravity",
+    "RightUsr": "",
+    "RightComment": "NSStackView.Gravity",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSStackView(im)insertView:atIndex:inGravity:",
+    "LeftComment": "NSStackViewGravity",
+    "RightUsr": "",
+    "RightComment": "NSStackView.Gravity",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSStackView(im)viewsInGravity:",
+    "LeftComment": "NSStackViewGravity",
+    "RightUsr": "",
+    "RightComment": "NSStackView.Gravity",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSStackView(im)setViews:inGravity:",
+    "LeftComment": "NSStackViewGravity",
+    "RightUsr": "",
+    "RightComment": "NSStackView.Gravity",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSStatusBar(cm)systemStatusBar",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "system",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSStatusItem(im)sendActionOn:",
+    "LeftComment": "NSEventMask",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventTypeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSStoryboard(cm)storyboardWithName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSStoryboard.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSStoryboard(im)instantiateControllerWithIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSStoryboard.SceneIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSStoryboardSegue(cm)segueWithIdentifier:source:destination:performHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSStoryboardSegue.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSStoryboardSegue(im)initWithIdentifier:source:destination:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSStoryboardSegue.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSTIFFCompression@NSTIFFCompressionCCITTFAX3",
+    "LeftComment": "CCITTFAX3",
+    "RightUsr": "",
+    "RightComment": "ccittfax3",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSTIFFCompression@NSTIFFCompressionCCITTFAX4",
+    "LeftComment": "CCITTFAX4",
+    "RightUsr": "",
+    "RightComment": "ccittfax4",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSTIFFCompression@NSTIFFCompressionLZW",
+    "LeftComment": "LZW",
+    "RightUsr": "",
+    "RightComment": "lzw",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSTIFFCompression@NSTIFFCompressionJPEG",
+    "LeftComment": "JPEG",
+    "RightUsr": "",
+    "RightComment": "jpeg",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@NSTIFFCompression@NSTIFFCompressionNEXT",
+    "LeftComment": "NEXT",
+    "RightUsr": "",
+    "RightComment": "next",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTabViewController(im)toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSToolbarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSTabViewController(im)toolbarDefaultItemIdentifiers:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSToolbarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSTabViewController(im)toolbarAllowedItemIdentifiers:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSToolbarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSTabViewController(im)toolbarSelectableItemIdentifiers:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSToolbarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTableColumn(im)initWithIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTableView(im)columnWithIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTableView(im)tableColumnWithIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTableView(im)setDropRow:dropOperation:",
+    "LeftComment": "NSTableViewDropOperation",
+    "RightUsr": "",
+    "RightComment": "NSTableView.DropOperation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTableView(im)makeViewWithIdentifier:owner:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTableView(im)makeViewWithIdentifier:owner:",
+    "LeftComment": "make(withIdentifier:owner:)",
+    "RightUsr": "",
+    "RightComment": "makeView(withIdentifier:owner:)",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTableView(im)insertRowsAtIndexes:withAnimation:",
+    "LeftComment": "NSTableViewAnimationOptions",
+    "RightUsr": "",
+    "RightComment": "NSTableView.AnimationOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTableView(im)removeRowsAtIndexes:withAnimation:",
+    "LeftComment": "NSTableViewAnimationOptions",
+    "RightUsr": "",
+    "RightComment": "NSTableView.AnimationOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTableView(im)hideRowsAtIndexes:withAnimation:",
+    "LeftComment": "NSTableViewAnimationOptions",
+    "RightUsr": "",
+    "RightComment": "NSTableView.AnimationOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTableView(im)unhideRowsAtIndexes:withAnimation:",
+    "LeftComment": "NSTableViewAnimationOptions",
+    "RightUsr": "",
+    "RightComment": "NSTableView.AnimationOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTableView(im)registerNib:forIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:writablePasteboardTypesForCell:atIndex:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:writeCell:atIndex:toPasteboard:type:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldChangeTypingAttributes:toAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldChangeTypingAttributes:toAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:willCheckTextInRange:options:types:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:willCheckTextInRange:options:types:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:didCheckTextInRange:types:options:results:orthography:wordCount:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldUpdateTouchBarItemIdentifiers:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldUpdateTouchBarItemIdentifiers:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)NSTableViewDataSource(im)tableView:validateDrop:proposedRow:proposedDropOperation:",
+    "LeftComment": "NSTableViewDropOperation",
+    "RightUsr": "",
+    "RightComment": "NSTableView.DropOperation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)NSTableViewDataSource(im)tableView:acceptDrop:row:dropOperation:",
+    "LeftComment": "NSTableViewDropOperation",
+    "RightUsr": "",
+    "RightComment": "NSTableView.DropOperation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)NSTableViewDelegate(im)tableView:rowActionsForRow:edge:",
+    "LeftComment": "NSTableRowActionEdge",
+    "RightUsr": "",
+    "RightComment": "NSTableView.RowActionEdge",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTableViewRowAction(cm)rowActionWithStyle:title:handler:",
+    "LeftComment": "NSTableViewRowActionStyle",
+    "RightUsr": "",
+    "RightComment": "NSTableViewRowAction.Style",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)setValue:type:forDimension:",
+    "LeftComment": "NSTextBlockValueType",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.ValueType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)setValue:type:forDimension:",
+    "LeftComment": "NSTextBlockDimension",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.Dimension",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)valueForDimension:",
+    "LeftComment": "NSTextBlockDimension",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.Dimension",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)valueTypeForDimension:",
+    "LeftComment": "NSTextBlockValueType",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.ValueType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)valueTypeForDimension:",
+    "LeftComment": "NSTextBlockDimension",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.Dimension",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)setContentWidth:type:",
+    "LeftComment": "NSTextBlockValueType",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.ValueType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)setWidth:type:forLayer:edge:",
+    "LeftComment": "NSTextBlockValueType",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.ValueType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)setWidth:type:forLayer:edge:",
+    "LeftComment": "NSTextBlockLayer",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.Layer",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)setWidth:type:forLayer:",
+    "LeftComment": "NSTextBlockValueType",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.ValueType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)setWidth:type:forLayer:",
+    "LeftComment": "NSTextBlockLayer",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.Layer",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)widthForLayer:edge:",
+    "LeftComment": "NSTextBlockLayer",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.Layer",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)widthValueTypeForLayer:edge:",
+    "LeftComment": "NSTextBlockValueType",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.ValueType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextBlock(im)widthValueTypeForLayer:edge:",
+    "LeftComment": "NSTextBlockLayer",
+    "RightUsr": "",
+    "RightComment": "NSTextBlock.Layer",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextField(cm)textFieldWithString:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextFinder(im)performAction:",
+    "LeftComment": "NSTextFinderAction",
+    "RightUsr": "",
+    "RightComment": "NSTextFinder.Action",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextFinder(im)validateAction:",
+    "LeftComment": "NSTextFinderAction",
+    "RightUsr": "",
+    "RightComment": "NSTextFinder.Action",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextInputClient(im)validAttributesForMarkedText",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTextInputContext(cm)currentInputContext",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "current",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextInputContext(cm)localizedNameForInputSource:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextInputSourceIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextList(im)initWithMarkerFormat:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextList.MarkerFormat",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSPasteboardReading(im)initWithPasteboardPropertyList:ofType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithHTML:options:documentAttributes:",
+    "LeftComment": "AnyHashable",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithString:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)NSTextTab(im)initWithTextAlignment:location:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextTab.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextTab(im)initWithType:location:",
+    "LeftComment": "NSTextTabType",
+    "RightUsr": "",
+    "RightComment": "NSParagraphStyle.TextTabType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextView(im)setLayoutOrientation:",
+    "LeftComment": "NSTextLayoutOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.TextLayoutOrientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextInputClient(im)validAttributesForMarkedText",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSTouchBarDelegate(im)touchBar:makeItemForIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)NSTextView(im)checkTextInRange:types:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0",
+    "LeftUsr": "c:objc(cs)NSTextView(im)handleTextCheckingResults:forRange:types:options:orthography:wordCount:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTextView(im)dragOperationForDraggingInfo:type:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTextView(im)writeSelectionToPasteboard:type:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSTextView(im)writeSelectionToPasteboard:types:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSTextView(im)preferredPasteboardTypeFromArray:restrictedToTypesFromArray:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSTextView(im)preferredPasteboardTypeFromArray:restrictedToTypesFromArray:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSTextView(im)preferredPasteboardTypeFromArray:restrictedToTypesFromArray:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTextView(im)readSelectionFromPasteboard:type:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextView(im)validRequestorForSendType:returnType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType?",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTextView(im)validRequestorForSendType:returnType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType?",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:writablePasteboardTypesForCell:atIndex:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:writeCell:atIndex:toPasteboard:type:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldChangeTypingAttributes:toAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldChangeTypingAttributes:toAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:willCheckTextInRange:options:types:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:willCheckTextInRange:options:types:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:didCheckTextInRange:types:options:results:orthography:wordCount:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSSpellChecker.OptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldUpdateTouchBarItemIdentifiers:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldUpdateTouchBarItemIdentifiers:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(im)animationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(cm)defaultAnimationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTokenField(cm)defaultCompletionDelay",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultCompletionDelay",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTokenField(cm)defaultTokenizingCharacterSet",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultTokenizingCharacterSet",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTextField(cm)textFieldWithString:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTokenFieldCell(cm)defaultCompletionDelay",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultCompletionDelay",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTokenFieldCell(cm)defaultTokenizingCharacterSet",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultTokenizingCharacterSet",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSTokenFieldCellDelegate(im)tokenFieldCell:representedObjectForEditingString:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSTokenFieldCellDelegate(im)tokenFieldCell:styleForRepresentedObject:",
+    "LeftComment": "NSTokenStyle",
+    "RightUsr": "",
+    "RightComment": "NSTokenField.TokenStyle",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSTokenFieldDelegate(im)tokenField:representedObjectForEditingString:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSTokenFieldDelegate(im)tokenField:styleForRepresentedObject:",
+    "LeftComment": "NSTokenStyle",
+    "RightUsr": "",
+    "RightComment": "NSTokenField.TokenStyle",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSToolbar(im)initWithIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSToolbar.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSToolbar(im)insertItemWithItemIdentifier:atIndex:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSToolbarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSToolbarDelegate(im)toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSToolbarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSToolbarDelegate(im)toolbarDefaultItemIdentifiers:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSToolbarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSToolbarDelegate(im)toolbarAllowedItemIdentifiers:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSToolbarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSToolbarDelegate(im)toolbarSelectableItemIdentifiers:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSToolbarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSToolbarItem(im)initWithItemIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSToolbarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSToolbarItem(im)initWithItemIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSToolbarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTouchBar(im)itemForIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSTouchBarDelegate(im)touchBar:makeItemForIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTouchBarItem(im)initWithIdentifier:",
+    "LeftComment": "NSTouchBarItemIdentifier",
+    "RightUsr": "",
+    "RightComment": "NSTouchBarItem.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSTrackingArea(im)initWithRect:options:owner:userInfo:",
+    "LeftComment": "NSTrackingAreaOptions",
+    "RightUsr": "",
+    "RightComment": "NSTrackingArea.Options",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTypesetter(cm)sharedSystemTypesetter",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "sharedSystemTypesetter",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSTypesetter(cm)sharedSystemTypesetterForBehavior:",
+    "LeftComment": "NSTypesetterBehavior",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.TypesetterBehavior",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTypesetter(cm)defaultTypesetterBehavior",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultTypesetterBehavior",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSUserDefaultsController(cm)sharedUserDefaultsController",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSView(im)addSubview:positioned:relativeTo:",
+    "LeftComment": "NSWindowOrderingMode",
+    "RightUsr": "",
+    "RightComment": "NSWindow.OrderingMode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSView(cm)focusView",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "focusView",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSView(cm)defaultMenu",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultMenu",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSView(im)getRectsExposedDuringLiveResize:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSView(cm)isCompatibleWithResponsiveScrolling",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "isCompatibleWithResponsiveScrolling",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(im)animationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(cm)defaultAnimationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSDraggingDestination(im)draggingEnded:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilitySubrole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilitySubrole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilityRole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilityRole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSView(im)constraintsAffectingLayoutForOrientation:",
+    "LeftComment": "NSLayoutConstraintOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSView(im)contentHuggingPriorityForOrientation:",
+    "LeftComment": "NSLayoutPriority",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Priority",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSView(im)contentHuggingPriorityForOrientation:",
+    "LeftComment": "NSLayoutConstraintOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSView(im)setContentHuggingPriority:forOrientation:",
+    "LeftComment": "NSLayoutPriority",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Priority",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSView(im)setContentHuggingPriority:forOrientation:",
+    "LeftComment": "NSLayoutConstraintOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSView(im)contentCompressionResistancePriorityForOrientation:",
+    "LeftComment": "NSLayoutPriority",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Priority",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSView(im)contentCompressionResistancePriorityForOrientation:",
+    "LeftComment": "NSLayoutConstraintOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSView(im)setContentCompressionResistancePriority:forOrientation:",
+    "LeftComment": "NSLayoutPriority",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Priority",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSView(im)setContentCompressionResistancePriority:forOrientation:",
+    "LeftComment": "NSLayoutConstraintOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSView(cm)requiresConstraintBasedLayout",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "requiresConstraintBasedLayout",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSView(im)showDefinitionForAttributedString:range:options:baselineOriginProvider:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSView.DefinitionOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSView(im)enterFullScreenMode:withOptions:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSView.FullScreenModeOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSView(im)exitFullScreenModeWithOptions:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSView.FullScreenModeOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSView(im)registerForDraggedTypes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSView(im)registerForDraggedTypes:",
+    "LeftComment": "register(forDraggedTypes:)",
+    "RightUsr": "",
+    "RightComment": "registerForDraggedTypes(_:)",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSView(im)print:",
+    "LeftComment": "print(_:)",
+    "RightUsr": "",
+    "RightComment": "printView(_:)",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSView(cm)defaultFocusRingType",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultFocusRingType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSViewAnimation(im)initWithViewAnimations:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSViewAnimation.Key",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSAnimation(im)initWithDuration:animationCurve:",
+    "LeftComment": "NSAnimationCurve",
+    "RightUsr": "",
+    "RightComment": "NSAnimation.Curve",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSSeguePerforming(im)performSegueWithIdentifier:sender:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSStoryboardSegue.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSSeguePerforming(im)shouldPerformSegueWithIdentifier:sender:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSStoryboardSegue.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5",
+    "LeftUsr": "c:objc(cs)NSViewController(im)presentViewController:asPopoverRelativeToRect:ofView:preferredEdge:behavior:",
+    "LeftComment": "NSPopoverBehavior",
+    "RightUsr": "",
+    "RightComment": "NSPopover.Behavior",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSViewController(im)transitionFromViewController:toViewController:options:completionHandler:",
+    "LeftComment": "NSViewControllerTransitionOptions",
+    "RightUsr": "",
+    "RightComment": "NSViewController.TransitionOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(cm)frameRectForContentRect:styleMask:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(cm)contentRectForFrameRect:styleMask:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(cm)minFrameWidthWithTitle:styleMask:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSWindow(cm)defaultDepthLimit",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultDepthLimit",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWindow(im)initWithContentRect:styleMask:backing:defer:screen:",
+    "LeftComment": "NSBackingStoreType",
+    "RightUsr": "",
+    "RightComment": "NSWindow.BackingStoreType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)validRequestorForSendType:returnType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType?",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)validRequestorForSendType:returnType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType?",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)orderWindow:relativeTo:",
+    "LeftComment": "NSWindowOrderingMode",
+    "RightUsr": "",
+    "RightComment": "NSWindow.OrderingMode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSWindow(im)print:",
+    "LeftComment": "print(_:)",
+    "RightUsr": "",
+    "RightComment": "printWindow(_:)",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)saveFrameUsingName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSWindow.FrameAutosaveName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)setFrameUsingName:force:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSWindow.FrameAutosaveName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)setFrameUsingName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSWindow.FrameAutosaveName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)setFrameAutosaveName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSWindow.FrameAutosaveName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(cm)removeFrameUsingName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSWindow.FrameAutosaveName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1:0",
+    "LeftUsr": "c:objc(cs)NSWindow(im)beginSheet:completionHandler:",
+    "LeftComment": "NSModalResponse",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ModalResponse",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1:0",
+    "LeftUsr": "c:objc(cs)NSWindow(im)beginCriticalSheet:completionHandler:",
+    "LeftComment": "NSModalResponse",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ModalResponse",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)endSheet:returnCode:",
+    "LeftComment": "NSModalResponse",
+    "RightUsr": "",
+    "RightComment": "NSApplication.ModalResponse",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(cm)standardWindowButton:forStyleMask:",
+    "LeftComment": "NSWindowButton",
+    "RightUsr": "",
+    "RightComment": "NSWindow.ButtonType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(cm)standardWindowButton:forStyleMask:",
+    "LeftComment": "NSWindowStyleMask",
+    "RightUsr": "",
+    "RightComment": "NSWindow.StyleMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)standardWindowButton:",
+    "LeftComment": "NSWindowButton",
+    "RightUsr": "",
+    "RightComment": "NSWindow.ButtonType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)addChildWindow:ordered:",
+    "LeftComment": "NSWindowOrderingMode",
+    "RightUsr": "",
+    "RightComment": "NSWindow.OrderingMode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(cm)windowNumbersWithOptions:",
+    "LeftComment": "NSWindowNumberListOptions",
+    "RightUsr": "",
+    "RightComment": "NSWindow.NumberListOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSWindow(cm)windowNumbersWithOptions:",
+    "LeftComment": "windowNumbers(withOptions:)",
+    "RightUsr": "",
+    "RightComment": "windowNumbers(options:)",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)addTabbedWindow:ordered:",
+    "LeftComment": "NSWindowOrderingMode",
+    "RightUsr": "",
+    "RightComment": "NSWindow.OrderingMode",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(im)animationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSAnimatablePropertyContainer(cm)defaultAnimationForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAnimatablePropertyKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilitySubrole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilitySubrole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilitySubrole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)accessibilityRole",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(pl)NSAccessibility(im)setAccessibilityRole:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAccessibilityRole",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)trackEventsMatchingMask:timeout:mode:handler:",
+    "LeftComment": "NSEventMask",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventTypeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "4:1:0",
+    "LeftUsr": "c:objc(cs)NSWindow(im)trackEventsMatchingMask:timeout:mode:handler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSWindow(im)visualizeConstraints:",
+    "LeftComment": "NSLayoutConstraint",
+    "RightUsr": "",
+    "RightComment": "[NSLayoutConstraint]",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)visualizeConstraints:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSWindow(im)anchorAttributeForOrientation:",
+    "LeftComment": "NSLayoutAttribute",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Attribute",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)anchorAttributeForOrientation:",
+    "LeftComment": "NSLayoutConstraintOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)setAnchorAttribute:forOrientation:",
+    "LeftComment": "NSLayoutAttribute",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Attribute",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWindow(im)setAnchorAttribute:forOrientation:",
+    "LeftComment": "NSLayoutConstraintOrientation",
+    "RightUsr": "",
+    "RightComment": "NSLayoutConstraint.Orientation",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSWindow(im)registerForDraggedTypes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSPasteboard.PasteboardType",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)nextEventMatchingMask:",
+    "LeftComment": "NSEventMask",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventTypeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)nextEventMatchingMask:untilDate:inMode:dequeue:",
+    "LeftComment": "NSEventMask",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventTypeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindow(im)discardEventsMatchingMask:beforeEvent:",
+    "LeftComment": "NSEventMask",
+    "RightUsr": "",
+    "RightComment": "NSEvent.EventTypeMask",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:owner:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSSeguePerforming(im)performSegueWithIdentifier:sender:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSStoryboardSegue.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSSeguePerforming(im)shouldPerformSegueWithIdentifier:sender:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSStoryboardSegue.Identifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSWindowDelegate(im)windowShouldClose:",
+    "LeftComment": "Any",
+    "RightUsr": "",
+    "RightComment": "NSWindow",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSWindowDelegate(im)window:willUseFullScreenPresentationOptions:",
+    "LeftComment": "NSApplicationPresentationOptions",
+    "RightUsr": "",
+    "RightComment": "NSApplication.PresentationOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSWindowDelegate(im)window:willUseFullScreenPresentationOptions:",
+    "LeftComment": "NSApplicationPresentationOptions",
+    "RightUsr": "",
+    "RightComment": "NSApplication.PresentationOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)NSWindowRestoration(cm)restoreWindowWithIdentifier:state:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSUserInterfaceItemIdentifier",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSWorkspace(cm)sharedWorkspace",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWorkspace(im)launchApplicationAtURL:options:configuration:error:",
+    "LeftComment": "NSWorkspaceLaunchOptions",
+    "RightUsr": "",
+    "RightComment": "NSWorkspace.LaunchOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)NSWorkspace(im)launchApplicationAtURL:options:configuration:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSWorkspace.LaunchConfigurationKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWorkspace(im)openURL:options:configuration:error:",
+    "LeftComment": "NSWorkspaceLaunchOptions",
+    "RightUsr": "",
+    "RightComment": "NSWorkspace.LaunchOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)NSWorkspace(im)openURL:options:configuration:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSWorkspace.LaunchConfigurationKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWorkspace(im)openURLs:withApplicationAtURL:options:configuration:error:",
+    "LeftComment": "NSWorkspaceLaunchOptions",
+    "RightUsr": "",
+    "RightComment": "NSWorkspace.LaunchOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0",
+    "LeftUsr": "c:objc(cs)NSWorkspace(im)openURLs:withApplicationAtURL:options:configuration:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSWorkspace.LaunchConfigurationKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWorkspace(im)setIcon:forFile:options:",
+    "LeftComment": "NSWorkspaceIconCreationOptions",
+    "RightUsr": "",
+    "RightComment": "NSWorkspace.IconCreationOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSWorkspace(im)launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:",
+    "LeftComment": "NSWorkspaceLaunchOptions",
+    "RightUsr": "",
+    "RightComment": "NSWorkspace.LaunchOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)NSWorkspace(im)openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers:",
+    "LeftComment": "NSWorkspaceLaunchOptions",
+    "RightUsr": "",
+    "RightComment": "NSWorkspace.LaunchOptions",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)NSWorkspace(im)setDesktopImageURL:forScreen:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSWorkspace.DesktopImageOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0:0",
+    "LeftUsr": "c:objc(cs)NSWorkspace(im)desktopImageOptionsForScreen:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSWorkspace.DesktopImageOptionKey",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWorkspace(im)performFileOperation:source:destination:files:tag:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSWorkspace.FileOperationName",
+    "ModuleName": "AppKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAsset(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAsset(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAsset(im)metadataForFormat:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataFormat",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)AVAsset(im)chapterMetadataGroupsWithTitleLocale:containingItemsWithCommonKeys:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataKey",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAsset(im)mediaSelectionGroupForMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)AVAssetExportSession(cm)determineCompatibilityOfExportPreset:withAsset:outputFileType:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:1:0:0",
+    "LeftUsr": "c:objc(cs)AVAssetExportSession(im)determineCompatibleFileTypesWithCompletionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetTrack(im)hasMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetTrack(im)metadataForFormat:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataFormat",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetTrack(im)associatedTracksOfType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVAssetTrack.AssociationType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVAssetWriter(cm)assetWriterWithURL:fileType:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVAssetWriter(im)initWithURL:fileType:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVAssetWriter(im)canApplyOutputSettings:forMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetWriterInput(im)initWithMediaType:outputSettings:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetWriterInput(im)initWithMediaType:outputSettings:sourceFormatHint:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioChannelLayout(im)initWithLayoutTag:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioConverter(im)initFromFormat:toFormat:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithStreamDescription:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithStreamDescription:channelLayout:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initStandardFormatWithSampleRate:channels:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithCommonFormat:sampleRate:channels:interleaved:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithSettings:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioNode(im)nameForInputBus:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioNode(im)nameForOutputBus:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioPCMBuffer(im)initWithPCMFormat:frameCapacity:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioTime(im)extrapolateTimeFromAnchor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureAudioDataOutput(im)setSampleBufferDelegate:queue:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureAudioDataOutput(im)setSampleBufferDelegate:queue:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureAudioDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureAudioDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureAudioDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureAudioDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "captureOutput(_:didOutputSampleBuffer:from:)",
+    "RightUsr": "",
+    "RightComment": "captureOutput(_:didOutput:from:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureAudioFileOutput(cm)availableOutputFileTypes",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVFileType]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureAudioFileOutput(im)startRecordingToOutputFileURL:outputFileType:recordingDelegate:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureAudioFileOutput(im)startRecordingToOutputFileURL:outputFileType:recordingDelegate:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)AVCaptureAudioFileOutput(im)startRecordingToOutputFileURL:outputFileType:recordingDelegate:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureAudioFileOutput(im)startRecordingToOutputFileURL:outputFileType:recordingDelegate:",
+    "LeftComment": "startRecording(toOutputFileURL:outputFileType:recordingDelegate:)",
+    "RightUsr": "",
+    "RightComment": "startRecording(to:outputFileType:recordingDelegate:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureConnection(im)initWithInputPorts:output:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureConnection(im)initWithInputPorts:output:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureInput.Port]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureConnection(im)initWithInputPorts:output:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureConnection(im)initWithInputPort:videoPreviewLayer:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureConnection(im)initWithInputPort:videoPreviewLayer:",
+    "LeftComment": "AVCaptureInputPort!",
+    "RightUsr": "",
+    "RightComment": "AVCaptureInput.Port",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureConnection(im)initWithInputPort:videoPreviewLayer:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)devices",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureDevice]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)devicesWithMediaType:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureDevice]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)devicesWithMediaType:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)devicesWithMediaType:",
+    "LeftComment": "devices(withMediaType:)",
+    "RightUsr": "",
+    "RightComment": "devices(for:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)defaultDeviceWithMediaType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)defaultDeviceWithMediaType:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)defaultDeviceWithMediaType:",
+    "LeftComment": "defaultDevice(withMediaType:)",
+    "RightUsr": "",
+    "RightComment": "default(for:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)deviceWithUniqueID:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(cm)deviceWithUniqueID:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)hasMediaType:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)supportsAVCaptureSessionPreset:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVCaptureSession.Preset",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)supportsAVCaptureSessionPreset:",
+    "LeftComment": "supportsAVCaptureSessionPreset(_:)",
+    "RightUsr": "",
+    "RightComment": "supportsSessionPreset(_:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)isFlashModeSupported:",
+    "LeftComment": "AVCaptureFlashMode",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.FlashMode",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)isTorchModeSupported:",
+    "LeftComment": "AVCaptureTorchMode",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.TorchMode",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)isFocusModeSupported:",
+    "LeftComment": "AVCaptureFocusMode",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.FocusMode",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)isExposureModeSupported:",
+    "LeftComment": "AVCaptureExposureMode",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.ExposureMode",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)isWhiteBalanceModeSupported:",
+    "LeftComment": "AVCaptureWhiteBalanceMode",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.WhiteBalanceMode",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDevice(im)setTransportControlsPlaybackMode:speed:",
+    "LeftComment": "AVCaptureDeviceTransportControlsPlaybackMode",
+    "RightUsr": "",
+    "RightComment": "AVCaptureDevice.TransportControlsPlaybackMode",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureDeviceInput(im)initWithDevice:error:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@AVCaptureDeviceTransportControlsPlaybackMode@AVCaptureDeviceTransportControlsNotPlayingMode",
+    "LeftComment": "notPlayingMode",
+    "RightUsr": "",
+    "RightComment": "notPlaying",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@AVCaptureDeviceTransportControlsPlaybackMode@AVCaptureDeviceTransportControlsPlayingMode",
+    "LeftComment": "playingMode",
+    "RightUsr": "",
+    "RightComment": "playing",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureFileOutput(im)startRecordingToOutputFileURL:recordingDelegate:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureFileOutput(im)startRecordingToOutputFileURL:recordingDelegate:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureFileOutput(im)startRecordingToOutputFileURL:recordingDelegate:",
+    "LeftComment": "startRecording(toOutputFileURL:recordingDelegate:)",
+    "RightUsr": "",
+    "RightComment": "startRecording(to:recordingDelegate:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputDelegate(im)captureOutputShouldProvideSampleAccurateRecordingStart:",
+    "LeftComment": "AVCaptureOutput!",
+    "RightUsr": "",
+    "RightComment": "AVCaptureFileOutput",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputDelegate(im)captureOutputShouldProvideSampleAccurateRecordingStart:",
+    "LeftComment": "captureOutputShouldProvideSampleAccurateRecordingStart(_:)",
+    "RightUsr": "",
+    "RightComment": "fileOutputShouldProvideSampleAccurateRecordingStart(_:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "capture(_:didOutputSampleBuffer:from:)",
+    "RightUsr": "",
+    "RightComment": "fileOutput(_:didOutputSampleBuffer:from:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didStartRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didStartRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didStartRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureConnection]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didStartRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "capture(_:didStartRecordingToOutputFileAt:fromConnections:)",
+    "RightUsr": "",
+    "RightComment": "fileOutput(_:didStartRecordingTo:from:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didPauseRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didPauseRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didPauseRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureConnection]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didPauseRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "capture(_:didPauseRecordingToOutputFileAt:fromConnections:)",
+    "RightUsr": "",
+    "RightComment": "fileOutput(_:didPauseRecordingTo:from:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didResumeRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didResumeRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didResumeRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureConnection]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didResumeRecordingToOutputFileAtURL:fromConnections:",
+    "LeftComment": "capture(_:didResumeRecordingToOutputFileAt:fromConnections:)",
+    "RightUsr": "",
+    "RightComment": "fileOutput(_:didResumeRecordingTo:from:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:willFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:willFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:willFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureConnection]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:willFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:willFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "capture(_:willFinishRecordingToOutputFileAt:fromConnections:error:)",
+    "RightUsr": "",
+    "RightComment": "fileOutput(_:willFinishRecordingTo:from:error:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "[Any]!",
+    "RightUsr": "",
+    "RightComment": "[AVCaptureConnection]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureFileOutputRecordingDelegate(im)captureOutput:didFinishRecordingToOutputFileAtURL:fromConnections:error:",
+    "LeftComment": "capture(_:didFinishRecordingToOutputFileAt:fromConnections:error:)",
+    "RightUsr": "",
+    "RightComment": "fileOutput(_:didFinishRecordingTo:from:error:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureMovieFileOutput(im)outputSettingsForConnection:",
+    "LeftComment": "[AnyHashable : Any]!",
+    "RightUsr": "",
+    "RightComment": "[String : Any]",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureMovieFileOutput(im)outputSettingsForConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureMovieFileOutput(im)setOutputSettings:forConnection:",
+    "LeftComment": "[AnyHashable : Any]!",
+    "RightUsr": "",
+    "RightComment": "[String : Any]?",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureMovieFileOutput(im)setOutputSettings:forConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureOutput(im)connectionWithMediaType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureOutput(im)connectionWithMediaType:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureOutput(im)connectionWithMediaType:",
+    "LeftComment": "connection(withMediaType:)",
+    "RightUsr": "",
+    "RightComment": "connection(with:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureScreenInput(im)initWithDisplayID:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)canSetSessionPreset:",
+    "LeftComment": "String!",
+    "RightUsr": "",
+    "RightComment": "AVCaptureSession.Preset",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)canAddInput:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)addInput:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)removeInput:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)canAddOutput:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)addOutput:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)removeOutput:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)addInputWithNoConnections:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)addOutputWithNoConnections:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)canAddConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)addConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureSession(im)removeConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(im)captureStillImageAsynchronouslyFromConnection:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(im)captureStillImageAsynchronouslyFromConnection:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(cm)jpegStillImageNSDataRepresentation:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureStillImageOutput(cm)jpegStillImageNSDataRepresentation:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoDataOutput(im)setSampleBufferDelegate:queue:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoDataOutput(im)setSampleBufferDelegate:queue:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoDataOutput(py)availableVideoCVPixelFormatTypes",
+    "LeftComment": "availableVideoCVPixelFormatTypes",
+    "RightUsr": "",
+    "RightComment": "availableVideoPixelFormatTypes",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didOutputSampleBuffer:fromConnection:",
+    "LeftComment": "captureOutput(_:didOutputSampleBuffer:from:)",
+    "RightUsr": "",
+    "RightComment": "captureOutput(_:didOutput:from:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didDropSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didDropSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVCaptureVideoDataOutputSampleBufferDelegate(im)captureOutput:didDropSampleBuffer:fromConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)initWithSession:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)initWithSession:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)initWithSessionWithNoConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)initWithSessionWithNoConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVCaptureVideoPreviewLayer(im)setSessionWithNoConnection:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVComposition(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVComposition(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVContentKeyRequest(im)makeStreamingContentKeyRequestDataForApp:contentIdentifier:options:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVContentKeySession(cm)contentKeySessionWithKeySystem:storageDirectoryAtURL:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVContentKeySession(cm)pendingExpiredSessionReportsWithAppIdentifier:storageDirectoryAtURL:",
+    "LeftComment": "[AnyHashable : Any]",
+    "RightUsr": "",
+    "RightComment": "Data",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)AVContentKeySession(cm)removePendingExpiredSessionReports:withAppIdentifier:storageDirectoryAtURL:",
+    "LeftComment": "[AnyHashable : Any]",
+    "RightUsr": "",
+    "RightComment": "Data",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVFragmentedAsset(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVFragmentedAsset(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVFragmentedAssetMinder(cm)fragmentedAssetMinderWithAsset:mindingInterval:",
+    "LeftComment": "AVAsset",
+    "RightUsr": "",
+    "RightComment": "AVAsset & AVFragmentMinding",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVFragmentedAssetMinder(im)addFragmentedAsset:",
+    "LeftComment": "AVAsset",
+    "RightUsr": "",
+    "RightComment": "AVAsset & AVFragmentMinding",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVFragmentedAssetMinder(im)removeFragmentedAsset:",
+    "LeftComment": "AVAsset",
+    "RightUsr": "",
+    "RightComment": "AVAsset & AVFragmentMinding",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVFragmentedMovie(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVFragmentedMovie(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVFragmentedAssetMinder(cm)fragmentedAssetMinderWithAsset:mindingInterval:",
+    "LeftComment": "AVAsset",
+    "RightUsr": "",
+    "RightComment": "AVAsset & AVFragmentMinding",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMediaSelectionOption(im)hasMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)metadataItemsFromArray:filteredByIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataIdentifier",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)identifierForKey:keySpace:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataIdentifier",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)identifierForKey:keySpace:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataKeySpace",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)keySpaceForIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataKeySpace",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)keySpaceForIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataIdentifier",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)keyForIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataIdentifier",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)metadataItemsFromArray:withKey:keySpace:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataKeySpace",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVMovie(cm)movieTypes",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMovie(im)movieHeaderWithFileType:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVMovie(im)writeMovieHeaderToURL:fileType:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMovie(im)isCompatibleWithFileType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMovie(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMovie(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVMutableComposition(im)addMutableTrackWithMediaType:preferredTrackID:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMutableComposition(im)addMutableTrackWithMediaType:preferredTrackID:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMutableComposition(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMutableComposition(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVMutableMovie(im)addMutableTrackWithMediaType:copySettingsFromTrack:options:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMutableMovie(im)addMutableTrackWithMediaType:copySettingsFromTrack:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMutableMovie(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMutableMovie(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVMutableVideoComposition(cm)videoCompositionWithPropertiesOfAsset:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVOutputSettingsAssistant(cm)availableOutputSettingsPresets",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVOutputSettingsPreset",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVOutputSettingsAssistant(cm)outputSettingsAssistantWithPreset:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVOutputSettingsPreset",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVPlayer(im)setMediaSelectionCriteria:forMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVPlayer(im)mediaSelectionCriteriaForMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVPlayerItem(im)seekToTime:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(cs)AVPlayerItem(im)seekToTime:toleranceBefore:toleranceAfter:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVPlayerItem(im)seekToDate:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVPlayerItemMetadataOutputPushDelegate(im)metadataOutput:didOutputTimedMetadataGroups:fromPlayerItemTrack:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)AVPlayerMediaSelectionCriteria(im)initWithPreferredLanguages:preferredMediaCharacteristics:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVSampleBufferGenerator(im)createSampleBufferForRequest:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVURLAsset(cm)audiovisualTypes",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVVideoComposition(cm)videoCompositionWithPropertiesOfAsset:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1:0",
+    "LeftUsr": "c:objc(cs)SCNAnimationEvent(cm)animationEventWithKeyTime:block:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(py)geometrySources",
+    "LeftComment": "geometrySources",
+    "RightUsr": "",
+    "RightComment": "sources",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(im)geometrySourcesForSemantic:",
+    "LeftComment": "getGeometrySources(for:)",
+    "RightUsr": "",
+    "RightComment": "sources(for:)",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(py)geometryElements",
+    "LeftComment": "geometryElements",
+    "RightUsr": "",
+    "RightComment": "elements",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(py)geometryElementCount",
+    "LeftComment": "geometryElementCount",
+    "RightUsr": "",
+    "RightComment": "elementCount",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(im)geometryElementAtIndex:",
+    "LeftComment": "geometryElement(at:)",
+    "RightUsr": "",
+    "RightComment": "element(at:)",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameplayKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameplayKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AudioToolbox"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCTNSNotificationExpectation(im)initWithName:object:notificationCenter:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNotification.Name",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCTNSNotificationExpectation(im)initWithName:object:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNotification.Name",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCTNSNotificationExpectation(im)initWithName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNotification.Name",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:",
+    "LeftComment": "XCTWaiterResult",
+    "RightUsr": "",
+    "RightComment": "XCTWaiter.Result",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:enforceOrder:",
+    "LeftComment": "XCTWaiterResult",
+    "RightUsr": "",
+    "RightComment": "XCTWaiter.Result",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTWaiter(cm)waitForExpectations:timeout:",
+    "LeftComment": "XCTWaiterResult",
+    "RightUsr": "",
+    "RightComment": "XCTWaiter.Result",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTWaiter(cm)waitForExpectations:timeout:enforceOrder:",
+    "LeftComment": "XCTWaiterResult",
+    "RightUsr": "",
+    "RightComment": "XCTWaiter.Result",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)XCTestCase(im)recordFailureWithDescription:inFile:atLine:expected:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestCase(cm)testInvocations",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "testInvocations",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestCase(cm)defaultPerformanceMetrics",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultPerformanceMetrics",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)XCTestCase(im)measureMetrics:automaticallyStartMeasuring:forBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "XCTPerformanceMetric",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestCase(cm)defaultTestSuite",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultTestSuite",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCTestCase(im)expectationForNotification:object:handler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNotification.Name",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(cs)XCTestCaseRun(im)recordFailureInTest:withDescription:inFile:atLine:expected:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)XCTestObservation(im)testSuite:didFailWithDescription:inFile:atLine:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)XCTestObservation(im)testCase:didFailWithDescription:inFile:atLine:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestObservationCenter(cm)sharedTestObservationCenter",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(cs)XCTestObserver(im)testCaseDidFail:withDescription:inFile:atLine:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)XCTestRun(im)recordFailureWithDescription:inFile:atLine:expected:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestSuite(cm)defaultTestSuite",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCUIApplication(im)_activate",
+    "LeftComment": "_activate()",
+    "RightUsr": "",
+    "RightComment": "activate()",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)descendantsMatchingType:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)childrenMatchingType:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElement(cm)performWithKeyModifiers:block:",
+    "LeftComment": "XCUIKeyModifierFlags",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.KeyModifierFlags",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)typeKey:modifierFlags:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "XCUIKeyboardKey",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)typeKey:modifierFlags:",
+    "LeftComment": "XCUIKeyModifierFlags",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.KeyModifierFlags",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)_waitForExistenceWithTimeout:",
+    "LeftComment": "_waitForExistence(withTimeout:)",
+    "RightUsr": "",
+    "RightComment": "waitForExistence(timeout:)",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)elementAtIndex:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)elementBoundByIndex:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)elementMatchingType:identifier:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)descendantsMatchingType:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)childrenMatchingType:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)matchingType:identifier:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)containingType:identifier:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreAudioKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "CoreAudioKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "CoreAudioKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:owner:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "CoreAudioKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreAudioKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSViewController(im)initWithNibName:bundle:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "CoreAudioKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "CoreAudioKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSWindowController(im)initWithWindowNibName:owner:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNib.Name",
+    "ModuleName": "CoreAudioKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreData"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreData"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSPersistentStoreCoordinator(cm)registerStoreClass:forStoreType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreData"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CKFetchShareMetadataOperation(im)initWithShareURLs:",
+    "LeftComment": "init(share:)",
+    "RightUsr": "",
+    "RightComment": "init(shareURLs:)",
+    "ModuleName": "CloudKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CKShare(im)initWithRootRecord:shareID:",
+    "LeftComment": "init(rootRecord:share:)",
+    "RightUsr": "",
+    "RightComment": "init(rootRecord:shareID:)",
+    "ModuleName": "CloudKit"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSSecureCoding(cpy)supportsSecureCoding",
+    "OldPrintedName": "supportsSecureCoding",
+    "OldTypeName": "CKUserIdentityLookupInfo",
+    "NewPrintedName": "supportsSecureCoding",
+    "NewTypeName": "MPSKernel"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_AppearanceDictionary",
+    "OldPrintedName": "kPDFAnnotationKey_AppearanceDictionary",
+    "OldTypeName": "",
+    "NewPrintedName": "_AppearanceDictionary",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_AppearanceState",
+    "OldPrintedName": "kPDFAnnotationKey_AppearanceState",
+    "OldTypeName": "",
+    "NewPrintedName": "_AppearanceState",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Border",
+    "OldPrintedName": "kPDFAnnotationKey_Border",
+    "OldTypeName": "",
+    "NewPrintedName": "_Border",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Color",
+    "OldPrintedName": "kPDFAnnotationKey_Color",
+    "OldTypeName": "",
+    "NewPrintedName": "_Color",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Contents",
+    "OldPrintedName": "kPDFAnnotationKey_Contents",
+    "OldTypeName": "",
+    "NewPrintedName": "_Contents",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Flags",
+    "OldPrintedName": "kPDFAnnotationKey_Flags",
+    "OldTypeName": "",
+    "NewPrintedName": "_Flags",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Date",
+    "OldPrintedName": "kPDFAnnotationKey_Date",
+    "OldTypeName": "",
+    "NewPrintedName": "_Date",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Name",
+    "OldPrintedName": "kPDFAnnotationKey_Name",
+    "OldTypeName": "",
+    "NewPrintedName": "_Name",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Page",
+    "OldPrintedName": "kPDFAnnotationKey_Page",
+    "OldTypeName": "",
+    "NewPrintedName": "_Page",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Rect",
+    "OldPrintedName": "kPDFAnnotationKey_Rect",
+    "OldTypeName": "",
+    "NewPrintedName": "_Rect",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Subtype",
+    "OldPrintedName": "kPDFAnnotationKey_Subtype",
+    "OldTypeName": "",
+    "NewPrintedName": "_Subtype",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Action",
+    "OldPrintedName": "kPDFAnnotationKey_Action",
+    "OldTypeName": "",
+    "NewPrintedName": "_Action",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_AdditionalActions",
+    "OldPrintedName": "kPDFAnnotationKey_AdditionalActions",
+    "OldTypeName": "",
+    "NewPrintedName": "_AdditionalActions",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_BorderStyle",
+    "OldPrintedName": "kPDFAnnotationKey_BorderStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "_BorderStyle",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_DefaultAppearance",
+    "OldPrintedName": "kPDFAnnotationKey_DefaultAppearance",
+    "OldTypeName": "",
+    "NewPrintedName": "_DefaultAppearance",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Destination",
+    "OldPrintedName": "kPDFAnnotationKey_Destination",
+    "OldTypeName": "",
+    "NewPrintedName": "_Destination",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_HighlightingMode",
+    "OldPrintedName": "kPDFAnnotationKey_HighlightingMode",
+    "OldTypeName": "",
+    "NewPrintedName": "_HighlightingMode",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Inklist",
+    "OldPrintedName": "kPDFAnnotationKey_Inklist",
+    "OldTypeName": "",
+    "NewPrintedName": "_Inklist",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_InteriorColor",
+    "OldPrintedName": "kPDFAnnotationKey_InteriorColor",
+    "OldTypeName": "",
+    "NewPrintedName": "_InteriorColor",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_LinePoints",
+    "OldPrintedName": "kPDFAnnotationKey_LinePoints",
+    "OldTypeName": "",
+    "NewPrintedName": "_LinePoints",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_LineEndingStyles",
+    "OldPrintedName": "kPDFAnnotationKey_LineEndingStyles",
+    "OldTypeName": "",
+    "NewPrintedName": "_LineEndingStyles",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_IconName",
+    "OldPrintedName": "kPDFAnnotationKey_IconName",
+    "OldTypeName": "",
+    "NewPrintedName": "_IconName",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Open",
+    "OldPrintedName": "kPDFAnnotationKey_Open",
+    "OldTypeName": "",
+    "NewPrintedName": "_Open",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Parent",
+    "OldPrintedName": "kPDFAnnotationKey_Parent",
+    "OldTypeName": "",
+    "NewPrintedName": "_Parent",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Popup",
+    "OldPrintedName": "kPDFAnnotationKey_Popup",
+    "OldTypeName": "",
+    "NewPrintedName": "_Popup",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_Quadding",
+    "OldPrintedName": "kPDFAnnotationKey_Quadding",
+    "OldTypeName": "",
+    "NewPrintedName": "_Quadding",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_QuadPoints",
+    "OldPrintedName": "kPDFAnnotationKey_QuadPoints",
+    "OldTypeName": "",
+    "NewPrintedName": "_QuadPoints",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_TextLabel",
+    "OldPrintedName": "kPDFAnnotationKey_TextLabel",
+    "OldTypeName": "",
+    "NewPrintedName": "_TextLabel",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_WidgetDefaultValue",
+    "OldPrintedName": "kPDFAnnotationKey_WidgetDefaultValue",
+    "OldTypeName": "",
+    "NewPrintedName": "_WidgetDefaultValue",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_WidgetFieldFlags",
+    "OldPrintedName": "kPDFAnnotationKey_WidgetFieldFlags",
+    "OldTypeName": "",
+    "NewPrintedName": "_WidgetFieldFlags",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_WidgetFieldType",
+    "OldPrintedName": "kPDFAnnotationKey_WidgetFieldType",
+    "OldTypeName": "",
+    "NewPrintedName": "_WidgetFieldType",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_WidgetAppearanceDictionary",
+    "OldPrintedName": "kPDFAnnotationKey_WidgetAppearanceDictionary",
+    "OldTypeName": "",
+    "NewPrintedName": "_WidgetAppearanceDictionary",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_WidgetMaxLen",
+    "OldPrintedName": "kPDFAnnotationKey_WidgetMaxLen",
+    "OldTypeName": "",
+    "NewPrintedName": "_WidgetMaxLen",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_WidgetOptions",
+    "OldPrintedName": "kPDFAnnotationKey_WidgetOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "_WidgetOptions",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_WidgetTextLabelUI",
+    "OldPrintedName": "kPDFAnnotationKey_WidgetTextLabelUI",
+    "OldTypeName": "",
+    "NewPrintedName": "_WidgetTextLabelUI",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@kPDFAnnotationKey_WidgetValue",
+    "OldPrintedName": "kPDFAnnotationKey_WidgetValue",
+    "OldTypeName": "",
+    "NewPrintedName": "_WidgetValue",
+    "NewTypeName": "PDFAnnotationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@PDFDocumentTitleAttribute",
+    "OldPrintedName": "PDFDocumentTitleAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "titleAttribute",
+    "NewTypeName": "PDFDocumentAttribute"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@PDFDocumentAuthorAttribute",
+    "OldPrintedName": "PDFDocumentAuthorAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "authorAttribute",
+    "NewTypeName": "PDFDocumentAttribute"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@PDFDocumentSubjectAttribute",
+    "OldPrintedName": "PDFDocumentSubjectAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "subjectAttribute",
+    "NewTypeName": "PDFDocumentAttribute"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@PDFDocumentCreatorAttribute",
+    "OldPrintedName": "PDFDocumentCreatorAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "creatorAttribute",
+    "NewTypeName": "PDFDocumentAttribute"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@PDFDocumentProducerAttribute",
+    "OldPrintedName": "PDFDocumentProducerAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "producerAttribute",
+    "NewTypeName": "PDFDocumentAttribute"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@PDFDocumentCreationDateAttribute",
+    "OldPrintedName": "PDFDocumentCreationDateAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "creationDateAttribute",
+    "NewTypeName": "PDFDocumentAttribute"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@PDFDocumentModificationDateAttribute",
+    "OldPrintedName": "PDFDocumentModificationDateAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "modificationDateAttribute",
+    "NewTypeName": "PDFDocumentAttribute"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@PDFDocumentKeywordsAttribute",
+    "OldPrintedName": "PDFDocumentKeywordsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "keywordsAttribute",
+    "NewTypeName": "PDFDocumentAttribute"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSPasteboardReading(cm)readableTypesForPasteboard:",
+    "OldPrintedName": "readableTypes(for:)",
+    "OldTypeName": "NSSound",
+    "NewPrintedName": "readableTypes(for:)",
+    "NewTypeName": "NSAttributedString"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSPasteboardReading(cm)readingOptionsForType:pasteboard:",
+    "OldPrintedName": "readingOptions(forType:pasteboard:)",
+    "OldTypeName": "NSSound",
+    "NewPrintedName": "readingOptions(forType:pasteboard:)",
+    "NewTypeName": "NSAttributedString"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextEffectLetterpressStyle",
+    "OldPrintedName": "NSTextEffectLetterpressStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "letterpressStyle",
+    "NewTypeName": "NSAttributedString.TextEffectStyle"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPlainTextDocumentType",
+    "OldPrintedName": "NSPlainTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "plain",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRTFTextDocumentType",
+    "OldPrintedName": "NSRTFTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "rtf",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRTFDTextDocumentType",
+    "OldPrintedName": "NSRTFDTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "rtfd",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSHTMLTextDocumentType",
+    "OldPrintedName": "NSHTMLTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "html",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMacSimpleTextDocumentType",
+    "OldPrintedName": "NSMacSimpleTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "macSimpleText",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDocFormatTextDocumentType",
+    "OldPrintedName": "NSDocFormatTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "docFormat",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWordMLTextDocumentType",
+    "OldPrintedName": "NSWordMLTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "wordML",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWebArchiveTextDocumentType",
+    "OldPrintedName": "NSWebArchiveTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "webArchive",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOfficeOpenXMLTextDocumentType",
+    "OldPrintedName": "NSOfficeOpenXMLTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "officeOpenXML",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOpenDocumentTextDocumentType",
+    "OldPrintedName": "NSOpenDocumentTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "openDocument",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextLayoutSectionOrientation",
+    "OldPrintedName": "NSTextLayoutSectionOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "orientation",
+    "NewTypeName": "NSAttributedString.TextLayoutSectionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextLayoutSectionRange",
+    "OldPrintedName": "NSTextLayoutSectionRange",
+    "OldTypeName": "",
+    "NewPrintedName": "range",
+    "NewTypeName": "NSAttributedString.TextLayoutSectionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDocumentTypeDocumentAttribute",
+    "OldPrintedName": "NSDocumentTypeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "documentType",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSConvertedDocumentAttribute",
+    "OldPrintedName": "NSConvertedDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "converted",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCocoaVersionDocumentAttribute",
+    "OldPrintedName": "NSCocoaVersionDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "cocoaVersion",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFileTypeDocumentAttribute",
+    "OldPrintedName": "NSFileTypeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "fileType",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTitleDocumentAttribute",
+    "OldPrintedName": "NSTitleDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "title",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCompanyDocumentAttribute",
+    "OldPrintedName": "NSCompanyDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "company",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCopyrightDocumentAttribute",
+    "OldPrintedName": "NSCopyrightDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "copyright",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSubjectDocumentAttribute",
+    "OldPrintedName": "NSSubjectDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "subject",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAuthorDocumentAttribute",
+    "OldPrintedName": "NSAuthorDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "author",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSKeywordsDocumentAttribute",
+    "OldPrintedName": "NSKeywordsDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "keywords",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCommentDocumentAttribute",
+    "OldPrintedName": "NSCommentDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "comment",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSEditorDocumentAttribute",
+    "OldPrintedName": "NSEditorDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "editor",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCreationTimeDocumentAttribute",
+    "OldPrintedName": "NSCreationTimeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "creationTime",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSModificationTimeDocumentAttribute",
+    "OldPrintedName": "NSModificationTimeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "modificationTime",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSManagerDocumentAttribute",
+    "OldPrintedName": "NSManagerDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "manager",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCategoryDocumentAttribute",
+    "OldPrintedName": "NSCategoryDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "category",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCharacterEncodingDocumentAttribute",
+    "OldPrintedName": "NSCharacterEncodingDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "characterEncoding",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDefaultAttributesDocumentAttribute",
+    "OldPrintedName": "NSDefaultAttributesDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultAttributes",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPaperSizeDocumentAttribute",
+    "OldPrintedName": "NSPaperSizeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "paperSize",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLeftMarginDocumentAttribute",
+    "OldPrintedName": "NSLeftMarginDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "leftMargin",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRightMarginDocumentAttribute",
+    "OldPrintedName": "NSRightMarginDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "rightMargin",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTopMarginDocumentAttribute",
+    "OldPrintedName": "NSTopMarginDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "topMargin",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBottomMarginDocumentAttribute",
+    "OldPrintedName": "NSBottomMarginDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "bottomMargin",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewSizeDocumentAttribute",
+    "OldPrintedName": "NSViewSizeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "viewSize",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewZoomDocumentAttribute",
+    "OldPrintedName": "NSViewZoomDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "viewZoom",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewModeDocumentAttribute",
+    "OldPrintedName": "NSViewModeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "viewMode",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSReadOnlyDocumentAttribute",
+    "OldPrintedName": "NSReadOnlyDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "readOnly",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBackgroundColorDocumentAttribute",
+    "OldPrintedName": "NSBackgroundColorDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "backgroundColor",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSHyphenationFactorDocumentAttribute",
+    "OldPrintedName": "NSHyphenationFactorDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "hyphenationFactor",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDefaultTabIntervalDocumentAttribute",
+    "OldPrintedName": "NSDefaultTabIntervalDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultTabInterval",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextLayoutSectionsAttribute",
+    "OldPrintedName": "NSTextLayoutSectionsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "textLayoutSections",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSExcludedElementsDocumentAttribute",
+    "OldPrintedName": "NSExcludedElementsDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "excludedElements",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextEncodingNameDocumentAttribute",
+    "OldPrintedName": "NSTextEncodingNameDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "textEncodingName",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrefixSpacesDocumentAttribute",
+    "OldPrintedName": "NSPrefixSpacesDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "prefixSpaces",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDocumentTypeDocumentOption",
+    "OldPrintedName": "NSDocumentTypeDocumentOption",
+    "OldTypeName": "",
+    "NewPrintedName": "documentType",
+    "NewTypeName": "NSAttributedString.DocumentReadingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDefaultAttributesDocumentOption",
+    "OldPrintedName": "NSDefaultAttributesDocumentOption",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultAttributes",
+    "NewTypeName": "NSAttributedString.DocumentReadingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCharacterEncodingDocumentOption",
+    "OldPrintedName": "NSCharacterEncodingDocumentOption",
+    "OldTypeName": "",
+    "NewPrintedName": "characterEncoding",
+    "NewTypeName": "NSAttributedString.DocumentReadingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextEncodingNameDocumentOption",
+    "OldPrintedName": "NSTextEncodingNameDocumentOption",
+    "OldTypeName": "",
+    "NewPrintedName": "textEncodingName",
+    "NewTypeName": "NSAttributedString.DocumentReadingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBaseURLDocumentOption",
+    "OldPrintedName": "NSBaseURLDocumentOption",
+    "OldTypeName": "",
+    "NewPrintedName": "baseURL",
+    "NewTypeName": "NSAttributedString.DocumentReadingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTimeoutDocumentOption",
+    "OldPrintedName": "NSTimeoutDocumentOption",
+    "OldTypeName": "",
+    "NewPrintedName": "timeout",
+    "NewTypeName": "NSAttributedString.DocumentReadingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWebPreferencesDocumentOption",
+    "OldPrintedName": "NSWebPreferencesDocumentOption",
+    "OldTypeName": "",
+    "NewPrintedName": "webPreferences",
+    "NewTypeName": "NSAttributedString.DocumentReadingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWebResourceLoadDelegateDocumentOption",
+    "OldPrintedName": "NSWebResourceLoadDelegateDocumentOption",
+    "OldTypeName": "",
+    "NewPrintedName": "webResourceLoadDelegate",
+    "NewTypeName": "NSAttributedString.DocumentReadingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextSizeMultiplierDocumentOption",
+    "OldPrintedName": "NSTextSizeMultiplierDocumentOption",
+    "OldTypeName": "",
+    "NewPrintedName": "textSizeMultiplier",
+    "NewTypeName": "NSAttributedString.DocumentReadingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFileTypeDocumentOption",
+    "OldPrintedName": "NSFileTypeDocumentOption",
+    "OldTypeName": "",
+    "NewPrintedName": "fileType",
+    "NewTypeName": "NSAttributedString.DocumentReadingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFontTextAttribute",
+    "OldPrintedName": "NSAccessibilityFontTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityFont",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityForegroundColorTextAttribute",
+    "OldPrintedName": "NSAccessibilityForegroundColorTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityForegroundColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityBackgroundColorTextAttribute",
+    "OldPrintedName": "NSAccessibilityBackgroundColorTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityBackgroundColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUnderlineColorTextAttribute",
+    "OldPrintedName": "NSAccessibilityUnderlineColorTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityUnderlineColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityStrikethroughColorTextAttribute",
+    "OldPrintedName": "NSAccessibilityStrikethroughColorTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityStrikethroughColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUnderlineTextAttribute",
+    "OldPrintedName": "NSAccessibilityUnderlineTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityUnderline",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySuperscriptTextAttribute",
+    "OldPrintedName": "NSAccessibilitySuperscriptTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilitySuperscript",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityStrikethroughTextAttribute",
+    "OldPrintedName": "NSAccessibilityStrikethroughTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityStrikethrough",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityShadowTextAttribute",
+    "OldPrintedName": "NSAccessibilityShadowTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityShadow",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityAttachmentTextAttribute",
+    "OldPrintedName": "NSAccessibilityAttachmentTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityAttachment",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLinkTextAttribute",
+    "OldPrintedName": "NSAccessibilityLinkTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityLink",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityAutocorrectedTextAttribute",
+    "OldPrintedName": "NSAccessibilityAutocorrectedTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityAutocorrected",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTextAlignmentAttribute",
+    "OldPrintedName": "NSAccessibilityTextAlignmentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityAlignment",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityListItemPrefixTextAttribute",
+    "OldPrintedName": "NSAccessibilityListItemPrefixTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityListItemPrefix",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityListItemIndexTextAttribute",
+    "OldPrintedName": "NSAccessibilityListItemIndexTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityListItemIndex",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityListItemLevelTextAttribute",
+    "OldPrintedName": "NSAccessibilityListItemLevelTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityListItemLevel",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMisspelledTextAttribute",
+    "OldPrintedName": "NSAccessibilityMisspelledTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityMisspelled",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMarkedMisspelledTextAttribute",
+    "OldPrintedName": "NSAccessibilityMarkedMisspelledTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "accessibilityMarkedMisspelled",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontAttributeName",
+    "OldPrintedName": "NSFontAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "font",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSParagraphStyleAttributeName",
+    "OldPrintedName": "NSParagraphStyleAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "paragraphStyle",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSForegroundColorAttributeName",
+    "OldPrintedName": "NSForegroundColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "foregroundColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBackgroundColorAttributeName",
+    "OldPrintedName": "NSBackgroundColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "backgroundColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLigatureAttributeName",
+    "OldPrintedName": "NSLigatureAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "ligature",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSKernAttributeName",
+    "OldPrintedName": "NSKernAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "kern",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrikethroughStyleAttributeName",
+    "OldPrintedName": "NSStrikethroughStyleAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strikethroughStyle",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSUnderlineStyleAttributeName",
+    "OldPrintedName": "NSUnderlineStyleAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "underlineStyle",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrokeColorAttributeName",
+    "OldPrintedName": "NSStrokeColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strokeColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrokeWidthAttributeName",
+    "OldPrintedName": "NSStrokeWidthAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strokeWidth",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSShadowAttributeName",
+    "OldPrintedName": "NSShadowAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "shadow",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextEffectAttributeName",
+    "OldPrintedName": "NSTextEffectAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "textEffect",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAttachmentAttributeName",
+    "OldPrintedName": "NSAttachmentAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "attachment",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinkAttributeName",
+    "OldPrintedName": "NSLinkAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "link",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBaselineOffsetAttributeName",
+    "OldPrintedName": "NSBaselineOffsetAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "baselineOffset",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSUnderlineColorAttributeName",
+    "OldPrintedName": "NSUnderlineColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "underlineColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrikethroughColorAttributeName",
+    "OldPrintedName": "NSStrikethroughColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strikethroughColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSObliquenessAttributeName",
+    "OldPrintedName": "NSObliquenessAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "obliqueness",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSExpansionAttributeName",
+    "OldPrintedName": "NSExpansionAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "expansion",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWritingDirectionAttributeName",
+    "OldPrintedName": "NSWritingDirectionAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "writingDirection",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVerticalGlyphFormAttributeName",
+    "OldPrintedName": "NSVerticalGlyphFormAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "verticalGlyphForm",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCursorAttributeName",
+    "OldPrintedName": "NSCursorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "cursor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolTipAttributeName",
+    "OldPrintedName": "NSToolTipAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "toolTip",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMarkedClauseSegmentAttributeName",
+    "OldPrintedName": "NSMarkedClauseSegmentAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "markedClauseSegment",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextAlternativesAttributeName",
+    "OldPrintedName": "NSTextAlternativesAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "textAlternatives",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpellingStateAttributeName",
+    "OldPrintedName": "NSSpellingStateAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "spellingState",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSuperscriptAttributeName",
+    "OldPrintedName": "NSSuperscriptAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "superscript",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSGlyphInfoAttributeName",
+    "OldPrintedName": "NSGlyphInfoAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "glyphInfo",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCharacterShapeAttributeName",
+    "OldPrintedName": "NSCharacterShapeAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "characterShapeAttributeName",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSUsesScreenFontsDocumentAttribute",
+    "OldPrintedName": "NSUsesScreenFontsDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "usesScreenFontsDocumentAttribute",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagWord",
+    "OldPrintedName": "NSLinguisticTagWord",
+    "OldTypeName": "",
+    "NewPrintedName": "word",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPunctuation",
+    "OldPrintedName": "NSLinguisticTagPunctuation",
+    "OldTypeName": "",
+    "NewPrintedName": "punctuation",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagWhitespace",
+    "OldPrintedName": "NSLinguisticTagWhitespace",
+    "OldTypeName": "",
+    "NewPrintedName": "whitespace",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOther",
+    "OldPrintedName": "NSLinguisticTagOther",
+    "OldTypeName": "",
+    "NewPrintedName": "other",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagNoun",
+    "OldPrintedName": "NSLinguisticTagNoun",
+    "OldTypeName": "",
+    "NewPrintedName": "noun",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagVerb",
+    "OldPrintedName": "NSLinguisticTagVerb",
+    "OldTypeName": "",
+    "NewPrintedName": "verb",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagAdjective",
+    "OldPrintedName": "NSLinguisticTagAdjective",
+    "OldTypeName": "",
+    "NewPrintedName": "adjective",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagAdverb",
+    "OldPrintedName": "NSLinguisticTagAdverb",
+    "OldTypeName": "",
+    "NewPrintedName": "adverb",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPronoun",
+    "OldPrintedName": "NSLinguisticTagPronoun",
+    "OldTypeName": "",
+    "NewPrintedName": "pronoun",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagDeterminer",
+    "OldPrintedName": "NSLinguisticTagDeterminer",
+    "OldTypeName": "",
+    "NewPrintedName": "determiner",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagParticle",
+    "OldPrintedName": "NSLinguisticTagParticle",
+    "OldTypeName": "",
+    "NewPrintedName": "particle",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPreposition",
+    "OldPrintedName": "NSLinguisticTagPreposition",
+    "OldTypeName": "",
+    "NewPrintedName": "preposition",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagNumber",
+    "OldPrintedName": "NSLinguisticTagNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "number",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagConjunction",
+    "OldPrintedName": "NSLinguisticTagConjunction",
+    "OldTypeName": "",
+    "NewPrintedName": "conjunction",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagInterjection",
+    "OldPrintedName": "NSLinguisticTagInterjection",
+    "OldTypeName": "",
+    "NewPrintedName": "interjection",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagClassifier",
+    "OldPrintedName": "NSLinguisticTagClassifier",
+    "OldTypeName": "",
+    "NewPrintedName": "classifier",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagIdiom",
+    "OldPrintedName": "NSLinguisticTagIdiom",
+    "OldTypeName": "",
+    "NewPrintedName": "idiom",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOtherWord",
+    "OldPrintedName": "NSLinguisticTagOtherWord",
+    "OldTypeName": "",
+    "NewPrintedName": "otherWord",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSentenceTerminator",
+    "OldPrintedName": "NSLinguisticTagSentenceTerminator",
+    "OldTypeName": "",
+    "NewPrintedName": "sentenceTerminator",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOpenQuote",
+    "OldPrintedName": "NSLinguisticTagOpenQuote",
+    "OldTypeName": "",
+    "NewPrintedName": "openQuote",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagCloseQuote",
+    "OldPrintedName": "NSLinguisticTagCloseQuote",
+    "OldTypeName": "",
+    "NewPrintedName": "closeQuote",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOpenParenthesis",
+    "OldPrintedName": "NSLinguisticTagOpenParenthesis",
+    "OldTypeName": "",
+    "NewPrintedName": "openParenthesis",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagCloseParenthesis",
+    "OldPrintedName": "NSLinguisticTagCloseParenthesis",
+    "OldTypeName": "",
+    "NewPrintedName": "closeParenthesis",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagWordJoiner",
+    "OldPrintedName": "NSLinguisticTagWordJoiner",
+    "OldTypeName": "",
+    "NewPrintedName": "wordJoiner",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagDash",
+    "OldPrintedName": "NSLinguisticTagDash",
+    "OldTypeName": "",
+    "NewPrintedName": "dash",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOtherPunctuation",
+    "OldPrintedName": "NSLinguisticTagOtherPunctuation",
+    "OldTypeName": "",
+    "NewPrintedName": "otherPunctuation",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagParagraphBreak",
+    "OldPrintedName": "NSLinguisticTagParagraphBreak",
+    "OldTypeName": "",
+    "NewPrintedName": "paragraphBreak",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOtherWhitespace",
+    "OldPrintedName": "NSLinguisticTagOtherWhitespace",
+    "OldTypeName": "",
+    "NewPrintedName": "otherWhitespace",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPersonalName",
+    "OldPrintedName": "NSLinguisticTagPersonalName",
+    "OldTypeName": "",
+    "NewPrintedName": "personalName",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPlaceName",
+    "OldPrintedName": "NSLinguisticTagPlaceName",
+    "OldTypeName": "",
+    "NewPrintedName": "placeName",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOrganizationName",
+    "OldPrintedName": "NSLinguisticTagOrganizationName",
+    "OldTypeName": "",
+    "NewPrintedName": "organizationName",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeTokenType",
+    "OldPrintedName": "NSLinguisticTagSchemeTokenType",
+    "OldTypeName": "",
+    "NewPrintedName": "tokenType",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeLexicalClass",
+    "OldPrintedName": "NSLinguisticTagSchemeLexicalClass",
+    "OldTypeName": "",
+    "NewPrintedName": "lexicalClass",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeNameType",
+    "OldPrintedName": "NSLinguisticTagSchemeNameType",
+    "OldTypeName": "",
+    "NewPrintedName": "nameType",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeNameTypeOrLexicalClass",
+    "OldPrintedName": "NSLinguisticTagSchemeNameTypeOrLexicalClass",
+    "OldTypeName": "",
+    "NewPrintedName": "nameTypeOrLexicalClass",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeLemma",
+    "OldPrintedName": "NSLinguisticTagSchemeLemma",
+    "OldTypeName": "",
+    "NewPrintedName": "lemma",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeLanguage",
+    "OldPrintedName": "NSLinguisticTagSchemeLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "language",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeScript",
+    "OldPrintedName": "NSLinguisticTagSchemeScript",
+    "OldTypeName": "",
+    "NewPrintedName": "script",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@GKPlayerDidChangeNotificationName",
+    "OldPrintedName": "GKPlayerDidChangeNotificationName",
+    "OldTypeName": "",
+    "NewPrintedName": "GKPlayerDidChangeNotificationName",
+    "NewTypeName": "NSNotification.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@GKPlayerAuthenticationDidChangeNotificationName",
+    "OldPrintedName": "GKPlayerAuthenticationDidChangeNotificationName",
+    "OldTypeName": "",
+    "NewPrintedName": "GKPlayerAuthenticationDidChangeNotificationName",
+    "NewTypeName": "NSNotification.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isEqual:",
+    "OldPrintedName": "isEqual(_:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "isEqual(_:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)performSelector:",
+    "OldPrintedName": "perform(_:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "perform(_:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)performSelector:withObject:",
+    "OldPrintedName": "perform(_:with:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "perform(_:with:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)performSelector:withObject:withObject:",
+    "OldPrintedName": "perform(_:with:with:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "perform(_:with:with:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isProxy",
+    "OldPrintedName": "isProxy()",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "isProxy()",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isKindOfClass:",
+    "OldPrintedName": "isKind(of:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "isKind(of:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isMemberOfClass:",
+    "OldPrintedName": "isMember(of:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "isMember(of:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)conformsToProtocol:",
+    "OldPrintedName": "conforms(to:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "conforms(to:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStringDrawingOptions",
+    "OldPrintedName": "NSStringDrawingOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "DrawingOptions",
+    "NewTypeName": "NSString"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStringDrawingOptions@NSStringDrawingUsesLineFragmentOrigin",
+    "OldPrintedName": "usesLineFragmentOrigin",
+    "OldTypeName": "NSStringDrawingOptions",
+    "NewPrintedName": "usesLineFragmentOrigin",
+    "NewTypeName": "NSString.DrawingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStringDrawingOptions@NSStringDrawingUsesFontLeading",
+    "OldPrintedName": "usesFontLeading",
+    "OldTypeName": "NSStringDrawingOptions",
+    "NewPrintedName": "usesFontLeading",
+    "NewTypeName": "NSString.DrawingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStringDrawingOptions@NSStringDrawingUsesDeviceMetrics",
+    "OldPrintedName": "usesDeviceMetrics",
+    "OldTypeName": "NSStringDrawingOptions",
+    "NewPrintedName": "usesDeviceMetrics",
+    "NewTypeName": "NSString.DrawingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStringDrawingOptions@NSStringDrawingTruncatesLastVisibleLine",
+    "OldPrintedName": "truncatesLastVisibleLine",
+    "OldTypeName": "NSStringDrawingOptions",
+    "NewPrintedName": "truncatesLastVisibleLine",
+    "NewTypeName": "NSString.DrawingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStringDrawingOptions@NSStringDrawingDisableScreenFontSubstitution",
+    "OldPrintedName": "disableScreenFontSubstitution",
+    "OldTypeName": "NSStringDrawingOptions",
+    "NewPrintedName": "disableScreenFontSubstitution",
+    "NewTypeName": "NSString.DrawingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStringDrawingOptions@NSStringDrawingOneShot",
+    "OldPrintedName": "oneShot",
+    "OldTypeName": "NSStringDrawingOptions",
+    "NewPrintedName": "oneShot",
+    "NewTypeName": "NSString.DrawingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingNameKey",
+    "OldPrintedName": "NSTextCheckingNameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "name",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingJobTitleKey",
+    "OldPrintedName": "NSTextCheckingJobTitleKey",
+    "OldTypeName": "",
+    "NewPrintedName": "jobTitle",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingOrganizationKey",
+    "OldPrintedName": "NSTextCheckingOrganizationKey",
+    "OldTypeName": "",
+    "NewPrintedName": "organization",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingStreetKey",
+    "OldPrintedName": "NSTextCheckingStreetKey",
+    "OldTypeName": "",
+    "NewPrintedName": "street",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingCityKey",
+    "OldPrintedName": "NSTextCheckingCityKey",
+    "OldTypeName": "",
+    "NewPrintedName": "city",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingStateKey",
+    "OldPrintedName": "NSTextCheckingStateKey",
+    "OldTypeName": "",
+    "NewPrintedName": "state",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingZIPKey",
+    "OldPrintedName": "NSTextCheckingZIPKey",
+    "OldTypeName": "",
+    "NewPrintedName": "zip",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingCountryKey",
+    "OldPrintedName": "NSTextCheckingCountryKey",
+    "OldTypeName": "",
+    "NewPrintedName": "country",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingPhoneKey",
+    "OldPrintedName": "NSTextCheckingPhoneKey",
+    "OldTypeName": "",
+    "NewPrintedName": "phone",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingAirlineKey",
+    "OldPrintedName": "NSTextCheckingAirlineKey",
+    "OldTypeName": "",
+    "NewPrintedName": "airline",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingFlightKey",
+    "OldPrintedName": "NSTextCheckingFlightKey",
+    "OldTypeName": "",
+    "NewPrintedName": "flight",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKModelErrorDomain",
+    "OldPrintedName": "MTKModelErrorDomain",
+    "OldTypeName": "",
+    "NewPrintedName": "domain",
+    "NewTypeName": "MTKModelError"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKModelErrorKey",
+    "OldPrintedName": "MTKModelErrorKey",
+    "OldTypeName": "",
+    "NewPrintedName": "key",
+    "NewTypeName": "MTKModelError"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderErrorDomain",
+    "OldPrintedName": "MTKTextureLoaderErrorDomain",
+    "OldTypeName": "",
+    "NewPrintedName": "domain",
+    "NewTypeName": "MTKTextureLoader.Error"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderErrorKey",
+    "OldPrintedName": "MTKTextureLoaderErrorKey",
+    "OldTypeName": "",
+    "NewPrintedName": "key",
+    "NewTypeName": "MTKTextureLoader.Error"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionAllocateMipmaps",
+    "OldPrintedName": "MTKTextureLoaderOptionAllocateMipmaps",
+    "OldTypeName": "",
+    "NewPrintedName": "allocateMipmaps",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionGenerateMipmaps",
+    "OldPrintedName": "MTKTextureLoaderOptionGenerateMipmaps",
+    "OldTypeName": "",
+    "NewPrintedName": "generateMipmaps",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionSRGB",
+    "OldPrintedName": "MTKTextureLoaderOptionSRGB",
+    "OldTypeName": "",
+    "NewPrintedName": "SRGB",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionTextureUsage",
+    "OldPrintedName": "MTKTextureLoaderOptionTextureUsage",
+    "OldTypeName": "",
+    "NewPrintedName": "textureUsage",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionTextureCPUCacheMode",
+    "OldPrintedName": "MTKTextureLoaderOptionTextureCPUCacheMode",
+    "OldTypeName": "",
+    "NewPrintedName": "textureCPUCacheMode",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionTextureStorageMode",
+    "OldPrintedName": "MTKTextureLoaderOptionTextureStorageMode",
+    "OldTypeName": "",
+    "NewPrintedName": "textureStorageMode",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionCubeLayout",
+    "OldPrintedName": "MTKTextureLoaderOptionCubeLayout",
+    "OldTypeName": "",
+    "NewPrintedName": "cubeLayout",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionOrigin",
+    "OldPrintedName": "MTKTextureLoaderOptionOrigin",
+    "OldTypeName": "",
+    "NewPrintedName": "origin",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderCubeLayoutVertical",
+    "OldPrintedName": "MTKTextureLoaderCubeLayoutVertical",
+    "OldTypeName": "",
+    "NewPrintedName": "vertical",
+    "NewTypeName": "MTKTextureLoader.CubeLayout"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOriginTopLeft",
+    "OldPrintedName": "MTKTextureLoaderOriginTopLeft",
+    "OldTypeName": "",
+    "NewPrintedName": "topLeft",
+    "NewTypeName": "MTKTextureLoader.Origin"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOriginBottomLeft",
+    "OldPrintedName": "MTKTextureLoaderOriginBottomLeft",
+    "OldTypeName": "",
+    "NewPrintedName": "bottomLeft",
+    "NewTypeName": "MTKTextureLoader.Origin"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOriginFlippedVertically",
+    "OldPrintedName": "MTKTextureLoaderOriginFlippedVertically",
+    "OldTypeName": "",
+    "NewPrintedName": "flippedVertically",
+    "NewTypeName": "MTKTextureLoader.Origin"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@MTKTextureLoaderCallback",
+    "OldPrintedName": "MTKTextureLoaderCallback",
+    "OldTypeName": "",
+    "NewPrintedName": "Callback",
+    "NewTypeName": "MTKTextureLoader"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@MTKTextureLoaderArrayCallback",
+    "OldPrintedName": "MTKTextureLoaderArrayCallback",
+    "OldTypeName": "",
+    "NewPrintedName": "ArrayCallback",
+    "NewTypeName": "MTKTextureLoader"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)respondsToSelector:",
+    "OldPrintedName": "responds(to:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "responds(to:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)MDLTransformComponent(cm)globalTransformWithObject:atTime:",
+    "OldPrintedName": "globalTransform(with:atTime:)",
+    "OldTypeName": "MDLTransformComponent",
+    "NewPrintedName": "globalTransform(with:atTime:)",
+    "NewTypeName": "MDLTransform"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSAccessibilityActionDescription",
+    "OldPrintedName": "NSAccessibilityActionDescription(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "description",
+    "NewTypeName": "NSAccessibilityActionName",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityPressAction",
+    "OldPrintedName": "NSAccessibilityPressAction",
+    "OldTypeName": "",
+    "NewPrintedName": "press",
+    "NewTypeName": "NSAccessibilityActionName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityIncrementAction",
+    "OldPrintedName": "NSAccessibilityIncrementAction",
+    "OldTypeName": "",
+    "NewPrintedName": "increment",
+    "NewTypeName": "NSAccessibilityActionName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDecrementAction",
+    "OldPrintedName": "NSAccessibilityDecrementAction",
+    "OldTypeName": "",
+    "NewPrintedName": "decrement",
+    "NewTypeName": "NSAccessibilityActionName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityConfirmAction",
+    "OldPrintedName": "NSAccessibilityConfirmAction",
+    "OldTypeName": "",
+    "NewPrintedName": "confirm",
+    "NewTypeName": "NSAccessibilityActionName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityPickAction",
+    "OldPrintedName": "NSAccessibilityPickAction",
+    "OldTypeName": "",
+    "NewPrintedName": "pick",
+    "NewTypeName": "NSAccessibilityActionName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityCancelAction",
+    "OldPrintedName": "NSAccessibilityCancelAction",
+    "OldTypeName": "",
+    "NewPrintedName": "cancel",
+    "NewTypeName": "NSAccessibilityActionName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRaiseAction",
+    "OldPrintedName": "NSAccessibilityRaiseAction",
+    "OldTypeName": "",
+    "NewPrintedName": "raise",
+    "NewTypeName": "NSAccessibilityActionName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityShowMenuAction",
+    "OldPrintedName": "NSAccessibilityShowMenuAction",
+    "OldTypeName": "",
+    "NewPrintedName": "showMenu",
+    "NewTypeName": "NSAccessibilityActionName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDeleteAction",
+    "OldPrintedName": "NSAccessibilityDeleteAction",
+    "OldTypeName": "",
+    "NewPrintedName": "delete",
+    "NewTypeName": "NSAccessibilityActionName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityShowAlternateUIAction",
+    "OldPrintedName": "NSAccessibilityShowAlternateUIAction",
+    "OldTypeName": "",
+    "NewPrintedName": "showAlternateUI",
+    "NewTypeName": "NSAccessibilityActionName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityShowDefaultUIAction",
+    "OldPrintedName": "NSAccessibilityShowDefaultUIAction",
+    "OldTypeName": "",
+    "NewPrintedName": "showDefaultUI",
+    "NewTypeName": "NSAccessibilityActionName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRoleAttribute",
+    "OldPrintedName": "NSAccessibilityRoleAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "role",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRoleDescriptionAttribute",
+    "OldPrintedName": "NSAccessibilityRoleDescriptionAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "roleDescription",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySubroleAttribute",
+    "OldPrintedName": "NSAccessibilitySubroleAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "subrole",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityHelpAttribute",
+    "OldPrintedName": "NSAccessibilityHelpAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "help",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityValueAttribute",
+    "OldPrintedName": "NSAccessibilityValueAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "value",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMinValueAttribute",
+    "OldPrintedName": "NSAccessibilityMinValueAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "minValue",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMaxValueAttribute",
+    "OldPrintedName": "NSAccessibilityMaxValueAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "maxValue",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityEnabledAttribute",
+    "OldPrintedName": "NSAccessibilityEnabledAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "enabled",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFocusedAttribute",
+    "OldPrintedName": "NSAccessibilityFocusedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "focused",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityParentAttribute",
+    "OldPrintedName": "NSAccessibilityParentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "parent",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityChildrenAttribute",
+    "OldPrintedName": "NSAccessibilityChildrenAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "children",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityWindowAttribute",
+    "OldPrintedName": "NSAccessibilityWindowAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "window",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTopLevelUIElementAttribute",
+    "OldPrintedName": "NSAccessibilityTopLevelUIElementAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "topLevelUIElement",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedChildrenAttribute",
+    "OldPrintedName": "NSAccessibilitySelectedChildrenAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedChildren",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityVisibleChildrenAttribute",
+    "OldPrintedName": "NSAccessibilityVisibleChildrenAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "visibleChildren",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityPositionAttribute",
+    "OldPrintedName": "NSAccessibilityPositionAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "position",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySizeAttribute",
+    "OldPrintedName": "NSAccessibilitySizeAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "size",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityContentsAttribute",
+    "OldPrintedName": "NSAccessibilityContentsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "contents",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTitleAttribute",
+    "OldPrintedName": "NSAccessibilityTitleAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "title",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDescriptionAttribute",
+    "OldPrintedName": "NSAccessibilityDescriptionAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "description",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityShownMenuAttribute",
+    "OldPrintedName": "NSAccessibilityShownMenuAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "shownMenu",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityValueDescriptionAttribute",
+    "OldPrintedName": "NSAccessibilityValueDescriptionAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "valueDescription",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySharedFocusElementsAttribute",
+    "OldPrintedName": "NSAccessibilitySharedFocusElementsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "sharedFocusElements",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityPreviousContentsAttribute",
+    "OldPrintedName": "NSAccessibilityPreviousContentsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "previousContents",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityNextContentsAttribute",
+    "OldPrintedName": "NSAccessibilityNextContentsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "nextContents",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityHeaderAttribute",
+    "OldPrintedName": "NSAccessibilityHeaderAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "header",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityEditedAttribute",
+    "OldPrintedName": "NSAccessibilityEditedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "edited",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTabsAttribute",
+    "OldPrintedName": "NSAccessibilityTabsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "tabs",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityHorizontalScrollBarAttribute",
+    "OldPrintedName": "NSAccessibilityHorizontalScrollBarAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "horizontalScrollBar",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityVerticalScrollBarAttribute",
+    "OldPrintedName": "NSAccessibilityVerticalScrollBarAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "verticalScrollBar",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityOverflowButtonAttribute",
+    "OldPrintedName": "NSAccessibilityOverflowButtonAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "overflowButton",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityIncrementButtonAttribute",
+    "OldPrintedName": "NSAccessibilityIncrementButtonAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "incrementButton",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDecrementButtonAttribute",
+    "OldPrintedName": "NSAccessibilityDecrementButtonAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "decrementButton",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFilenameAttribute",
+    "OldPrintedName": "NSAccessibilityFilenameAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "filename",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityExpandedAttribute",
+    "OldPrintedName": "NSAccessibilityExpandedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "expanded",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedAttribute",
+    "OldPrintedName": "NSAccessibilitySelectedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "selected",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySplittersAttribute",
+    "OldPrintedName": "NSAccessibilitySplittersAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "splitters",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDocumentAttribute",
+    "OldPrintedName": "NSAccessibilityDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "document",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityActivationPointAttribute",
+    "OldPrintedName": "NSAccessibilityActivationPointAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "activationPoint",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityURLAttribute",
+    "OldPrintedName": "NSAccessibilityURLAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "url",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityIndexAttribute",
+    "OldPrintedName": "NSAccessibilityIndexAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "index",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRowCountAttribute",
+    "OldPrintedName": "NSAccessibilityRowCountAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "rowCount",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityColumnCountAttribute",
+    "OldPrintedName": "NSAccessibilityColumnCountAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "columnCount",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityOrderedByRowAttribute",
+    "OldPrintedName": "NSAccessibilityOrderedByRowAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "orderedByRow",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityWarningValueAttribute",
+    "OldPrintedName": "NSAccessibilityWarningValueAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "warningValue",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityCriticalValueAttribute",
+    "OldPrintedName": "NSAccessibilityCriticalValueAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "criticalValue",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityPlaceholderValueAttribute",
+    "OldPrintedName": "NSAccessibilityPlaceholderValueAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "placeholderValue",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityContainsProtectedContentAttribute",
+    "OldPrintedName": "NSAccessibilityContainsProtectedContentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "containsProtectedContent",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityAlternateUIVisibleAttribute",
+    "OldPrintedName": "NSAccessibilityAlternateUIVisibleAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "alternateUIVisible",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRequiredAttribute",
+    "OldPrintedName": "NSAccessibilityRequiredAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "required",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTitleUIElementAttribute",
+    "OldPrintedName": "NSAccessibilityTitleUIElementAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "titleUIElement",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityServesAsTitleForUIElementsAttribute",
+    "OldPrintedName": "NSAccessibilityServesAsTitleForUIElementsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "servesAsTitleForUIElements",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLinkedUIElementsAttribute",
+    "OldPrintedName": "NSAccessibilityLinkedUIElementsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "linkedUIElements",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedTextAttribute",
+    "OldPrintedName": "NSAccessibilitySelectedTextAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedText",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedTextRangeAttribute",
+    "OldPrintedName": "NSAccessibilitySelectedTextRangeAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedTextRange",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityNumberOfCharactersAttribute",
+    "OldPrintedName": "NSAccessibilityNumberOfCharactersAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "numberOfCharacters",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityVisibleCharacterRangeAttribute",
+    "OldPrintedName": "NSAccessibilityVisibleCharacterRangeAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "visibleCharacterRange",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySharedTextUIElementsAttribute",
+    "OldPrintedName": "NSAccessibilitySharedTextUIElementsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "sharedTextUIElements",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySharedCharacterRangeAttribute",
+    "OldPrintedName": "NSAccessibilitySharedCharacterRangeAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "sharedCharacterRange",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityInsertionPointLineNumberAttribute",
+    "OldPrintedName": "NSAccessibilityInsertionPointLineNumberAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "insertionPointLineNumber",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedTextRangesAttribute",
+    "OldPrintedName": "NSAccessibilitySelectedTextRangesAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedTextRanges",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMainAttribute",
+    "OldPrintedName": "NSAccessibilityMainAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "main",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMinimizedAttribute",
+    "OldPrintedName": "NSAccessibilityMinimizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "minimized",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityCloseButtonAttribute",
+    "OldPrintedName": "NSAccessibilityCloseButtonAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "closeButton",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityZoomButtonAttribute",
+    "OldPrintedName": "NSAccessibilityZoomButtonAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "zoomButton",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMinimizeButtonAttribute",
+    "OldPrintedName": "NSAccessibilityMinimizeButtonAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "minimizeButton",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityToolbarButtonAttribute",
+    "OldPrintedName": "NSAccessibilityToolbarButtonAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "toolbarButton",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityProxyAttribute",
+    "OldPrintedName": "NSAccessibilityProxyAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "proxy",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityGrowAreaAttribute",
+    "OldPrintedName": "NSAccessibilityGrowAreaAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "growArea",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityModalAttribute",
+    "OldPrintedName": "NSAccessibilityModalAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "modal",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDefaultButtonAttribute",
+    "OldPrintedName": "NSAccessibilityDefaultButtonAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultButton",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityCancelButtonAttribute",
+    "OldPrintedName": "NSAccessibilityCancelButtonAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "cancelButton",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFullScreenButtonAttribute",
+    "OldPrintedName": "NSAccessibilityFullScreenButtonAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "fullScreenButton",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMenuBarAttribute",
+    "OldPrintedName": "NSAccessibilityMenuBarAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "menuBar",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityWindowsAttribute",
+    "OldPrintedName": "NSAccessibilityWindowsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "windows",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFrontmostAttribute",
+    "OldPrintedName": "NSAccessibilityFrontmostAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "frontmost",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityHiddenAttribute",
+    "OldPrintedName": "NSAccessibilityHiddenAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "hidden",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMainWindowAttribute",
+    "OldPrintedName": "NSAccessibilityMainWindowAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "mainWindow",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFocusedWindowAttribute",
+    "OldPrintedName": "NSAccessibilityFocusedWindowAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "focusedWindow",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFocusedUIElementAttribute",
+    "OldPrintedName": "NSAccessibilityFocusedUIElementAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "focusedUIElement",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityExtrasMenuBarAttribute",
+    "OldPrintedName": "NSAccessibilityExtrasMenuBarAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "extrasMenuBar",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityOrientationAttribute",
+    "OldPrintedName": "NSAccessibilityOrientationAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "orientation",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityColumnTitlesAttribute",
+    "OldPrintedName": "NSAccessibilityColumnTitlesAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "columnTitles",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySearchButtonAttribute",
+    "OldPrintedName": "NSAccessibilitySearchButtonAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "searchButton",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySearchMenuAttribute",
+    "OldPrintedName": "NSAccessibilitySearchMenuAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "searchMenu",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityClearButtonAttribute",
+    "OldPrintedName": "NSAccessibilityClearButtonAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "clearButton",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRowsAttribute",
+    "OldPrintedName": "NSAccessibilityRowsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "rows",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityVisibleRowsAttribute",
+    "OldPrintedName": "NSAccessibilityVisibleRowsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "visibleRows",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedRowsAttribute",
+    "OldPrintedName": "NSAccessibilitySelectedRowsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedRows",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityColumnsAttribute",
+    "OldPrintedName": "NSAccessibilityColumnsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "columns",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityVisibleColumnsAttribute",
+    "OldPrintedName": "NSAccessibilityVisibleColumnsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "visibleColumns",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedColumnsAttribute",
+    "OldPrintedName": "NSAccessibilitySelectedColumnsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedColumns",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySortDirectionAttribute",
+    "OldPrintedName": "NSAccessibilitySortDirectionAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "sortDirection",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedCellsAttribute",
+    "OldPrintedName": "NSAccessibilitySelectedCellsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedCells",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityVisibleCellsAttribute",
+    "OldPrintedName": "NSAccessibilityVisibleCellsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "visibleCells",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRowHeaderUIElementsAttribute",
+    "OldPrintedName": "NSAccessibilityRowHeaderUIElementsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "rowHeaderUIElements",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityColumnHeaderUIElementsAttribute",
+    "OldPrintedName": "NSAccessibilityColumnHeaderUIElementsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "columnHeaderUIElements",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRowIndexRangeAttribute",
+    "OldPrintedName": "NSAccessibilityRowIndexRangeAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "rowIndexRange",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityColumnIndexRangeAttribute",
+    "OldPrintedName": "NSAccessibilityColumnIndexRangeAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "columnIndexRange",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityHorizontalUnitsAttribute",
+    "OldPrintedName": "NSAccessibilityHorizontalUnitsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "horizontalUnits",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityVerticalUnitsAttribute",
+    "OldPrintedName": "NSAccessibilityVerticalUnitsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "verticalUnits",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityHorizontalUnitDescriptionAttribute",
+    "OldPrintedName": "NSAccessibilityHorizontalUnitDescriptionAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "horizontalUnitDescription",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityVerticalUnitDescriptionAttribute",
+    "OldPrintedName": "NSAccessibilityVerticalUnitDescriptionAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "verticalUnitDescription",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityHandlesAttribute",
+    "OldPrintedName": "NSAccessibilityHandlesAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "handles",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDisclosingAttribute",
+    "OldPrintedName": "NSAccessibilityDisclosingAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "disclosing",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDisclosedRowsAttribute",
+    "OldPrintedName": "NSAccessibilityDisclosedRowsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "disclosedRows",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDisclosedByRowAttribute",
+    "OldPrintedName": "NSAccessibilityDisclosedByRowAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "disclosedByRow",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDisclosureLevelAttribute",
+    "OldPrintedName": "NSAccessibilityDisclosureLevelAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "disclosureLevel",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityAllowedValuesAttribute",
+    "OldPrintedName": "NSAccessibilityAllowedValuesAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "allowedValues",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLabelUIElementsAttribute",
+    "OldPrintedName": "NSAccessibilityLabelUIElementsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "labelUIElements",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLabelValueAttribute",
+    "OldPrintedName": "NSAccessibilityLabelValueAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "labelValue",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMatteHoleAttribute",
+    "OldPrintedName": "NSAccessibilityMatteHoleAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "matteHole",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMatteContentUIElementAttribute",
+    "OldPrintedName": "NSAccessibilityMatteContentUIElementAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "matteContentUIElement",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMarkerUIElementsAttribute",
+    "OldPrintedName": "NSAccessibilityMarkerUIElementsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "markerUIElements",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMarkerValuesAttribute",
+    "OldPrintedName": "NSAccessibilityMarkerValuesAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "markerValues",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMarkerGroupUIElementAttribute",
+    "OldPrintedName": "NSAccessibilityMarkerGroupUIElementAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "markerGroupUIElement",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUnitsAttribute",
+    "OldPrintedName": "NSAccessibilityUnitsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "units",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUnitDescriptionAttribute",
+    "OldPrintedName": "NSAccessibilityUnitDescriptionAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "unitDescription",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMarkerTypeAttribute",
+    "OldPrintedName": "NSAccessibilityMarkerTypeAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "markerType",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMarkerTypeDescriptionAttribute",
+    "OldPrintedName": "NSAccessibilityMarkerTypeDescriptionAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "markerTypeDescription",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityIdentifierAttribute",
+    "OldPrintedName": "NSAccessibilityIdentifierAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier",
+    "NewTypeName": "NSAccessibilityAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFontNameKey",
+    "OldPrintedName": "NSAccessibilityFontNameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "fontName",
+    "NewTypeName": "NSAccessibilityFontAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFontFamilyKey",
+    "OldPrintedName": "NSAccessibilityFontFamilyKey",
+    "OldTypeName": "",
+    "NewPrintedName": "fontFamily",
+    "NewTypeName": "NSAccessibilityFontAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityVisibleNameKey",
+    "OldPrintedName": "NSAccessibilityVisibleNameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "visibleName",
+    "NewTypeName": "NSAccessibilityFontAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFontSizeKey",
+    "OldPrintedName": "NSAccessibilityFontSizeKey",
+    "OldTypeName": "",
+    "NewPrintedName": "fontSize",
+    "NewTypeName": "NSAccessibilityFontAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMainWindowChangedNotification",
+    "OldPrintedName": "NSAccessibilityMainWindowChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "mainWindowChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFocusedWindowChangedNotification",
+    "OldPrintedName": "NSAccessibilityFocusedWindowChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "focusedWindowChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFocusedUIElementChangedNotification",
+    "OldPrintedName": "NSAccessibilityFocusedUIElementChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "focusedUIElementChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityApplicationActivatedNotification",
+    "OldPrintedName": "NSAccessibilityApplicationActivatedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "applicationActivated",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityApplicationDeactivatedNotification",
+    "OldPrintedName": "NSAccessibilityApplicationDeactivatedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "applicationDeactivated",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityApplicationHiddenNotification",
+    "OldPrintedName": "NSAccessibilityApplicationHiddenNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "applicationHidden",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityApplicationShownNotification",
+    "OldPrintedName": "NSAccessibilityApplicationShownNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "applicationShown",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityWindowCreatedNotification",
+    "OldPrintedName": "NSAccessibilityWindowCreatedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "windowCreated",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityWindowMovedNotification",
+    "OldPrintedName": "NSAccessibilityWindowMovedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "windowMoved",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityWindowResizedNotification",
+    "OldPrintedName": "NSAccessibilityWindowResizedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "windowResized",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityWindowMiniaturizedNotification",
+    "OldPrintedName": "NSAccessibilityWindowMiniaturizedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "windowMiniaturized",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityWindowDeminiaturizedNotification",
+    "OldPrintedName": "NSAccessibilityWindowDeminiaturizedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "windowDeminiaturized",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDrawerCreatedNotification",
+    "OldPrintedName": "NSAccessibilityDrawerCreatedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "drawerCreated",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySheetCreatedNotification",
+    "OldPrintedName": "NSAccessibilitySheetCreatedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "sheetCreated",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUIElementDestroyedNotification",
+    "OldPrintedName": "NSAccessibilityUIElementDestroyedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "uiElementDestroyed",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityValueChangedNotification",
+    "OldPrintedName": "NSAccessibilityValueChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "valueChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTitleChangedNotification",
+    "OldPrintedName": "NSAccessibilityTitleChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "titleChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityResizedNotification",
+    "OldPrintedName": "NSAccessibilityResizedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "resized",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMovedNotification",
+    "OldPrintedName": "NSAccessibilityMovedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "moved",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityCreatedNotification",
+    "OldPrintedName": "NSAccessibilityCreatedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "created",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLayoutChangedNotification",
+    "OldPrintedName": "NSAccessibilityLayoutChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "layoutChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityHelpTagCreatedNotification",
+    "OldPrintedName": "NSAccessibilityHelpTagCreatedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "helpTagCreated",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedTextChangedNotification",
+    "OldPrintedName": "NSAccessibilitySelectedTextChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedTextChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRowCountChangedNotification",
+    "OldPrintedName": "NSAccessibilityRowCountChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "rowCountChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedChildrenChangedNotification",
+    "OldPrintedName": "NSAccessibilitySelectedChildrenChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedChildrenChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedRowsChangedNotification",
+    "OldPrintedName": "NSAccessibilitySelectedRowsChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedRowsChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedColumnsChangedNotification",
+    "OldPrintedName": "NSAccessibilitySelectedColumnsChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedColumnsChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRowExpandedNotification",
+    "OldPrintedName": "NSAccessibilityRowExpandedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "rowExpanded",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRowCollapsedNotification",
+    "OldPrintedName": "NSAccessibilityRowCollapsedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "rowCollapsed",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedCellsChangedNotification",
+    "OldPrintedName": "NSAccessibilitySelectedCellsChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedCellsChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUnitsChangedNotification",
+    "OldPrintedName": "NSAccessibilityUnitsChangedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "unitsChanged",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySelectedChildrenMovedNotification",
+    "OldPrintedName": "NSAccessibilitySelectedChildrenMovedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedChildrenMoved",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityAnnouncementRequestedNotification",
+    "OldPrintedName": "NSAccessibilityAnnouncementRequestedNotification",
+    "OldTypeName": "",
+    "NewPrintedName": "announcementRequested",
+    "NewTypeName": "NSAccessibilityNotificationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUIElementsKey",
+    "OldPrintedName": "NSAccessibilityUIElementsKey",
+    "OldTypeName": "",
+    "NewPrintedName": "uiElements",
+    "NewTypeName": "NSAccessibilityNotificationUserInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityPriorityKey",
+    "OldPrintedName": "NSAccessibilityPriorityKey",
+    "OldTypeName": "",
+    "NewPrintedName": "priority",
+    "NewTypeName": "NSAccessibilityNotificationUserInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityAnnouncementKey",
+    "OldPrintedName": "NSAccessibilityAnnouncementKey",
+    "OldTypeName": "",
+    "NewPrintedName": "announcement",
+    "NewTypeName": "NSAccessibilityNotificationUserInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityVerticalOrientationValue",
+    "OldPrintedName": "NSAccessibilityVerticalOrientationValue",
+    "OldTypeName": "",
+    "NewPrintedName": "vertical",
+    "NewTypeName": "NSAccessibilityOrientationValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityHorizontalOrientationValue",
+    "OldPrintedName": "NSAccessibilityHorizontalOrientationValue",
+    "OldTypeName": "",
+    "NewPrintedName": "horizontal",
+    "NewTypeName": "NSAccessibilityOrientationValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUnknownOrientationValue",
+    "OldPrintedName": "NSAccessibilityUnknownOrientationValue",
+    "OldTypeName": "",
+    "NewPrintedName": "unknown",
+    "NewTypeName": "NSAccessibilityOrientationValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLineForIndexParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityLineForIndexParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "lineForIndex",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRangeForLineParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityRangeForLineParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "rangeForLine",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityStringForRangeParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityStringForRangeParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "stringForRange",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRangeForPositionParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityRangeForPositionParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "rangeForPosition",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRangeForIndexParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityRangeForIndexParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "rangeForIndex",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityBoundsForRangeParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityBoundsForRangeParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "boundsForRange",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRTFForRangeParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityRTFForRangeParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "rtfForRange",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityStyleRangeForIndexParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityStyleRangeForIndexParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "styleRangeForIndex",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityAttributedStringForRangeParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityAttributedStringForRangeParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "attributedStringForRange",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityCellForColumnAndRowParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityCellForColumnAndRowParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "cellForColumnAndRow",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLayoutPointForScreenPointParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityLayoutPointForScreenPointParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "layoutPointForScreenPoint",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLayoutSizeForScreenSizeParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityLayoutSizeForScreenSizeParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "layoutSizeForScreenSize",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityScreenPointForLayoutPointParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityScreenPointForLayoutPointParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "screenPointForLayoutPoint",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityScreenSizeForLayoutSizeParameterizedAttribute",
+    "OldPrintedName": "NSAccessibilityScreenSizeForLayoutSizeParameterizedAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "screenSizeForLayoutSize",
+    "NewTypeName": "NSAccessibilityParameterizedAttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUnknownRole",
+    "OldPrintedName": "NSAccessibilityUnknownRole",
+    "OldTypeName": "",
+    "NewPrintedName": "unknown",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityButtonRole",
+    "OldPrintedName": "NSAccessibilityButtonRole",
+    "OldTypeName": "",
+    "NewPrintedName": "button",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRadioButtonRole",
+    "OldPrintedName": "NSAccessibilityRadioButtonRole",
+    "OldTypeName": "",
+    "NewPrintedName": "radioButton",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityCheckBoxRole",
+    "OldPrintedName": "NSAccessibilityCheckBoxRole",
+    "OldTypeName": "",
+    "NewPrintedName": "checkBox",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySliderRole",
+    "OldPrintedName": "NSAccessibilitySliderRole",
+    "OldTypeName": "",
+    "NewPrintedName": "slider",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTabGroupRole",
+    "OldPrintedName": "NSAccessibilityTabGroupRole",
+    "OldTypeName": "",
+    "NewPrintedName": "tabGroup",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTextFieldRole",
+    "OldPrintedName": "NSAccessibilityTextFieldRole",
+    "OldTypeName": "",
+    "NewPrintedName": "textField",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityStaticTextRole",
+    "OldPrintedName": "NSAccessibilityStaticTextRole",
+    "OldTypeName": "",
+    "NewPrintedName": "staticText",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTextAreaRole",
+    "OldPrintedName": "NSAccessibilityTextAreaRole",
+    "OldTypeName": "",
+    "NewPrintedName": "textArea",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityScrollAreaRole",
+    "OldPrintedName": "NSAccessibilityScrollAreaRole",
+    "OldTypeName": "",
+    "NewPrintedName": "scrollArea",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityPopUpButtonRole",
+    "OldPrintedName": "NSAccessibilityPopUpButtonRole",
+    "OldTypeName": "",
+    "NewPrintedName": "popUpButton",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMenuButtonRole",
+    "OldPrintedName": "NSAccessibilityMenuButtonRole",
+    "OldTypeName": "",
+    "NewPrintedName": "menuButton",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTableRole",
+    "OldPrintedName": "NSAccessibilityTableRole",
+    "OldTypeName": "",
+    "NewPrintedName": "table",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityApplicationRole",
+    "OldPrintedName": "NSAccessibilityApplicationRole",
+    "OldTypeName": "",
+    "NewPrintedName": "application",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityGroupRole",
+    "OldPrintedName": "NSAccessibilityGroupRole",
+    "OldTypeName": "",
+    "NewPrintedName": "group",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRadioGroupRole",
+    "OldPrintedName": "NSAccessibilityRadioGroupRole",
+    "OldTypeName": "",
+    "NewPrintedName": "radioGroup",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityListRole",
+    "OldPrintedName": "NSAccessibilityListRole",
+    "OldTypeName": "",
+    "NewPrintedName": "list",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityScrollBarRole",
+    "OldPrintedName": "NSAccessibilityScrollBarRole",
+    "OldTypeName": "",
+    "NewPrintedName": "scrollBar",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityValueIndicatorRole",
+    "OldPrintedName": "NSAccessibilityValueIndicatorRole",
+    "OldTypeName": "",
+    "NewPrintedName": "valueIndicator",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityImageRole",
+    "OldPrintedName": "NSAccessibilityImageRole",
+    "OldTypeName": "",
+    "NewPrintedName": "image",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMenuBarRole",
+    "OldPrintedName": "NSAccessibilityMenuBarRole",
+    "OldTypeName": "",
+    "NewPrintedName": "menuBar",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMenuBarItemRole",
+    "OldPrintedName": "NSAccessibilityMenuBarItemRole",
+    "OldTypeName": "",
+    "NewPrintedName": "menuBarItem",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMenuRole",
+    "OldPrintedName": "NSAccessibilityMenuRole",
+    "OldTypeName": "",
+    "NewPrintedName": "menu",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMenuItemRole",
+    "OldPrintedName": "NSAccessibilityMenuItemRole",
+    "OldTypeName": "",
+    "NewPrintedName": "menuItem",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityColumnRole",
+    "OldPrintedName": "NSAccessibilityColumnRole",
+    "OldTypeName": "",
+    "NewPrintedName": "column",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRowRole",
+    "OldPrintedName": "NSAccessibilityRowRole",
+    "OldTypeName": "",
+    "NewPrintedName": "row",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityToolbarRole",
+    "OldPrintedName": "NSAccessibilityToolbarRole",
+    "OldTypeName": "",
+    "NewPrintedName": "toolbar",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityBusyIndicatorRole",
+    "OldPrintedName": "NSAccessibilityBusyIndicatorRole",
+    "OldTypeName": "",
+    "NewPrintedName": "busyIndicator",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityProgressIndicatorRole",
+    "OldPrintedName": "NSAccessibilityProgressIndicatorRole",
+    "OldTypeName": "",
+    "NewPrintedName": "progressIndicator",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityWindowRole",
+    "OldPrintedName": "NSAccessibilityWindowRole",
+    "OldTypeName": "",
+    "NewPrintedName": "window",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDrawerRole",
+    "OldPrintedName": "NSAccessibilityDrawerRole",
+    "OldTypeName": "",
+    "NewPrintedName": "drawer",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySystemWideRole",
+    "OldPrintedName": "NSAccessibilitySystemWideRole",
+    "OldTypeName": "",
+    "NewPrintedName": "systemWide",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityOutlineRole",
+    "OldPrintedName": "NSAccessibilityOutlineRole",
+    "OldTypeName": "",
+    "NewPrintedName": "outline",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityIncrementorRole",
+    "OldPrintedName": "NSAccessibilityIncrementorRole",
+    "OldTypeName": "",
+    "NewPrintedName": "incrementor",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityBrowserRole",
+    "OldPrintedName": "NSAccessibilityBrowserRole",
+    "OldTypeName": "",
+    "NewPrintedName": "browser",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityComboBoxRole",
+    "OldPrintedName": "NSAccessibilityComboBoxRole",
+    "OldTypeName": "",
+    "NewPrintedName": "comboBox",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySplitGroupRole",
+    "OldPrintedName": "NSAccessibilitySplitGroupRole",
+    "OldTypeName": "",
+    "NewPrintedName": "splitGroup",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySplitterRole",
+    "OldPrintedName": "NSAccessibilitySplitterRole",
+    "OldTypeName": "",
+    "NewPrintedName": "splitter",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityColorWellRole",
+    "OldPrintedName": "NSAccessibilityColorWellRole",
+    "OldTypeName": "",
+    "NewPrintedName": "colorWell",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityGrowAreaRole",
+    "OldPrintedName": "NSAccessibilityGrowAreaRole",
+    "OldTypeName": "",
+    "NewPrintedName": "growArea",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySheetRole",
+    "OldPrintedName": "NSAccessibilitySheetRole",
+    "OldTypeName": "",
+    "NewPrintedName": "sheet",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityHelpTagRole",
+    "OldPrintedName": "NSAccessibilityHelpTagRole",
+    "OldTypeName": "",
+    "NewPrintedName": "helpTag",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMatteRole",
+    "OldPrintedName": "NSAccessibilityMatteRole",
+    "OldTypeName": "",
+    "NewPrintedName": "matte",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRulerRole",
+    "OldPrintedName": "NSAccessibilityRulerRole",
+    "OldTypeName": "",
+    "NewPrintedName": "ruler",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRulerMarkerRole",
+    "OldPrintedName": "NSAccessibilityRulerMarkerRole",
+    "OldTypeName": "",
+    "NewPrintedName": "rulerMarker",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLinkRole",
+    "OldPrintedName": "NSAccessibilityLinkRole",
+    "OldTypeName": "",
+    "NewPrintedName": "link",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDisclosureTriangleRole",
+    "OldPrintedName": "NSAccessibilityDisclosureTriangleRole",
+    "OldTypeName": "",
+    "NewPrintedName": "disclosureTriangle",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityGridRole",
+    "OldPrintedName": "NSAccessibilityGridRole",
+    "OldTypeName": "",
+    "NewPrintedName": "grid",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRelevanceIndicatorRole",
+    "OldPrintedName": "NSAccessibilityRelevanceIndicatorRole",
+    "OldTypeName": "",
+    "NewPrintedName": "relevanceIndicator",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLevelIndicatorRole",
+    "OldPrintedName": "NSAccessibilityLevelIndicatorRole",
+    "OldTypeName": "",
+    "NewPrintedName": "levelIndicator",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityCellRole",
+    "OldPrintedName": "NSAccessibilityCellRole",
+    "OldTypeName": "",
+    "NewPrintedName": "cell",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityPopoverRole",
+    "OldPrintedName": "NSAccessibilityPopoverRole",
+    "OldTypeName": "",
+    "NewPrintedName": "popover",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLayoutAreaRole",
+    "OldPrintedName": "NSAccessibilityLayoutAreaRole",
+    "OldTypeName": "",
+    "NewPrintedName": "layoutArea",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLayoutItemRole",
+    "OldPrintedName": "NSAccessibilityLayoutItemRole",
+    "OldTypeName": "",
+    "NewPrintedName": "layoutItem",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityHandleRole",
+    "OldPrintedName": "NSAccessibilityHandleRole",
+    "OldTypeName": "",
+    "NewPrintedName": "handle",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSAccessibilityRoleDescription",
+    "OldPrintedName": "NSAccessibilityRoleDescription(_:_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "description(with:)",
+    "NewTypeName": "NSAccessibilityRole",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSAccessibilityRoleDescriptionForUIElement",
+    "OldPrintedName": "NSAccessibilityRoleDescriptionForUIElement(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "description(for:)",
+    "NewTypeName": "NSAccessibilityRole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityLeftTabStopMarkerTypeValue",
+    "OldPrintedName": "NSAccessibilityLeftTabStopMarkerTypeValue",
+    "OldTypeName": "",
+    "NewPrintedName": "leftTabStop",
+    "NewTypeName": "NSAccessibilityRulerMarkerTypeValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRightTabStopMarkerTypeValue",
+    "OldPrintedName": "NSAccessibilityRightTabStopMarkerTypeValue",
+    "OldTypeName": "",
+    "NewPrintedName": "rightTabStop",
+    "NewTypeName": "NSAccessibilityRulerMarkerTypeValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityCenterTabStopMarkerTypeValue",
+    "OldPrintedName": "NSAccessibilityCenterTabStopMarkerTypeValue",
+    "OldTypeName": "",
+    "NewPrintedName": "centerTabStop",
+    "NewTypeName": "NSAccessibilityRulerMarkerTypeValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDecimalTabStopMarkerTypeValue",
+    "OldPrintedName": "NSAccessibilityDecimalTabStopMarkerTypeValue",
+    "OldTypeName": "",
+    "NewPrintedName": "decimalTabStop",
+    "NewTypeName": "NSAccessibilityRulerMarkerTypeValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityHeadIndentMarkerTypeValue",
+    "OldPrintedName": "NSAccessibilityHeadIndentMarkerTypeValue",
+    "OldTypeName": "",
+    "NewPrintedName": "headIndent",
+    "NewTypeName": "NSAccessibilityRulerMarkerTypeValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTailIndentMarkerTypeValue",
+    "OldPrintedName": "NSAccessibilityTailIndentMarkerTypeValue",
+    "OldTypeName": "",
+    "NewPrintedName": "tailIndent",
+    "NewTypeName": "NSAccessibilityRulerMarkerTypeValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFirstLineIndentMarkerTypeValue",
+    "OldPrintedName": "NSAccessibilityFirstLineIndentMarkerTypeValue",
+    "OldTypeName": "",
+    "NewPrintedName": "firstLineIndent",
+    "NewTypeName": "NSAccessibilityRulerMarkerTypeValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUnknownMarkerTypeValue",
+    "OldPrintedName": "NSAccessibilityUnknownMarkerTypeValue",
+    "OldTypeName": "",
+    "NewPrintedName": "unknown",
+    "NewTypeName": "NSAccessibilityRulerMarkerTypeValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityInchesUnitValue",
+    "OldPrintedName": "NSAccessibilityInchesUnitValue",
+    "OldTypeName": "",
+    "NewPrintedName": "inches",
+    "NewTypeName": "NSAccessibilityRulerUnitValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityCentimetersUnitValue",
+    "OldPrintedName": "NSAccessibilityCentimetersUnitValue",
+    "OldTypeName": "",
+    "NewPrintedName": "centimeters",
+    "NewTypeName": "NSAccessibilityRulerUnitValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityPointsUnitValue",
+    "OldPrintedName": "NSAccessibilityPointsUnitValue",
+    "OldTypeName": "",
+    "NewPrintedName": "points",
+    "NewTypeName": "NSAccessibilityRulerUnitValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityPicasUnitValue",
+    "OldPrintedName": "NSAccessibilityPicasUnitValue",
+    "OldTypeName": "",
+    "NewPrintedName": "picas",
+    "NewTypeName": "NSAccessibilityRulerUnitValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUnknownUnitValue",
+    "OldPrintedName": "NSAccessibilityUnknownUnitValue",
+    "OldTypeName": "",
+    "NewPrintedName": "unknown",
+    "NewTypeName": "NSAccessibilityRulerUnitValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityAscendingSortDirectionValue",
+    "OldPrintedName": "NSAccessibilityAscendingSortDirectionValue",
+    "OldTypeName": "",
+    "NewPrintedName": "ascending",
+    "NewTypeName": "NSAccessibilitySortDirectionValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDescendingSortDirectionValue",
+    "OldPrintedName": "NSAccessibilityDescendingSortDirectionValue",
+    "OldTypeName": "",
+    "NewPrintedName": "descending",
+    "NewTypeName": "NSAccessibilitySortDirectionValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUnknownSortDirectionValue",
+    "OldPrintedName": "NSAccessibilityUnknownSortDirectionValue",
+    "OldTypeName": "",
+    "NewPrintedName": "unknown",
+    "NewTypeName": "NSAccessibilitySortDirectionValue"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityUnknownSubrole",
+    "OldPrintedName": "NSAccessibilityUnknownSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "unknown",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityCloseButtonSubrole",
+    "OldPrintedName": "NSAccessibilityCloseButtonSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "closeButton",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityZoomButtonSubrole",
+    "OldPrintedName": "NSAccessibilityZoomButtonSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "zoomButton",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityMinimizeButtonSubrole",
+    "OldPrintedName": "NSAccessibilityMinimizeButtonSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "minimizeButton",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityToolbarButtonSubrole",
+    "OldPrintedName": "NSAccessibilityToolbarButtonSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "toolbarButton",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTableRowSubrole",
+    "OldPrintedName": "NSAccessibilityTableRowSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "tableRow",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityOutlineRowSubrole",
+    "OldPrintedName": "NSAccessibilityOutlineRowSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "outlineRow",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySecureTextFieldSubrole",
+    "OldPrintedName": "NSAccessibilitySecureTextFieldSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "secureTextField",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityStandardWindowSubrole",
+    "OldPrintedName": "NSAccessibilityStandardWindowSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "standardWindow",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDialogSubrole",
+    "OldPrintedName": "NSAccessibilityDialogSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "dialog",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySystemDialogSubrole",
+    "OldPrintedName": "NSAccessibilitySystemDialogSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "systemDialog",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFloatingWindowSubrole",
+    "OldPrintedName": "NSAccessibilityFloatingWindowSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "floatingWindow",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySystemFloatingWindowSubrole",
+    "OldPrintedName": "NSAccessibilitySystemFloatingWindowSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "systemFloatingWindow",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityIncrementArrowSubrole",
+    "OldPrintedName": "NSAccessibilityIncrementArrowSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "incrementArrow",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDecrementArrowSubrole",
+    "OldPrintedName": "NSAccessibilityDecrementArrowSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "decrementArrow",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityIncrementPageSubrole",
+    "OldPrintedName": "NSAccessibilityIncrementPageSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "incrementPage",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDecrementPageSubrole",
+    "OldPrintedName": "NSAccessibilityDecrementPageSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "decrementPage",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySearchFieldSubrole",
+    "OldPrintedName": "NSAccessibilitySearchFieldSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "searchField",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTextAttachmentSubrole",
+    "OldPrintedName": "NSAccessibilityTextAttachmentSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "textAttachment",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTextLinkSubrole",
+    "OldPrintedName": "NSAccessibilityTextLinkSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "textLink",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityTimelineSubrole",
+    "OldPrintedName": "NSAccessibilityTimelineSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "timeline",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySortButtonSubrole",
+    "OldPrintedName": "NSAccessibilitySortButtonSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "sortButton",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityRatingIndicatorSubrole",
+    "OldPrintedName": "NSAccessibilityRatingIndicatorSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "ratingIndicator",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityContentListSubrole",
+    "OldPrintedName": "NSAccessibilityContentListSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "contentList",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDefinitionListSubrole",
+    "OldPrintedName": "NSAccessibilityDefinitionListSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "definitionList",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityFullScreenButtonSubrole",
+    "OldPrintedName": "NSAccessibilityFullScreenButtonSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "fullScreenButton",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityToggleSubrole",
+    "OldPrintedName": "NSAccessibilityToggleSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "toggle",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilitySwitchSubrole",
+    "OldPrintedName": "NSAccessibilitySwitchSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "switch",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAccessibilityDescriptionListSubrole",
+    "OldPrintedName": "NSAccessibilityDescriptionListSubrole",
+    "OldTypeName": "",
+    "NewPrintedName": "descriptionList",
+    "NewTypeName": "NSAccessibilitySubrole"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSAlertStyle",
+    "OldPrintedName": "NSAlertStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "Style",
+    "NewTypeName": "NSAlert"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSAnimatablePropertyContainer(cm)defaultAnimationForKey:",
+    "OldPrintedName": "defaultAnimation(forKey:)",
+    "OldTypeName": "NSWindow",
+    "NewPrintedName": "defaultAnimation(forKey:)",
+    "NewTypeName": "NSAnimatablePropertyContainer"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAnimationTriggerOrderIn",
+    "OldPrintedName": "NSAnimationTriggerOrderIn",
+    "OldTypeName": "",
+    "NewPrintedName": "animationTriggerOrderIn",
+    "NewTypeName": "NSAnimatablePropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAnimationTriggerOrderOut",
+    "OldPrintedName": "NSAnimationTriggerOrderOut",
+    "OldTypeName": "",
+    "NewPrintedName": "animationTriggerOrderOut",
+    "NewTypeName": "NSAnimatablePropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSAnimationCurve",
+    "OldPrintedName": "NSAnimationCurve",
+    "OldTypeName": "",
+    "NewPrintedName": "Curve",
+    "NewTypeName": "NSAnimation"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSAnimationBlockingMode",
+    "OldPrintedName": "NSAnimationBlockingMode",
+    "OldTypeName": "",
+    "NewPrintedName": "BlockingMode",
+    "NewTypeName": "NSAnimation"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSAnimationProgress",
+    "OldPrintedName": "NSAnimationProgress",
+    "OldTypeName": "",
+    "NewPrintedName": "Progress",
+    "NewTypeName": "NSAnimation"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAnimationProgressMarkNotification",
+    "OldPrintedName": "NSAnimationProgressMark",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "progressMarkNotification",
+    "NewTypeName": "NSAnimation"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAnimationProgressMark",
+    "OldPrintedName": "NSAnimationProgressMark",
+    "OldTypeName": "",
+    "NewPrintedName": "progressMarkUserInfoKey",
+    "NewTypeName": "NSAnimation"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAppKitVersionNumber",
+    "OldPrintedName": "NSAppKitVersionNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "current",
+    "NewTypeName": "NSAppKitVersion"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAppearanceNameAqua",
+    "OldPrintedName": "NSAppearanceNameAqua",
+    "OldTypeName": "",
+    "NewPrintedName": "aqua",
+    "NewTypeName": "NSAppearance.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAppearanceNameLightContent",
+    "OldPrintedName": "NSAppearanceNameLightContent",
+    "OldTypeName": "",
+    "NewPrintedName": "lightContent",
+    "NewTypeName": "NSAppearance.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAppearanceNameVibrantDark",
+    "OldPrintedName": "NSAppearanceNameVibrantDark",
+    "OldTypeName": "",
+    "NewPrintedName": "vibrantDark",
+    "NewTypeName": "NSAppearance.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAppearanceNameVibrantLight",
+    "OldPrintedName": "NSAppearanceNameVibrantLight",
+    "OldTypeName": "",
+    "NewPrintedName": "vibrantLight",
+    "NewTypeName": "NSAppearance.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSRequestUserAttentionType",
+    "OldPrintedName": "NSRequestUserAttentionType",
+    "OldTypeName": "",
+    "NewPrintedName": "RequestUserAttentionType",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationDelegateReply",
+    "OldPrintedName": "NSApplicationDelegateReply",
+    "OldTypeName": "",
+    "NewPrintedName": "DelegateReply",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationTerminateReply",
+    "OldPrintedName": "NSApplicationTerminateReply",
+    "OldTypeName": "",
+    "NewPrintedName": "TerminateReply",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPrintReply",
+    "OldPrintedName": "NSApplicationPrintReply",
+    "OldTypeName": "",
+    "NewPrintedName": "PrintReply",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSRemoteNotificationType",
+    "OldPrintedName": "NSRemoteNotificationType",
+    "OldTypeName": "",
+    "NewPrintedName": "RemoteNotificationType",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSRemoteNotificationType@NSRemoteNotificationTypeBadge",
+    "OldPrintedName": "badge",
+    "OldTypeName": "NSRemoteNotificationType",
+    "NewPrintedName": "badge",
+    "NewTypeName": "NSApplication.RemoteNotificationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSRemoteNotificationType@NSRemoteNotificationTypeSound",
+    "OldPrintedName": "sound",
+    "OldTypeName": "NSRemoteNotificationType",
+    "NewPrintedName": "sound",
+    "NewTypeName": "NSApplication.RemoteNotificationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSRemoteNotificationType@NSRemoteNotificationTypeAlert",
+    "OldPrintedName": "alert",
+    "OldTypeName": "NSRemoteNotificationType",
+    "NewPrintedName": "alert",
+    "NewTypeName": "NSApplication.RemoteNotificationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationDidBecomeActiveNotification",
+    "OldPrintedName": "NSApplicationDidBecomeActive",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didBecomeActiveNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationDidHideNotification",
+    "OldPrintedName": "NSApplicationDidHide",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didHideNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationDidFinishLaunchingNotification",
+    "OldPrintedName": "NSApplicationDidFinishLaunching",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didFinishLaunchingNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationDidResignActiveNotification",
+    "OldPrintedName": "NSApplicationDidResignActive",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didResignActiveNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationDidUnhideNotification",
+    "OldPrintedName": "NSApplicationDidUnhide",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didUnhideNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationDidUpdateNotification",
+    "OldPrintedName": "NSApplicationDidUpdate",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didUpdateNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationWillBecomeActiveNotification",
+    "OldPrintedName": "NSApplicationWillBecomeActive",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willBecomeActiveNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationWillHideNotification",
+    "OldPrintedName": "NSApplicationWillHide",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willHideNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationWillFinishLaunchingNotification",
+    "OldPrintedName": "NSApplicationWillFinishLaunching",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willFinishLaunchingNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationWillResignActiveNotification",
+    "OldPrintedName": "NSApplicationWillResignActive",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willResignActiveNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationWillUnhideNotification",
+    "OldPrintedName": "NSApplicationWillUnhide",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willUnhideNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationWillUpdateNotification",
+    "OldPrintedName": "NSApplicationWillUpdate",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willUpdateNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationWillTerminateNotification",
+    "OldPrintedName": "NSApplicationWillTerminate",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willTerminateNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationDidChangeScreenParametersNotification",
+    "OldPrintedName": "NSApplicationDidChangeScreenParameters",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeScreenParametersNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationLaunchIsDefaultLaunchKey",
+    "OldPrintedName": "NSApplicationLaunchIsDefaultLaunchKey",
+    "OldTypeName": "",
+    "NewPrintedName": "launchIsDefaultUserInfoKey",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationLaunchUserNotificationKey",
+    "OldPrintedName": "NSApplicationLaunchUserNotificationKey",
+    "OldTypeName": "",
+    "NewPrintedName": "launchUserNotificationUserInfoKey",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationDidChangeOcclusionStateNotification",
+    "OldPrintedName": "NSApplicationDidChangeOcclusionState",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeOcclusionStateNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSModalResponse",
+    "OldPrintedName": "NSModalResponse",
+    "OldTypeName": "",
+    "NewPrintedName": "ModalResponse",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@Ea@NSUpdateWindowsRunLoopOrdering@NSUpdateWindowsRunLoopOrdering",
+    "OldPrintedName": "NSUpdateWindowsRunLoopOrdering",
+    "OldTypeName": "",
+    "NewPrintedName": "updateWindowsRunLoopOrdering",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions",
+    "OldPrintedName": "NSApplicationPresentationOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "PresentationOptions",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationAutoHideDock",
+    "OldPrintedName": "autoHideDock",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "autoHideDock",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationHideDock",
+    "OldPrintedName": "hideDock",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "hideDock",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationAutoHideMenuBar",
+    "OldPrintedName": "autoHideMenuBar",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "autoHideMenuBar",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationHideMenuBar",
+    "OldPrintedName": "hideMenuBar",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "hideMenuBar",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationDisableAppleMenu",
+    "OldPrintedName": "disableAppleMenu",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "disableAppleMenu",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationDisableProcessSwitching",
+    "OldPrintedName": "disableProcessSwitching",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "disableProcessSwitching",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationDisableForceQuit",
+    "OldPrintedName": "disableForceQuit",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "disableForceQuit",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationDisableSessionTermination",
+    "OldPrintedName": "disableSessionTermination",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "disableSessionTermination",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationDisableHideApplication",
+    "OldPrintedName": "disableHideApplication",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "disableHideApplication",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationDisableMenuBarTransparency",
+    "OldPrintedName": "disableMenuBarTransparency",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "disableMenuBarTransparency",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationFullScreen",
+    "OldPrintedName": "fullScreen",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "fullScreen",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationAutoHideToolbar",
+    "OldPrintedName": "autoHideToolbar",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "autoHideToolbar",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationPresentationOptions@NSApplicationPresentationDisableCursorLocationAssistance",
+    "OldPrintedName": "disableCursorLocationAssistance",
+    "OldTypeName": "NSApplicationPresentationOptions",
+    "NewPrintedName": "disableCursorLocationAssistance",
+    "NewTypeName": "NSApplication.PresentationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationOcclusionState",
+    "OldPrintedName": "NSApplicationOcclusionState",
+    "OldTypeName": "",
+    "NewPrintedName": "OcclusionState",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationOcclusionState@NSApplicationOcclusionStateVisible",
+    "OldPrintedName": "visible",
+    "OldTypeName": "NSApplicationOcclusionState",
+    "NewPrintedName": "visible",
+    "NewTypeName": "NSApplication.OcclusionState"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowListOptions",
+    "OldPrintedName": "NSWindowListOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "WindowListOptions",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowListOptions@NSWindowListOrderedFrontToBack",
+    "OldPrintedName": "orderedFrontToBack",
+    "OldTypeName": "NSWindowListOptions",
+    "NewPrintedName": "orderedFrontToBack",
+    "NewTypeName": "NSApplication.WindowListOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSModalSession",
+    "OldPrintedName": "NSModalSession",
+    "OldTypeName": "",
+    "NewPrintedName": "ModalSession",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@Ea@NSDisplayWindowRunLoopOrdering@NSDisplayWindowRunLoopOrdering",
+    "OldPrintedName": "NSDisplayWindowRunLoopOrdering",
+    "OldTypeName": "",
+    "NewPrintedName": "displayWindowRunLoopOrdering",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@Ea@NSDisplayWindowRunLoopOrdering@NSResetCursorRectsRunLoopOrdering",
+    "OldPrintedName": "NSResetCursorRectsRunLoopOrdering",
+    "OldTypeName": "",
+    "NewPrintedName": "resetCursorRectsRunLoopOrdering",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSApplicationDidFinishRestoringWindowsNotification",
+    "OldPrintedName": "NSApplicationDidFinishRestoringWindows",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didFinishRestoringWindowsNotification",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationActivationOptions",
+    "OldPrintedName": "NSApplicationActivationOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "ActivationOptions",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationActivationOptions@NSApplicationActivateAllWindows",
+    "OldPrintedName": "activateAllWindows",
+    "OldTypeName": "NSApplicationActivationOptions",
+    "NewPrintedName": "activateAllWindows",
+    "NewTypeName": "NSApplication.ActivationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationActivationOptions@NSApplicationActivateIgnoringOtherApps",
+    "OldPrintedName": "activateIgnoringOtherApps",
+    "OldTypeName": "NSApplicationActivationOptions",
+    "NewPrintedName": "activateIgnoringOtherApps",
+    "NewTypeName": "NSApplication.ActivationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSApplicationActivationPolicy",
+    "OldPrintedName": "NSApplicationActivationPolicy",
+    "OldTypeName": "",
+    "NewPrintedName": "ActivationPolicy",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLineCapStyle",
+    "OldPrintedName": "NSLineCapStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "LineCapStyle",
+    "NewTypeName": "NSBezierPath"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLineJoinStyle",
+    "OldPrintedName": "NSLineJoinStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "LineJoinStyle",
+    "NewTypeName": "NSBezierPath"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindingRule",
+    "OldPrintedName": "NSWindingRule",
+    "OldTypeName": "",
+    "NewPrintedName": "WindingRule",
+    "NewTypeName": "NSBezierPath"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBezierPathElement",
+    "OldPrintedName": "NSBezierPathElement",
+    "OldTypeName": "",
+    "NewPrintedName": "ElementType",
+    "NewTypeName": "NSBezierPath"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSObservedObjectKey",
+    "OldPrintedName": "NSObservedObjectKey",
+    "OldTypeName": "",
+    "NewPrintedName": "observedObject",
+    "NewTypeName": "NSBindingInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSObservedKeyPathKey",
+    "OldPrintedName": "NSObservedKeyPathKey",
+    "OldTypeName": "",
+    "NewPrintedName": "observedKeyPath",
+    "NewTypeName": "NSBindingInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOptionsKey",
+    "OldPrintedName": "NSOptionsKey",
+    "OldTypeName": "",
+    "NewPrintedName": "options",
+    "NewTypeName": "NSBindingInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAlignmentBinding",
+    "OldPrintedName": "NSAlignmentBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "alignment",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAlternateImageBinding",
+    "OldPrintedName": "NSAlternateImageBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "alternateImage",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAlternateTitleBinding",
+    "OldPrintedName": "NSAlternateTitleBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "alternateTitle",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAnimateBinding",
+    "OldPrintedName": "NSAnimateBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "animate",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAnimationDelayBinding",
+    "OldPrintedName": "NSAnimationDelayBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "animationDelay",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSArgumentBinding",
+    "OldPrintedName": "NSArgumentBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "argument",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAttributedStringBinding",
+    "OldPrintedName": "NSAttributedStringBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "attributedString",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContentArrayBinding",
+    "OldPrintedName": "NSContentArrayBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "contentArray",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContentArrayForMultipleSelectionBinding",
+    "OldPrintedName": "NSContentArrayForMultipleSelectionBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "contentArrayForMultipleSelection",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContentBinding",
+    "OldPrintedName": "NSContentBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "content",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContentDictionaryBinding",
+    "OldPrintedName": "NSContentDictionaryBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "contentDictionary",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContentHeightBinding",
+    "OldPrintedName": "NSContentHeightBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "contentHeight",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContentObjectBinding",
+    "OldPrintedName": "NSContentObjectBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "contentObject",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContentObjectsBinding",
+    "OldPrintedName": "NSContentObjectsBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "contentObjects",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContentSetBinding",
+    "OldPrintedName": "NSContentSetBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "contentSet",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContentValuesBinding",
+    "OldPrintedName": "NSContentValuesBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "contentValues",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContentWidthBinding",
+    "OldPrintedName": "NSContentWidthBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "contentWidth",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCriticalValueBinding",
+    "OldPrintedName": "NSCriticalValueBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "criticalValue",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDataBinding",
+    "OldPrintedName": "NSDataBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "data",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDisplayPatternTitleBinding",
+    "OldPrintedName": "NSDisplayPatternTitleBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "displayPatternTitle",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDisplayPatternValueBinding",
+    "OldPrintedName": "NSDisplayPatternValueBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "displayPatternValue",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDocumentEditedBinding",
+    "OldPrintedName": "NSDocumentEditedBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "documentEdited",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDoubleClickArgumentBinding",
+    "OldPrintedName": "NSDoubleClickArgumentBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "doubleClickArgument",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDoubleClickTargetBinding",
+    "OldPrintedName": "NSDoubleClickTargetBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "doubleClickTarget",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSEditableBinding",
+    "OldPrintedName": "NSEditableBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "editable",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSEnabledBinding",
+    "OldPrintedName": "NSEnabledBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "enabled",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSExcludedKeysBinding",
+    "OldPrintedName": "NSExcludedKeysBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "excludedKeys",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFilterPredicateBinding",
+    "OldPrintedName": "NSFilterPredicateBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "filterPredicate",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontBinding",
+    "OldPrintedName": "NSFontBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "font",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontBoldBinding",
+    "OldPrintedName": "NSFontBoldBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "fontBold",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontFamilyNameBinding",
+    "OldPrintedName": "NSFontFamilyNameBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "fontFamilyName",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontItalicBinding",
+    "OldPrintedName": "NSFontItalicBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "fontItalic",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontNameBinding",
+    "OldPrintedName": "NSFontNameBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "fontName",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontSizeBinding",
+    "OldPrintedName": "NSFontSizeBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "fontSize",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSHeaderTitleBinding",
+    "OldPrintedName": "NSHeaderTitleBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "headerTitle",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSHiddenBinding",
+    "OldPrintedName": "NSHiddenBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "hidden",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageBinding",
+    "OldPrintedName": "NSImageBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "image",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSIncludedKeysBinding",
+    "OldPrintedName": "NSIncludedKeysBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "includedKeys",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSInitialKeyBinding",
+    "OldPrintedName": "NSInitialKeyBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "initialKey",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSInitialValueBinding",
+    "OldPrintedName": "NSInitialValueBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "initialValue",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSIsIndeterminateBinding",
+    "OldPrintedName": "NSIsIndeterminateBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "isIndeterminate",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLabelBinding",
+    "OldPrintedName": "NSLabelBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "label",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLocalizedKeyDictionaryBinding",
+    "OldPrintedName": "NSLocalizedKeyDictionaryBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "localizedKeyDictionary",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSManagedObjectContextBinding",
+    "OldPrintedName": "NSManagedObjectContextBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "managedObjectContext",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMaximumRecentsBinding",
+    "OldPrintedName": "NSMaximumRecentsBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "maximumRecents",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMaxValueBinding",
+    "OldPrintedName": "NSMaxValueBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "maxValue",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMaxWidthBinding",
+    "OldPrintedName": "NSMaxWidthBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "maxWidth",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMinValueBinding",
+    "OldPrintedName": "NSMinValueBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "minValue",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMinWidthBinding",
+    "OldPrintedName": "NSMinWidthBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "minWidth",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMixedStateImageBinding",
+    "OldPrintedName": "NSMixedStateImageBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "mixedStateImage",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOffStateImageBinding",
+    "OldPrintedName": "NSOffStateImageBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "offStateImage",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOnStateImageBinding",
+    "OldPrintedName": "NSOnStateImageBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "onStateImage",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPositioningRectBinding",
+    "OldPrintedName": "NSPositioningRectBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "positioningRect",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPredicateBinding",
+    "OldPrintedName": "NSPredicateBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "predicate",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRecentSearchesBinding",
+    "OldPrintedName": "NSRecentSearchesBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "recentSearches",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRepresentedFilenameBinding",
+    "OldPrintedName": "NSRepresentedFilenameBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "representedFilename",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRowHeightBinding",
+    "OldPrintedName": "NSRowHeightBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "rowHeight",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSelectedIdentifierBinding",
+    "OldPrintedName": "NSSelectedIdentifierBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedIdentifier",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSelectedIndexBinding",
+    "OldPrintedName": "NSSelectedIndexBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedIndex",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSelectedLabelBinding",
+    "OldPrintedName": "NSSelectedLabelBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedLabel",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSelectedObjectBinding",
+    "OldPrintedName": "NSSelectedObjectBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedObject",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSelectedObjectsBinding",
+    "OldPrintedName": "NSSelectedObjectsBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedObjects",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSelectedTagBinding",
+    "OldPrintedName": "NSSelectedTagBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedTag",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSelectedValueBinding",
+    "OldPrintedName": "NSSelectedValueBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedValue",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSelectedValuesBinding",
+    "OldPrintedName": "NSSelectedValuesBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedValues",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSelectionIndexesBinding",
+    "OldPrintedName": "NSSelectionIndexesBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "selectionIndexes",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSelectionIndexPathsBinding",
+    "OldPrintedName": "NSSelectionIndexPathsBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "selectionIndexPaths",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSortDescriptorsBinding",
+    "OldPrintedName": "NSSortDescriptorsBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "sortDescriptors",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTargetBinding",
+    "OldPrintedName": "NSTargetBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "target",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextColorBinding",
+    "OldPrintedName": "NSTextColorBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "textColor",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTitleBinding",
+    "OldPrintedName": "NSTitleBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "title",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolTipBinding",
+    "OldPrintedName": "NSToolTipBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "toolTip",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTransparentBinding",
+    "OldPrintedName": "NSTransparentBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "transparent",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSValueBinding",
+    "OldPrintedName": "NSValueBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "value",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSValuePathBinding",
+    "OldPrintedName": "NSValuePathBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "valuePath",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSValueURLBinding",
+    "OldPrintedName": "NSValueURLBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "valueURL",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVisibleBinding",
+    "OldPrintedName": "NSVisibleBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "visible",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWarningValueBinding",
+    "OldPrintedName": "NSWarningValueBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "warningValue",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWidthBinding",
+    "OldPrintedName": "NSWidthBinding",
+    "OldTypeName": "",
+    "NewPrintedName": "width",
+    "NewTypeName": "NSBindingName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAllowsEditingMultipleValuesSelectionBindingOption",
+    "OldPrintedName": "NSAllowsEditingMultipleValuesSelectionBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "allowsEditingMultipleValuesSelection",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAllowsNullArgumentBindingOption",
+    "OldPrintedName": "NSAllowsNullArgumentBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "allowsNullArgument",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAlwaysPresentsApplicationModalAlertsBindingOption",
+    "OldPrintedName": "NSAlwaysPresentsApplicationModalAlertsBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "alwaysPresentsApplicationModalAlerts",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSConditionallySetsEditableBindingOption",
+    "OldPrintedName": "NSConditionallySetsEditableBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "conditionallySetsEditable",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSConditionallySetsEnabledBindingOption",
+    "OldPrintedName": "NSConditionallySetsEnabledBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "conditionallySetsEnabled",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSConditionallySetsHiddenBindingOption",
+    "OldPrintedName": "NSConditionallySetsHiddenBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "conditionallySetsHidden",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContinuouslyUpdatesValueBindingOption",
+    "OldPrintedName": "NSContinuouslyUpdatesValueBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "continuouslyUpdatesValue",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCreatesSortDescriptorBindingOption",
+    "OldPrintedName": "NSCreatesSortDescriptorBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "createsSortDescriptor",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDeletesObjectsOnRemoveBindingsOption",
+    "OldPrintedName": "NSDeletesObjectsOnRemoveBindingsOption",
+    "OldTypeName": "",
+    "NewPrintedName": "deletesObjectsOnRemove",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDisplayNameBindingOption",
+    "OldPrintedName": "NSDisplayNameBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "displayName",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDisplayPatternBindingOption",
+    "OldPrintedName": "NSDisplayPatternBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "displayPattern",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContentPlacementTagBindingOption",
+    "OldPrintedName": "NSContentPlacementTagBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "contentPlacementTag",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSHandlesContentAsCompoundValueBindingOption",
+    "OldPrintedName": "NSHandlesContentAsCompoundValueBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "handlesContentAsCompoundValue",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSInsertsNullPlaceholderBindingOption",
+    "OldPrintedName": "NSInsertsNullPlaceholderBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "insertsNullPlaceholder",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSInvokesSeparatelyWithArrayObjectsBindingOption",
+    "OldPrintedName": "NSInvokesSeparatelyWithArrayObjectsBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "invokesSeparatelyWithArrayObjects",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMultipleValuesPlaceholderBindingOption",
+    "OldPrintedName": "NSMultipleValuesPlaceholderBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "multipleValuesPlaceholder",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSNoSelectionPlaceholderBindingOption",
+    "OldPrintedName": "NSNoSelectionPlaceholderBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "noSelectionPlaceholder",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSNotApplicablePlaceholderBindingOption",
+    "OldPrintedName": "NSNotApplicablePlaceholderBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "notApplicablePlaceholder",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSNullPlaceholderBindingOption",
+    "OldPrintedName": "NSNullPlaceholderBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "nullPlaceholder",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRaisesForNotApplicableKeysBindingOption",
+    "OldPrintedName": "NSRaisesForNotApplicableKeysBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "raisesForNotApplicableKeys",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPredicateFormatBindingOption",
+    "OldPrintedName": "NSPredicateFormatBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "predicateFormat",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSelectorNameBindingOption",
+    "OldPrintedName": "NSSelectorNameBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "selectorName",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSelectsAllWhenSettingContentBindingOption",
+    "OldPrintedName": "NSSelectsAllWhenSettingContentBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "selectsAllWhenSettingContent",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSValidatesImmediatelyBindingOption",
+    "OldPrintedName": "NSValidatesImmediatelyBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "validatesImmediately",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSValueTransformerNameBindingOption",
+    "OldPrintedName": "NSValueTransformerNameBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "valueTransformerName",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSValueTransformerBindingOption",
+    "OldPrintedName": "NSValueTransformerBindingOption",
+    "OldTypeName": "",
+    "NewPrintedName": "valueTransformer",
+    "NewTypeName": "NSBindingOption"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTIFFCompression",
+    "OldPrintedName": "NSTIFFCompression",
+    "OldTypeName": "",
+    "NewPrintedName": "TIFFCompression",
+    "NewTypeName": "NSBitmapImageRep"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBitmapImageFileType",
+    "OldPrintedName": "NSBitmapImageFileType",
+    "OldTypeName": "",
+    "NewPrintedName": "FileType",
+    "NewTypeName": "NSBitmapImageRep"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSImageRepLoadStatus",
+    "OldPrintedName": "NSImageRepLoadStatus",
+    "OldTypeName": "",
+    "NewPrintedName": "LoadStatus",
+    "NewTypeName": "NSBitmapImageRep"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBitmapFormat",
+    "OldPrintedName": "NSBitmapFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "Format",
+    "NewTypeName": "NSBitmapImageRep"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBitmapFormat@NSBitmapFormatAlphaFirst",
+    "OldPrintedName": "alphaFirst",
+    "OldTypeName": "NSBitmapFormat",
+    "NewPrintedName": "alphaFirst",
+    "NewTypeName": "NSBitmapImageRep.Format"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBitmapFormat@NSBitmapFormatAlphaNonpremultiplied",
+    "OldPrintedName": "alphaNonpremultiplied",
+    "OldTypeName": "NSBitmapFormat",
+    "NewPrintedName": "alphaNonpremultiplied",
+    "NewTypeName": "NSBitmapImageRep.Format"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBitmapFormat@NSBitmapFormatFloatingPointSamples",
+    "OldPrintedName": "floatingPointSamples",
+    "OldTypeName": "NSBitmapFormat",
+    "NewPrintedName": "floatingPointSamples",
+    "NewTypeName": "NSBitmapImageRep.Format"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBitmapFormat@NSBitmapFormatSixteenBitLittleEndian",
+    "OldPrintedName": "sixteenBitLittleEndian",
+    "OldTypeName": "NSBitmapFormat",
+    "NewPrintedName": "sixteenBitLittleEndian",
+    "NewTypeName": "NSBitmapImageRep.Format"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBitmapFormat@NSBitmapFormatThirtyTwoBitLittleEndian",
+    "OldPrintedName": "thirtyTwoBitLittleEndian",
+    "OldTypeName": "NSBitmapFormat",
+    "NewPrintedName": "thirtyTwoBitLittleEndian",
+    "NewTypeName": "NSBitmapImageRep.Format"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBitmapFormat@NSBitmapFormatSixteenBitBigEndian",
+    "OldPrintedName": "sixteenBitBigEndian",
+    "OldTypeName": "NSBitmapFormat",
+    "NewPrintedName": "sixteenBitBigEndian",
+    "NewTypeName": "NSBitmapImageRep.Format"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBitmapFormat@NSBitmapFormatThirtyTwoBitBigEndian",
+    "OldPrintedName": "thirtyTwoBitBigEndian",
+    "OldTypeName": "NSBitmapFormat",
+    "NewPrintedName": "thirtyTwoBitBigEndian",
+    "NewTypeName": "NSBitmapImageRep.Format"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageCompressionMethod",
+    "OldPrintedName": "NSImageCompressionMethod",
+    "OldTypeName": "",
+    "NewPrintedName": "compressionMethod",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageCompressionFactor",
+    "OldPrintedName": "NSImageCompressionFactor",
+    "OldTypeName": "",
+    "NewPrintedName": "compressionFactor",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageDitherTransparency",
+    "OldPrintedName": "NSImageDitherTransparency",
+    "OldTypeName": "",
+    "NewPrintedName": "ditherTransparency",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageRGBColorTable",
+    "OldPrintedName": "NSImageRGBColorTable",
+    "OldTypeName": "",
+    "NewPrintedName": "rgbColorTable",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageInterlaced",
+    "OldPrintedName": "NSImageInterlaced",
+    "OldTypeName": "",
+    "NewPrintedName": "interlaced",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageColorSyncProfileData",
+    "OldPrintedName": "NSImageColorSyncProfileData",
+    "OldTypeName": "",
+    "NewPrintedName": "colorSyncProfileData",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageFrameCount",
+    "OldPrintedName": "NSImageFrameCount",
+    "OldTypeName": "",
+    "NewPrintedName": "frameCount",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageCurrentFrame",
+    "OldPrintedName": "NSImageCurrentFrame",
+    "OldTypeName": "",
+    "NewPrintedName": "currentFrame",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageCurrentFrameDuration",
+    "OldPrintedName": "NSImageCurrentFrameDuration",
+    "OldTypeName": "",
+    "NewPrintedName": "currentFrameDuration",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageLoopCount",
+    "OldPrintedName": "NSImageLoopCount",
+    "OldTypeName": "",
+    "NewPrintedName": "loopCount",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageGamma",
+    "OldPrintedName": "NSImageGamma",
+    "OldTypeName": "",
+    "NewPrintedName": "gamma",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageProgressive",
+    "OldPrintedName": "NSImageProgressive",
+    "OldTypeName": "",
+    "NewPrintedName": "progressive",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageEXIFData",
+    "OldPrintedName": "NSImageEXIFData",
+    "OldTypeName": "",
+    "NewPrintedName": "exifData",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageFallbackBackgroundColor",
+    "OldPrintedName": "NSImageFallbackBackgroundColor",
+    "OldTypeName": "",
+    "NewPrintedName": "fallbackBackgroundColor",
+    "NewTypeName": "NSBitmapImageRep.PropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTitlePosition",
+    "OldPrintedName": "NSTitlePosition",
+    "OldTypeName": "",
+    "NewPrintedName": "TitlePosition",
+    "NewTypeName": "NSBox"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBoxType",
+    "OldPrintedName": "NSBoxType",
+    "OldTypeName": "",
+    "NewPrintedName": "BoxType",
+    "NewTypeName": "NSBox"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBrowserColumnConfigurationDidChangeNotification",
+    "OldPrintedName": "NSBrowserColumnConfigurationDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "columnConfigurationDidChangeNotification",
+    "NewTypeName": "NSBrowser"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBrowserColumnResizingType",
+    "OldPrintedName": "NSBrowserColumnResizingType",
+    "OldTypeName": "",
+    "NewPrintedName": "ColumnResizingType",
+    "NewTypeName": "NSBrowser"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBrowserDropOperation",
+    "OldPrintedName": "NSBrowserDropOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "DropOperation",
+    "NewTypeName": "NSBrowser"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSButtonType",
+    "OldPrintedName": "NSButtonType",
+    "OldTypeName": "",
+    "NewPrintedName": "ButtonType",
+    "NewTypeName": "NSButton"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBezelStyle",
+    "OldPrintedName": "NSBezelStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "BezelStyle",
+    "NewTypeName": "NSButton"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGradientType",
+    "OldPrintedName": "NSGradientType",
+    "OldTypeName": "",
+    "NewPrintedName": "GradientType",
+    "NewTypeName": "NSButton"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCellHitResult",
+    "OldPrintedName": "NSCellHitResult",
+    "OldTypeName": "",
+    "NewPrintedName": "HitResult",
+    "NewTypeName": "NSCell"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCellHitResult@NSCellHitContentArea",
+    "OldPrintedName": "contentArea",
+    "OldTypeName": "NSCellHitResult",
+    "NewPrintedName": "contentArea",
+    "NewTypeName": "NSCell.HitResult"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCellHitResult@NSCellHitEditableTextArea",
+    "OldPrintedName": "editableTextArea",
+    "OldTypeName": "NSCellHitResult",
+    "NewPrintedName": "editableTextArea",
+    "NewTypeName": "NSCell.HitResult"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCellHitResult@NSCellHitTrackableArea",
+    "OldPrintedName": "trackableArea",
+    "OldTypeName": "NSCellHitResult",
+    "NewPrintedName": "trackableArea",
+    "NewTypeName": "NSCell.HitResult"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCellType",
+    "OldPrintedName": "NSCellType",
+    "OldTypeName": "",
+    "NewPrintedName": "CellType",
+    "NewTypeName": "NSCell"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCellAttribute",
+    "OldPrintedName": "NSCellAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "Attribute",
+    "NewTypeName": "NSCell"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSCellStateValue",
+    "OldPrintedName": "NSCellStateValue",
+    "OldTypeName": "",
+    "NewPrintedName": "StateValue",
+    "NewTypeName": "NSCell"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCellStyleMask",
+    "OldPrintedName": "NSCellStyleMask",
+    "OldTypeName": "",
+    "NewPrintedName": "StyleMask",
+    "NewTypeName": "NSCell"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCellStyleMask@NSContentsCellMask",
+    "OldPrintedName": "contentsCellMask",
+    "OldTypeName": "NSCellStyleMask",
+    "NewPrintedName": "contentsCellMask",
+    "NewTypeName": "NSCell.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCellStyleMask@NSPushInCellMask",
+    "OldPrintedName": "pushInCellMask",
+    "OldTypeName": "NSCellStyleMask",
+    "NewPrintedName": "pushInCellMask",
+    "NewTypeName": "NSCell.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCellStyleMask@NSChangeGrayCellMask",
+    "OldPrintedName": "changeGrayCellMask",
+    "OldTypeName": "NSCellStyleMask",
+    "NewPrintedName": "changeGrayCellMask",
+    "NewTypeName": "NSCell.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCellStyleMask@NSChangeBackgroundCellMask",
+    "OldPrintedName": "changeBackgroundCellMask",
+    "OldTypeName": "NSCellStyleMask",
+    "NewPrintedName": "changeBackgroundCellMask",
+    "NewTypeName": "NSCell.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewDropOperation",
+    "OldPrintedName": "NSCollectionViewDropOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "DropOperation",
+    "NewTypeName": "NSCollectionView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewScrollPosition",
+    "OldPrintedName": "NSCollectionViewScrollPosition",
+    "OldTypeName": "",
+    "NewPrintedName": "ScrollPosition",
+    "NewTypeName": "NSCollectionView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewScrollPosition@NSCollectionViewScrollPositionTop",
+    "OldPrintedName": "top",
+    "OldTypeName": "NSCollectionViewScrollPosition",
+    "NewPrintedName": "top",
+    "NewTypeName": "NSCollectionView.ScrollPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewScrollPosition@NSCollectionViewScrollPositionCenteredVertically",
+    "OldPrintedName": "centeredVertically",
+    "OldTypeName": "NSCollectionViewScrollPosition",
+    "NewPrintedName": "centeredVertically",
+    "NewTypeName": "NSCollectionView.ScrollPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewScrollPosition@NSCollectionViewScrollPositionBottom",
+    "OldPrintedName": "bottom",
+    "OldTypeName": "NSCollectionViewScrollPosition",
+    "NewPrintedName": "bottom",
+    "NewTypeName": "NSCollectionView.ScrollPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewScrollPosition@NSCollectionViewScrollPositionNearestHorizontalEdge",
+    "OldPrintedName": "nearestHorizontalEdge",
+    "OldTypeName": "NSCollectionViewScrollPosition",
+    "NewPrintedName": "nearestHorizontalEdge",
+    "NewTypeName": "NSCollectionView.ScrollPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewScrollPosition@NSCollectionViewScrollPositionLeft",
+    "OldPrintedName": "left",
+    "OldTypeName": "NSCollectionViewScrollPosition",
+    "NewPrintedName": "left",
+    "NewTypeName": "NSCollectionView.ScrollPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewScrollPosition@NSCollectionViewScrollPositionCenteredHorizontally",
+    "OldPrintedName": "centeredHorizontally",
+    "OldTypeName": "NSCollectionViewScrollPosition",
+    "NewPrintedName": "centeredHorizontally",
+    "NewTypeName": "NSCollectionView.ScrollPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewScrollPosition@NSCollectionViewScrollPositionRight",
+    "OldPrintedName": "right",
+    "OldTypeName": "NSCollectionViewScrollPosition",
+    "NewPrintedName": "right",
+    "NewTypeName": "NSCollectionView.ScrollPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewScrollPosition@NSCollectionViewScrollPositionLeadingEdge",
+    "OldPrintedName": "leadingEdge",
+    "OldTypeName": "NSCollectionViewScrollPosition",
+    "NewPrintedName": "leadingEdge",
+    "NewTypeName": "NSCollectionView.ScrollPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewScrollPosition@NSCollectionViewScrollPositionTrailingEdge",
+    "OldPrintedName": "trailingEdge",
+    "OldTypeName": "NSCollectionViewScrollPosition",
+    "NewPrintedName": "trailingEdge",
+    "NewTypeName": "NSCollectionView.ScrollPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewScrollPosition@NSCollectionViewScrollPositionNearestVerticalEdge",
+    "OldPrintedName": "nearestVerticalEdge",
+    "OldTypeName": "NSCollectionViewScrollPosition",
+    "NewPrintedName": "nearestVerticalEdge",
+    "NewTypeName": "NSCollectionView.ScrollPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCollectionElementKindInterItemGapIndicator",
+    "OldPrintedName": "NSCollectionElementKindInterItemGapIndicator",
+    "OldTypeName": "",
+    "NewPrintedName": "interItemGapIndicator",
+    "NewTypeName": "NSCollectionView.SupplementaryElementKind"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCollectionElementKindSectionHeader",
+    "OldPrintedName": "NSCollectionElementKindSectionHeader",
+    "OldTypeName": "",
+    "NewPrintedName": "sectionHeader",
+    "NewTypeName": "NSCollectionView.SupplementaryElementKind"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCollectionElementKindSectionFooter",
+    "OldPrintedName": "NSCollectionElementKindSectionFooter",
+    "OldTypeName": "",
+    "NewPrintedName": "sectionFooter",
+    "NewTypeName": "NSCollectionView.SupplementaryElementKind"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionUpdateAction",
+    "OldPrintedName": "NSCollectionUpdateAction",
+    "OldTypeName": "",
+    "NewPrintedName": "UpdateAction",
+    "NewTypeName": "NSCollectionView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewScrollDirection",
+    "OldPrintedName": "NSCollectionViewScrollDirection",
+    "OldTypeName": "",
+    "NewPrintedName": "ScrollDirection",
+    "NewTypeName": "NSCollectionView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCollectionViewItemHighlightState",
+    "OldPrintedName": "NSCollectionViewItemHighlightState",
+    "OldTypeName": "",
+    "NewPrintedName": "HighlightState",
+    "NewTypeName": "NSCollectionViewItem"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSControlTintDidChangeNotification",
+    "OldPrintedName": "NSControlTintDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "currentControlTintDidChangeNotification",
+    "NewTypeName": "NSColor"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSystemColorsDidChangeNotification",
+    "OldPrintedName": "NSSystemColorsDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "systemColorsDidChangeNotification",
+    "NewTypeName": "NSColor"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSColorListDidChangeNotification",
+    "OldPrintedName": "NSColorListDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeNotification",
+    "NewTypeName": "NSColorList"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSColorPanelColorDidChangeNotification",
+    "OldPrintedName": "NSColorPanelColorDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "colorDidChangeNotification",
+    "NewTypeName": "NSColorPanel"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSColorPanelMode",
+    "OldPrintedName": "NSColorPanelMode",
+    "OldTypeName": "",
+    "NewPrintedName": "Mode",
+    "NewTypeName": "NSColorPanel"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSColorPanelOptions",
+    "OldPrintedName": "NSColorPanelOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "Options",
+    "NewTypeName": "NSColorPanel"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSColorPanelOptions@NSColorPanelGrayModeMask",
+    "OldPrintedName": "grayModeMask",
+    "OldTypeName": "NSColorPanelOptions",
+    "NewPrintedName": "grayModeMask",
+    "NewTypeName": "NSColorPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSColorPanelOptions@NSColorPanelRGBModeMask",
+    "OldPrintedName": "rgbModeMask",
+    "OldTypeName": "NSColorPanelOptions",
+    "NewPrintedName": "rgbModeMask",
+    "NewTypeName": "NSColorPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSColorPanelOptions@NSColorPanelCMYKModeMask",
+    "OldPrintedName": "cmykModeMask",
+    "OldTypeName": "NSColorPanelOptions",
+    "NewPrintedName": "cmykModeMask",
+    "NewTypeName": "NSColorPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSColorPanelOptions@NSColorPanelHSBModeMask",
+    "OldPrintedName": "hsbModeMask",
+    "OldTypeName": "NSColorPanelOptions",
+    "NewPrintedName": "hsbModeMask",
+    "NewTypeName": "NSColorPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSColorPanelOptions@NSColorPanelCustomPaletteModeMask",
+    "OldPrintedName": "customPaletteModeMask",
+    "OldTypeName": "NSColorPanelOptions",
+    "NewPrintedName": "customPaletteModeMask",
+    "NewTypeName": "NSColorPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSColorPanelOptions@NSColorPanelColorListModeMask",
+    "OldPrintedName": "colorListModeMask",
+    "OldTypeName": "NSColorPanelOptions",
+    "NewPrintedName": "colorListModeMask",
+    "NewTypeName": "NSColorPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSColorPanelOptions@NSColorPanelWheelModeMask",
+    "OldPrintedName": "wheelModeMask",
+    "OldTypeName": "NSColorPanelOptions",
+    "NewPrintedName": "wheelModeMask",
+    "NewTypeName": "NSColorPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSColorPanelOptions@NSColorPanelCrayonModeMask",
+    "OldPrintedName": "crayonModeMask",
+    "OldTypeName": "NSColorPanelOptions",
+    "NewPrintedName": "crayonModeMask",
+    "NewTypeName": "NSColorPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSColorPanelOptions@NSColorPanelAllModesMask",
+    "OldPrintedName": "allModesMask",
+    "OldTypeName": "NSColorPanelOptions",
+    "NewPrintedName": "allModesMask",
+    "NewTypeName": "NSColorPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSColorSpaceModel",
+    "OldPrintedName": "NSColorSpaceModel",
+    "OldTypeName": "",
+    "NewPrintedName": "Model",
+    "NewTypeName": "NSColorSpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCalibratedWhiteColorSpace",
+    "OldPrintedName": "NSCalibratedWhiteColorSpace",
+    "OldTypeName": "",
+    "NewPrintedName": "calibratedWhite",
+    "NewTypeName": "NSColorSpaceName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCalibratedRGBColorSpace",
+    "OldPrintedName": "NSCalibratedRGBColorSpace",
+    "OldTypeName": "",
+    "NewPrintedName": "calibratedRGB",
+    "NewTypeName": "NSColorSpaceName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDeviceWhiteColorSpace",
+    "OldPrintedName": "NSDeviceWhiteColorSpace",
+    "OldTypeName": "",
+    "NewPrintedName": "deviceWhite",
+    "NewTypeName": "NSColorSpaceName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDeviceRGBColorSpace",
+    "OldPrintedName": "NSDeviceRGBColorSpace",
+    "OldTypeName": "",
+    "NewPrintedName": "deviceRGB",
+    "NewTypeName": "NSColorSpaceName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDeviceCMYKColorSpace",
+    "OldPrintedName": "NSDeviceCMYKColorSpace",
+    "OldTypeName": "",
+    "NewPrintedName": "deviceCMYK",
+    "NewTypeName": "NSColorSpaceName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSNamedColorSpace",
+    "OldPrintedName": "NSNamedColorSpace",
+    "OldTypeName": "",
+    "NewPrintedName": "named",
+    "NewTypeName": "NSColorSpaceName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPatternColorSpace",
+    "OldPrintedName": "NSPatternColorSpace",
+    "OldTypeName": "",
+    "NewPrintedName": "pattern",
+    "NewTypeName": "NSColorSpaceName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCustomColorSpace",
+    "OldPrintedName": "NSCustomColorSpace",
+    "OldTypeName": "",
+    "NewPrintedName": "custom",
+    "NewTypeName": "NSColorSpaceName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSNumberOfColorComponents",
+    "OldPrintedName": "NSNumberOfColorComponents(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "numberOfColorComponents",
+    "NewTypeName": "NSColorSpaceName",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSComboBoxWillPopUpNotification",
+    "OldPrintedName": "NSComboBoxWillPopUp",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willPopUpNotification",
+    "NewTypeName": "NSComboBox"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSComboBoxWillDismissNotification",
+    "OldPrintedName": "NSComboBoxWillDismiss",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willDismissNotification",
+    "NewTypeName": "NSComboBox"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSComboBoxSelectionDidChangeNotification",
+    "OldPrintedName": "NSComboBoxSelectionDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "selectionDidChangeNotification",
+    "NewTypeName": "NSComboBox"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSComboBoxSelectionIsChangingNotification",
+    "OldPrintedName": "NSComboBoxSelectionIsChanging",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "selectionIsChangingNotification",
+    "NewTypeName": "NSComboBox"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSControlTextDidBeginEditingNotification",
+    "OldPrintedName": "NSControlTextDidBeginEditing",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "textDidBeginEditingNotification",
+    "NewTypeName": "NSControl"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSControlTextDidEndEditingNotification",
+    "OldPrintedName": "NSControlTextDidEndEditing",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "textDidEndEditingNotification",
+    "NewTypeName": "NSControl"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSControlTextDidChangeNotification",
+    "OldPrintedName": "NSControlTextDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "textDidChangeNotification",
+    "NewTypeName": "NSControl"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCellImagePosition",
+    "OldPrintedName": "NSCellImagePosition",
+    "OldTypeName": "",
+    "NewPrintedName": "ImagePosition",
+    "NewTypeName": "NSControl"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSControlSize",
+    "OldPrintedName": "NSControlSize",
+    "OldTypeName": "",
+    "NewPrintedName": "ControlSize",
+    "NewTypeName": "NSControl"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSDatePickerStyle",
+    "OldPrintedName": "NSDatePickerStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "Style",
+    "NewTypeName": "NSDatePicker"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSDatePickerMode",
+    "OldPrintedName": "NSDatePickerMode",
+    "OldTypeName": "",
+    "NewPrintedName": "Mode",
+    "NewTypeName": "NSDatePicker"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSDatePickerElementFlags",
+    "OldPrintedName": "NSDatePickerElementFlags",
+    "OldTypeName": "",
+    "NewPrintedName": "ElementFlags",
+    "NewTypeName": "NSDatePicker"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSDatePickerElementFlags@NSHourMinuteDatePickerElementFlag",
+    "OldPrintedName": "hourMinuteDatePickerElementFlag",
+    "OldTypeName": "NSDatePickerElementFlags",
+    "NewPrintedName": "hourMinuteDatePickerElementFlag",
+    "NewTypeName": "NSDatePicker.ElementFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSDatePickerElementFlags@NSHourMinuteSecondDatePickerElementFlag",
+    "OldPrintedName": "hourMinuteSecondDatePickerElementFlag",
+    "OldTypeName": "NSDatePickerElementFlags",
+    "NewPrintedName": "hourMinuteSecondDatePickerElementFlag",
+    "NewTypeName": "NSDatePicker.ElementFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSDatePickerElementFlags@NSTimeZoneDatePickerElementFlag",
+    "OldPrintedName": "timeZoneDatePickerElementFlag",
+    "OldTypeName": "NSDatePickerElementFlags",
+    "NewPrintedName": "timeZoneDatePickerElementFlag",
+    "NewTypeName": "NSDatePicker.ElementFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSDatePickerElementFlags@NSYearMonthDatePickerElementFlag",
+    "OldPrintedName": "yearMonthDatePickerElementFlag",
+    "OldTypeName": "NSDatePickerElementFlags",
+    "NewPrintedName": "yearMonthDatePickerElementFlag",
+    "NewTypeName": "NSDatePicker.ElementFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSDatePickerElementFlags@NSYearMonthDayDatePickerElementFlag",
+    "OldPrintedName": "yearMonthDayDatePickerElementFlag",
+    "OldTypeName": "NSDatePickerElementFlags",
+    "NewPrintedName": "yearMonthDayDatePickerElementFlag",
+    "NewTypeName": "NSDatePicker.ElementFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSDatePickerElementFlags@NSEraDatePickerElementFlag",
+    "OldPrintedName": "eraDatePickerElementFlag",
+    "OldTypeName": "NSDatePickerElementFlags",
+    "NewPrintedName": "eraDatePickerElementFlag",
+    "NewTypeName": "NSDatePicker.ElementFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDeviceResolution",
+    "OldPrintedName": "NSDeviceResolution",
+    "OldTypeName": "",
+    "NewPrintedName": "resolution",
+    "NewTypeName": "NSDeviceDescriptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDeviceColorSpaceName",
+    "OldPrintedName": "NSDeviceColorSpaceName",
+    "OldTypeName": "",
+    "NewPrintedName": "colorSpaceName",
+    "NewTypeName": "NSDeviceDescriptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDeviceBitsPerSample",
+    "OldPrintedName": "NSDeviceBitsPerSample",
+    "OldTypeName": "",
+    "NewPrintedName": "bitsPerSample",
+    "NewTypeName": "NSDeviceDescriptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDeviceIsScreen",
+    "OldPrintedName": "NSDeviceIsScreen",
+    "OldTypeName": "",
+    "NewPrintedName": "isScreen",
+    "NewTypeName": "NSDeviceDescriptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDeviceIsPrinter",
+    "OldPrintedName": "NSDeviceIsPrinter",
+    "OldTypeName": "",
+    "NewPrintedName": "isPrinter",
+    "NewTypeName": "NSDeviceDescriptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDeviceSize",
+    "OldPrintedName": "NSDeviceSize",
+    "OldTypeName": "",
+    "NewPrintedName": "size",
+    "NewTypeName": "NSDeviceDescriptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSDocumentChangeType",
+    "OldPrintedName": "NSDocumentChangeType",
+    "OldTypeName": "",
+    "NewPrintedName": "ChangeType",
+    "NewTypeName": "NSDocument"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSSaveOperationType",
+    "OldPrintedName": "NSSaveOperationType",
+    "OldTypeName": "",
+    "NewPrintedName": "SaveOperationType",
+    "NewTypeName": "NSDocument"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSWindowRestoration(cm)restoreWindowWithIdentifier:state:completionHandler:",
+    "OldPrintedName": "restoreWindow(withIdentifier:state:completionHandler:)",
+    "OldTypeName": "NSWindowRestoration",
+    "NewPrintedName": "restoreWindow(withIdentifier:state:completionHandler:)",
+    "NewTypeName": "NSDocumentController"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDraggingImageComponentIconKey",
+    "OldPrintedName": "NSDraggingImageComponentIconKey",
+    "OldTypeName": "",
+    "NewPrintedName": "icon",
+    "NewTypeName": "NSDraggingItem.ImageComponentKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDraggingImageComponentLabelKey",
+    "OldPrintedName": "NSDraggingImageComponentLabelKey",
+    "OldTypeName": "",
+    "NewPrintedName": "label",
+    "NewTypeName": "NSDraggingItem.ImageComponentKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDrawerWillOpenNotification",
+    "OldPrintedName": "NSDrawerWillOpen",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willOpenNotification",
+    "NewTypeName": "NSDrawer"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDrawerDidOpenNotification",
+    "OldPrintedName": "NSDrawerDidOpen",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didOpenNotification",
+    "NewTypeName": "NSDrawer"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDrawerWillCloseNotification",
+    "OldPrintedName": "NSDrawerWillClose",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willCloseNotification",
+    "NewTypeName": "NSDrawer"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDrawerDidCloseNotification",
+    "OldPrintedName": "NSDrawerDidClose",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didCloseNotification",
+    "NewTypeName": "NSDrawer"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSDrawerState",
+    "OldPrintedName": "NSDrawerState",
+    "OldTypeName": "",
+    "NewPrintedName": "State",
+    "NewTypeName": "NSDrawer"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventType",
+    "OldPrintedName": "NSEventType",
+    "OldTypeName": "",
+    "NewPrintedName": "EventType",
+    "NewTypeName": "NSEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask",
+    "OldPrintedName": "NSEventMask",
+    "OldTypeName": "",
+    "NewPrintedName": "EventTypeMask",
+    "NewTypeName": "NSEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskLeftMouseDown",
+    "OldPrintedName": "leftMouseDown",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "leftMouseDown",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskLeftMouseUp",
+    "OldPrintedName": "leftMouseUp",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "leftMouseUp",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskRightMouseDown",
+    "OldPrintedName": "rightMouseDown",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "rightMouseDown",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskRightMouseUp",
+    "OldPrintedName": "rightMouseUp",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "rightMouseUp",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskMouseMoved",
+    "OldPrintedName": "mouseMoved",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "mouseMoved",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskLeftMouseDragged",
+    "OldPrintedName": "leftMouseDragged",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "leftMouseDragged",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskRightMouseDragged",
+    "OldPrintedName": "rightMouseDragged",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "rightMouseDragged",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskMouseEntered",
+    "OldPrintedName": "mouseEntered",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "mouseEntered",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskMouseExited",
+    "OldPrintedName": "mouseExited",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "mouseExited",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskKeyDown",
+    "OldPrintedName": "keyDown",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "keyDown",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskKeyUp",
+    "OldPrintedName": "keyUp",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "keyUp",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskFlagsChanged",
+    "OldPrintedName": "flagsChanged",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "flagsChanged",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskAppKitDefined",
+    "OldPrintedName": "appKitDefined",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "appKitDefined",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskSystemDefined",
+    "OldPrintedName": "systemDefined",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "systemDefined",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskApplicationDefined",
+    "OldPrintedName": "applicationDefined",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "applicationDefined",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskPeriodic",
+    "OldPrintedName": "periodic",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "periodic",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskCursorUpdate",
+    "OldPrintedName": "cursorUpdate",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "cursorUpdate",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskScrollWheel",
+    "OldPrintedName": "scrollWheel",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "scrollWheel",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskTabletPoint",
+    "OldPrintedName": "tabletPoint",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "tabletPoint",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskTabletProximity",
+    "OldPrintedName": "tabletProximity",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "tabletProximity",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskOtherMouseDown",
+    "OldPrintedName": "otherMouseDown",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "otherMouseDown",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskOtherMouseUp",
+    "OldPrintedName": "otherMouseUp",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "otherMouseUp",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskOtherMouseDragged",
+    "OldPrintedName": "otherMouseDragged",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "otherMouseDragged",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskGesture",
+    "OldPrintedName": "gesture",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "gesture",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskMagnify",
+    "OldPrintedName": "magnify",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "magnify",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskSwipe",
+    "OldPrintedName": "swipe",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "swipe",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskRotate",
+    "OldPrintedName": "rotate",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "rotate",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskBeginGesture",
+    "OldPrintedName": "beginGesture",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "beginGesture",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskEndGesture",
+    "OldPrintedName": "endGesture",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "endGesture",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskSmartMagnify",
+    "OldPrintedName": "smartMagnify",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "smartMagnify",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskPressure",
+    "OldPrintedName": "pressure",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "pressure",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskDirectTouch",
+    "OldPrintedName": "directTouch",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "directTouch",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventMask@NSEventMaskAny",
+    "OldPrintedName": "any",
+    "OldTypeName": "NSEventMask",
+    "NewPrintedName": "any",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSEventMaskFromType",
+    "OldPrintedName": "NSEventMaskFromType(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "init(type:)",
+    "NewTypeName": "NSEvent.EventTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventModifierFlags",
+    "OldPrintedName": "NSEventModifierFlags",
+    "OldTypeName": "",
+    "NewPrintedName": "ModifierFlags",
+    "NewTypeName": "NSEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventModifierFlags@NSEventModifierFlagCapsLock",
+    "OldPrintedName": "capsLock",
+    "OldTypeName": "NSEventModifierFlags",
+    "NewPrintedName": "capsLock",
+    "NewTypeName": "NSEvent.ModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventModifierFlags@NSEventModifierFlagShift",
+    "OldPrintedName": "shift",
+    "OldTypeName": "NSEventModifierFlags",
+    "NewPrintedName": "shift",
+    "NewTypeName": "NSEvent.ModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventModifierFlags@NSEventModifierFlagControl",
+    "OldPrintedName": "control",
+    "OldTypeName": "NSEventModifierFlags",
+    "NewPrintedName": "control",
+    "NewTypeName": "NSEvent.ModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventModifierFlags@NSEventModifierFlagOption",
+    "OldPrintedName": "option",
+    "OldTypeName": "NSEventModifierFlags",
+    "NewPrintedName": "option",
+    "NewTypeName": "NSEvent.ModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventModifierFlags@NSEventModifierFlagCommand",
+    "OldPrintedName": "command",
+    "OldTypeName": "NSEventModifierFlags",
+    "NewPrintedName": "command",
+    "NewTypeName": "NSEvent.ModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventModifierFlags@NSEventModifierFlagNumericPad",
+    "OldPrintedName": "numericPad",
+    "OldTypeName": "NSEventModifierFlags",
+    "NewPrintedName": "numericPad",
+    "NewTypeName": "NSEvent.ModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventModifierFlags@NSEventModifierFlagHelp",
+    "OldPrintedName": "help",
+    "OldTypeName": "NSEventModifierFlags",
+    "NewPrintedName": "help",
+    "NewTypeName": "NSEvent.ModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventModifierFlags@NSEventModifierFlagFunction",
+    "OldPrintedName": "function",
+    "OldTypeName": "NSEventModifierFlags",
+    "NewPrintedName": "function",
+    "NewTypeName": "NSEvent.ModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventModifierFlags@NSEventModifierFlagDeviceIndependentFlagsMask",
+    "OldPrintedName": "deviceIndependentFlagsMask",
+    "OldTypeName": "NSEventModifierFlags",
+    "NewPrintedName": "deviceIndependentFlagsMask",
+    "NewTypeName": "NSEvent.ModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPointingDeviceType",
+    "OldPrintedName": "NSPointingDeviceType",
+    "OldTypeName": "",
+    "NewPrintedName": "PointingDeviceType",
+    "NewTypeName": "NSEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventButtonMask",
+    "OldPrintedName": "NSEventButtonMask",
+    "OldTypeName": "",
+    "NewPrintedName": "ButtonMask",
+    "NewTypeName": "NSEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventButtonMask@NSEventButtonMaskPenTip",
+    "OldPrintedName": "penTip",
+    "OldTypeName": "NSEventButtonMask",
+    "NewPrintedName": "penTip",
+    "NewTypeName": "NSEvent.ButtonMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventButtonMask@NSEventButtonMaskPenLowerSide",
+    "OldPrintedName": "penLowerSide",
+    "OldTypeName": "NSEventButtonMask",
+    "NewPrintedName": "penLowerSide",
+    "NewTypeName": "NSEvent.ButtonMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventButtonMask@NSEventButtonMaskPenUpperSide",
+    "OldPrintedName": "penUpperSide",
+    "OldTypeName": "NSEventButtonMask",
+    "NewPrintedName": "penUpperSide",
+    "NewTypeName": "NSEvent.ButtonMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventPhase",
+    "OldPrintedName": "NSEventPhase",
+    "OldTypeName": "",
+    "NewPrintedName": "Phase",
+    "NewTypeName": "NSEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventPhase@NSEventPhaseBegan",
+    "OldPrintedName": "began",
+    "OldTypeName": "NSEventPhase",
+    "NewPrintedName": "began",
+    "NewTypeName": "NSEvent.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventPhase@NSEventPhaseStationary",
+    "OldPrintedName": "stationary",
+    "OldTypeName": "NSEventPhase",
+    "NewPrintedName": "stationary",
+    "NewTypeName": "NSEvent.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventPhase@NSEventPhaseChanged",
+    "OldPrintedName": "changed",
+    "OldTypeName": "NSEventPhase",
+    "NewPrintedName": "changed",
+    "NewTypeName": "NSEvent.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventPhase@NSEventPhaseEnded",
+    "OldPrintedName": "ended",
+    "OldTypeName": "NSEventPhase",
+    "NewPrintedName": "ended",
+    "NewTypeName": "NSEvent.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventPhase@NSEventPhaseCancelled",
+    "OldPrintedName": "cancelled",
+    "OldTypeName": "NSEventPhase",
+    "NewPrintedName": "cancelled",
+    "NewTypeName": "NSEvent.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventPhase@NSEventPhaseMayBegin",
+    "OldPrintedName": "mayBegin",
+    "OldTypeName": "NSEventPhase",
+    "NewPrintedName": "mayBegin",
+    "NewTypeName": "NSEvent.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventGestureAxis",
+    "OldPrintedName": "NSEventGestureAxis",
+    "OldTypeName": "",
+    "NewPrintedName": "GestureAxis",
+    "NewTypeName": "NSEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventSwipeTrackingOptions",
+    "OldPrintedName": "NSEventSwipeTrackingOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "SwipeTrackingOptions",
+    "NewTypeName": "NSEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventSwipeTrackingOptions@NSEventSwipeTrackingLockDirection",
+    "OldPrintedName": "lockDirection",
+    "OldTypeName": "NSEventSwipeTrackingOptions",
+    "NewPrintedName": "lockDirection",
+    "NewTypeName": "NSEvent.SwipeTrackingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventSwipeTrackingOptions@NSEventSwipeTrackingClampGestureAmount",
+    "OldPrintedName": "clampGestureAmount",
+    "OldTypeName": "NSEventSwipeTrackingOptions",
+    "NewPrintedName": "clampGestureAmount",
+    "NewTypeName": "NSEvent.SwipeTrackingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventSubtype",
+    "OldPrintedName": "NSEventSubtype",
+    "OldTypeName": "",
+    "NewPrintedName": "EventSubtype",
+    "NewTypeName": "NSEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventSubtype@NSEventSubtypePowerOff",
+    "OldPrintedName": "powerOff",
+    "OldTypeName": "NSEventSubtype",
+    "NewPrintedName": "powerOff",
+    "NewTypeName": "NSEvent.EventSubtype"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventSubtype@NSEventSubtypeMouseEvent",
+    "OldPrintedName": "mouseEvent",
+    "OldTypeName": "NSEventSubtype",
+    "NewPrintedName": "mouseEvent",
+    "NewTypeName": "NSEvent.EventSubtype"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventSubtype@NSEventSubtypeTabletPoint",
+    "OldPrintedName": "tabletPoint",
+    "OldTypeName": "NSEventSubtype",
+    "NewPrintedName": "tabletPoint",
+    "NewTypeName": "NSEvent.EventSubtype"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSEventSubtype@NSEventSubtypeTabletProximity",
+    "OldPrintedName": "tabletProximity",
+    "OldTypeName": "NSEventSubtype",
+    "NewPrintedName": "tabletProximity",
+    "NewTypeName": "NSEvent.EventSubtype"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPressureBehavior",
+    "OldPrintedName": "NSPressureBehavior",
+    "OldTypeName": "",
+    "NewPrintedName": "PressureBehavior",
+    "NewTypeName": "NSEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSSetFocusRingStyle",
+    "OldPrintedName": "NSSetFocusRingStyle(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "set()",
+    "NewTypeName": "NSFocusRingPlacement",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontWeightUltraLight",
+    "OldPrintedName": "NSFontWeightUltraLight",
+    "OldTypeName": "",
+    "NewPrintedName": "ultraLight",
+    "NewTypeName": "NSFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontWeightThin",
+    "OldPrintedName": "NSFontWeightThin",
+    "OldTypeName": "",
+    "NewPrintedName": "thin",
+    "NewTypeName": "NSFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontWeightLight",
+    "OldPrintedName": "NSFontWeightLight",
+    "OldTypeName": "",
+    "NewPrintedName": "light",
+    "NewTypeName": "NSFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontWeightRegular",
+    "OldPrintedName": "NSFontWeightRegular",
+    "OldTypeName": "",
+    "NewPrintedName": "regular",
+    "NewTypeName": "NSFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontWeightMedium",
+    "OldPrintedName": "NSFontWeightMedium",
+    "OldTypeName": "",
+    "NewPrintedName": "medium",
+    "NewTypeName": "NSFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontWeightSemibold",
+    "OldPrintedName": "NSFontWeightSemibold",
+    "OldTypeName": "",
+    "NewPrintedName": "semibold",
+    "NewTypeName": "NSFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontWeightBold",
+    "OldPrintedName": "NSFontWeightBold",
+    "OldTypeName": "",
+    "NewPrintedName": "bold",
+    "NewTypeName": "NSFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontWeightHeavy",
+    "OldPrintedName": "NSFontWeightHeavy",
+    "OldTypeName": "",
+    "NewPrintedName": "heavy",
+    "NewTypeName": "NSFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontWeightBlack",
+    "OldPrintedName": "NSFontWeightBlack",
+    "OldTypeName": "",
+    "NewPrintedName": "black",
+    "NewTypeName": "NSFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontIdentityMatrix",
+    "OldPrintedName": "NSFontIdentityMatrix",
+    "OldTypeName": "",
+    "NewPrintedName": "identityMatrix",
+    "NewTypeName": "NSFont"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAntialiasThresholdChangedNotification",
+    "OldPrintedName": "NSAntialiasThresholdChanged",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "antialiasThresholdChangedNotification",
+    "NewTypeName": "NSFont"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontSetChangedNotification",
+    "OldPrintedName": "NSFontSetChanged",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "fontSetChangedNotification",
+    "NewTypeName": "NSFont"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionDidChangeNotification",
+    "OldPrintedName": "NSFontCollectionDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeNotification",
+    "NewTypeName": "NSFontCollection"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionActionKey",
+    "OldPrintedName": "NSFontCollectionActionKey",
+    "OldTypeName": "",
+    "NewPrintedName": "action",
+    "NewTypeName": "NSFontCollection.UserInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionNameKey",
+    "OldPrintedName": "NSFontCollectionNameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "name",
+    "NewTypeName": "NSFontCollection.UserInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionOldNameKey",
+    "OldPrintedName": "NSFontCollectionOldNameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "oldName",
+    "NewTypeName": "NSFontCollection.UserInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionVisibilityKey",
+    "OldPrintedName": "NSFontCollectionVisibilityKey",
+    "OldTypeName": "",
+    "NewPrintedName": "visibility",
+    "NewTypeName": "NSFontCollection.UserInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionWasShown",
+    "OldPrintedName": "NSFontCollectionWasShown",
+    "OldTypeName": "",
+    "NewPrintedName": "shown",
+    "NewTypeName": "NSFontCollection.ActionTypeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionWasHidden",
+    "OldPrintedName": "NSFontCollectionWasHidden",
+    "OldTypeName": "",
+    "NewPrintedName": "hidden",
+    "NewTypeName": "NSFontCollection.ActionTypeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionWasRenamed",
+    "OldPrintedName": "NSFontCollectionWasRenamed",
+    "OldTypeName": "",
+    "NewPrintedName": "renamed",
+    "NewTypeName": "NSFontCollection.ActionTypeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSFontCollectionVisibility",
+    "OldPrintedName": "NSFontCollectionVisibility",
+    "OldTypeName": "",
+    "NewPrintedName": "Visibility",
+    "NewTypeName": "NSFontCollection"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSFontCollectionVisibility@NSFontCollectionVisibilityProcess",
+    "OldPrintedName": "process",
+    "OldTypeName": "NSFontCollectionVisibility",
+    "NewPrintedName": "process",
+    "NewTypeName": "NSFontCollection.Visibility"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSFontCollectionVisibility@NSFontCollectionVisibilityUser",
+    "OldPrintedName": "user",
+    "OldTypeName": "NSFontCollectionVisibility",
+    "NewPrintedName": "user",
+    "NewTypeName": "NSFontCollection.Visibility"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSFontCollectionVisibility@NSFontCollectionVisibilityComputer",
+    "OldPrintedName": "computer",
+    "OldTypeName": "NSFontCollectionVisibility",
+    "NewPrintedName": "computer",
+    "NewTypeName": "NSFontCollection.Visibility"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionAllFonts",
+    "OldPrintedName": "NSFontCollectionAllFonts",
+    "OldTypeName": "",
+    "NewPrintedName": "allFonts",
+    "NewTypeName": "NSFontCollection.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionUser",
+    "OldPrintedName": "NSFontCollectionUser",
+    "OldTypeName": "",
+    "NewPrintedName": "user",
+    "NewTypeName": "NSFontCollection.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionFavorites",
+    "OldPrintedName": "NSFontCollectionFavorites",
+    "OldTypeName": "",
+    "NewPrintedName": "favorites",
+    "NewTypeName": "NSFontCollection.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionRecentlyUsed",
+    "OldPrintedName": "NSFontCollectionRecentlyUsed",
+    "OldTypeName": "",
+    "NewPrintedName": "recentlyUsed",
+    "NewTypeName": "NSFontCollection.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionIncludeDisabledFontsOption",
+    "OldPrintedName": "NSFontCollectionIncludeDisabledFontsOption",
+    "OldTypeName": "",
+    "NewPrintedName": "includeDisabledFontsOption",
+    "NewTypeName": "NSFontCollectionMatchingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionRemoveDuplicatesOption",
+    "OldPrintedName": "NSFontCollectionRemoveDuplicatesOption",
+    "OldTypeName": "",
+    "NewPrintedName": "removeDuplicatesOption",
+    "NewTypeName": "NSFontCollectionMatchingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCollectionDisallowAutoActivationOption",
+    "OldPrintedName": "NSFontCollectionDisallowAutoActivationOption",
+    "OldTypeName": "",
+    "NewPrintedName": "disallowAutoActivationOption",
+    "NewTypeName": "NSFontCollectionMatchingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontFamilyAttribute",
+    "OldPrintedName": "NSFontFamilyAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "family",
+    "NewTypeName": "NSFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontNameAttribute",
+    "OldPrintedName": "NSFontNameAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "name",
+    "NewTypeName": "NSFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontFaceAttribute",
+    "OldPrintedName": "NSFontFaceAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "face",
+    "NewTypeName": "NSFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontSizeAttribute",
+    "OldPrintedName": "NSFontSizeAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "size",
+    "NewTypeName": "NSFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontVisibleNameAttribute",
+    "OldPrintedName": "NSFontVisibleNameAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "visibleName",
+    "NewTypeName": "NSFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontMatrixAttribute",
+    "OldPrintedName": "NSFontMatrixAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "matrix",
+    "NewTypeName": "NSFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontVariationAttribute",
+    "OldPrintedName": "NSFontVariationAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "variation",
+    "NewTypeName": "NSFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCharacterSetAttribute",
+    "OldPrintedName": "NSFontCharacterSetAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "characterSet",
+    "NewTypeName": "NSFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontCascadeListAttribute",
+    "OldPrintedName": "NSFontCascadeListAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "cascadeList",
+    "NewTypeName": "NSFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontTraitsAttribute",
+    "OldPrintedName": "NSFontTraitsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "traits",
+    "NewTypeName": "NSFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontFixedAdvanceAttribute",
+    "OldPrintedName": "NSFontFixedAdvanceAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "fixedAdvance",
+    "NewTypeName": "NSFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontFeatureSettingsAttribute",
+    "OldPrintedName": "NSFontFeatureSettingsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "featureSettings",
+    "NewTypeName": "NSFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontSymbolicTrait",
+    "OldPrintedName": "NSFontSymbolicTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "symbolic",
+    "NewTypeName": "NSFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontWeightTrait",
+    "OldPrintedName": "NSFontWeightTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "weight",
+    "NewTypeName": "NSFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontWidthTrait",
+    "OldPrintedName": "NSFontWidthTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "width",
+    "NewTypeName": "NSFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontSlantTrait",
+    "OldPrintedName": "NSFontSlantTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "slant",
+    "NewTypeName": "NSFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontVariationAxisIdentifierKey",
+    "OldPrintedName": "NSFontVariationAxisIdentifierKey",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier",
+    "NewTypeName": "NSFontDescriptor.VariationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontVariationAxisMinimumValueKey",
+    "OldPrintedName": "NSFontVariationAxisMinimumValueKey",
+    "OldTypeName": "",
+    "NewPrintedName": "minimumValue",
+    "NewTypeName": "NSFontDescriptor.VariationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontVariationAxisMaximumValueKey",
+    "OldPrintedName": "NSFontVariationAxisMaximumValueKey",
+    "OldTypeName": "",
+    "NewPrintedName": "maximumValue",
+    "NewTypeName": "NSFontDescriptor.VariationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontVariationAxisDefaultValueKey",
+    "OldPrintedName": "NSFontVariationAxisDefaultValueKey",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultValue",
+    "NewTypeName": "NSFontDescriptor.VariationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontVariationAxisNameKey",
+    "OldPrintedName": "NSFontVariationAxisNameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "name",
+    "NewTypeName": "NSFontDescriptor.VariationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontFeatureTypeIdentifierKey",
+    "OldPrintedName": "NSFontFeatureTypeIdentifierKey",
+    "OldTypeName": "",
+    "NewPrintedName": "typeIdentifier",
+    "NewTypeName": "NSFontDescriptor.FeatureKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontFeatureSelectorIdentifierKey",
+    "OldPrintedName": "NSFontFeatureSelectorIdentifierKey",
+    "OldTypeName": "",
+    "NewPrintedName": "selectorIdentifier",
+    "NewTypeName": "NSFontDescriptor.FeatureKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGestureRecognizerState",
+    "OldPrintedName": "NSGestureRecognizerState",
+    "OldTypeName": "",
+    "NewPrintedName": "State",
+    "NewTypeName": "NSGestureRecognizer"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGestureRecognizerState@NSGestureRecognizerStateRecognized",
+    "OldPrintedName": "recognized",
+    "OldTypeName": "NSGestureRecognizerState",
+    "NewPrintedName": "recognized",
+    "NewTypeName": "NSGestureRecognizer.State"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGradientDrawingOptions",
+    "OldPrintedName": "NSGradientDrawingOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "DrawingOptions",
+    "NewTypeName": "NSGradient"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGradientDrawingOptions@NSGradientDrawsBeforeStartingLocation",
+    "OldPrintedName": "drawsBeforeStartingLocation",
+    "OldTypeName": "NSGradientDrawingOptions",
+    "NewPrintedName": "drawsBeforeStartingLocation",
+    "NewTypeName": "NSGradient.DrawingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGradientDrawingOptions@NSGradientDrawsAfterEndingLocation",
+    "OldPrintedName": "drawsAfterEndingLocation",
+    "OldTypeName": "NSGradientDrawingOptions",
+    "NewPrintedName": "drawsAfterEndingLocation",
+    "NewTypeName": "NSGradient.DrawingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSGraphicsContextDestinationAttributeName",
+    "OldPrintedName": "NSGraphicsContextDestinationAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "destination",
+    "NewTypeName": "NSGraphicsContext.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSGraphicsContextRepresentationFormatAttributeName",
+    "OldPrintedName": "NSGraphicsContextRepresentationFormatAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "representationFormat",
+    "NewTypeName": "NSGraphicsContext.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSGraphicsContextPSFormat",
+    "OldPrintedName": "NSGraphicsContextPSFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "postScript",
+    "NewTypeName": "NSGraphicsContext.RepresentationFormatName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSGraphicsContextPDFFormat",
+    "OldPrintedName": "NSGraphicsContextPDFFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "pdf",
+    "NewTypeName": "NSGraphicsContext.RepresentationFormatName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGridCellPlacement",
+    "OldPrintedName": "NSGridCellPlacement",
+    "OldTypeName": "",
+    "NewPrintedName": "Placement",
+    "NewTypeName": "NSGridCell"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGridCellPlacement@NSGridCellPlacementTop",
+    "OldPrintedName": "top",
+    "OldTypeName": "NSGridCellPlacement",
+    "NewPrintedName": "top",
+    "NewTypeName": "NSGridCell.Placement"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGridCellPlacement@NSGridCellPlacementBottom",
+    "OldPrintedName": "bottom",
+    "OldTypeName": "NSGridCellPlacement",
+    "NewPrintedName": "bottom",
+    "NewTypeName": "NSGridCell.Placement"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGridRowAlignment",
+    "OldPrintedName": "NSGridRowAlignment",
+    "OldTypeName": "",
+    "NewPrintedName": "Alignment",
+    "NewTypeName": "NSGridRow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSGridViewSizeForContent",
+    "OldPrintedName": "NSGridViewSizeForContent",
+    "OldTypeName": "",
+    "NewPrintedName": "sizedForContent",
+    "NewTypeName": "NSGridView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSHapticFeedbackPattern",
+    "OldPrintedName": "NSHapticFeedbackPattern",
+    "OldTypeName": "",
+    "NewPrintedName": "FeedbackPattern",
+    "NewTypeName": "NSHapticFeedbackManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSHapticFeedbackPerformanceTime",
+    "OldPrintedName": "NSHapticFeedbackPerformanceTime",
+    "OldTypeName": "",
+    "NewPrintedName": "PerformanceTime",
+    "NewTypeName": "NSHapticFeedbackManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContextHelpModeDidActivateNotification",
+    "OldPrintedName": "NSContextHelpModeDidActivate",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "contextHelpModeDidActivateNotification",
+    "NewTypeName": "NSHelpManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSContextHelpModeDidDeactivateNotification",
+    "OldPrintedName": "NSContextHelpModeDidDeactivate",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "contextHelpModeDidDeactivateNotification",
+    "NewTypeName": "NSHelpManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSImageLayoutDirection",
+    "OldPrintedName": "NSImageLayoutDirection",
+    "OldTypeName": "",
+    "NewPrintedName": "LayoutDirection",
+    "NewTypeName": "NSImage"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameQuickLookTemplate",
+    "OldPrintedName": "NSImageNameQuickLookTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickLookTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameBluetoothTemplate",
+    "OldPrintedName": "NSImageNameBluetoothTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "bluetoothTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameIChatTheaterTemplate",
+    "OldPrintedName": "NSImageNameIChatTheaterTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "iChatTheaterTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameSlideshowTemplate",
+    "OldPrintedName": "NSImageNameSlideshowTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "slideshowTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameActionTemplate",
+    "OldPrintedName": "NSImageNameActionTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "actionTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameSmartBadgeTemplate",
+    "OldPrintedName": "NSImageNameSmartBadgeTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "smartBadgeTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameIconViewTemplate",
+    "OldPrintedName": "NSImageNameIconViewTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "iconViewTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameListViewTemplate",
+    "OldPrintedName": "NSImageNameListViewTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "listViewTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameColumnViewTemplate",
+    "OldPrintedName": "NSImageNameColumnViewTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "columnViewTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameFlowViewTemplate",
+    "OldPrintedName": "NSImageNameFlowViewTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "flowViewTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNamePathTemplate",
+    "OldPrintedName": "NSImageNamePathTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "pathTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameInvalidDataFreestandingTemplate",
+    "OldPrintedName": "NSImageNameInvalidDataFreestandingTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "invalidDataFreestandingTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameLockLockedTemplate",
+    "OldPrintedName": "NSImageNameLockLockedTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "lockLockedTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameLockUnlockedTemplate",
+    "OldPrintedName": "NSImageNameLockUnlockedTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "lockUnlockedTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameGoForwardTemplate",
+    "OldPrintedName": "NSImageNameGoForwardTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "goForwardTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameGoBackTemplate",
+    "OldPrintedName": "NSImageNameGoBackTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "goBackTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameGoRightTemplate",
+    "OldPrintedName": "NSImageNameGoRightTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "goRightTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameGoLeftTemplate",
+    "OldPrintedName": "NSImageNameGoLeftTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "goLeftTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameRightFacingTriangleTemplate",
+    "OldPrintedName": "NSImageNameRightFacingTriangleTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "rightFacingTriangleTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameLeftFacingTriangleTemplate",
+    "OldPrintedName": "NSImageNameLeftFacingTriangleTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "leftFacingTriangleTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameAddTemplate",
+    "OldPrintedName": "NSImageNameAddTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "addTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameRemoveTemplate",
+    "OldPrintedName": "NSImageNameRemoveTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "removeTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameRevealFreestandingTemplate",
+    "OldPrintedName": "NSImageNameRevealFreestandingTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "revealFreestandingTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameFollowLinkFreestandingTemplate",
+    "OldPrintedName": "NSImageNameFollowLinkFreestandingTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "followLinkFreestandingTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameEnterFullScreenTemplate",
+    "OldPrintedName": "NSImageNameEnterFullScreenTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "enterFullScreenTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameExitFullScreenTemplate",
+    "OldPrintedName": "NSImageNameExitFullScreenTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "exitFullScreenTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameStopProgressTemplate",
+    "OldPrintedName": "NSImageNameStopProgressTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "stopProgressTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameStopProgressFreestandingTemplate",
+    "OldPrintedName": "NSImageNameStopProgressFreestandingTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "stopProgressFreestandingTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameRefreshTemplate",
+    "OldPrintedName": "NSImageNameRefreshTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "refreshTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameRefreshFreestandingTemplate",
+    "OldPrintedName": "NSImageNameRefreshFreestandingTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "refreshFreestandingTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameBonjour",
+    "OldPrintedName": "NSImageNameBonjour",
+    "OldTypeName": "",
+    "NewPrintedName": "bonjour",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameComputer",
+    "OldPrintedName": "NSImageNameComputer",
+    "OldTypeName": "",
+    "NewPrintedName": "computer",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameFolderBurnable",
+    "OldPrintedName": "NSImageNameFolderBurnable",
+    "OldTypeName": "",
+    "NewPrintedName": "folderBurnable",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameFolderSmart",
+    "OldPrintedName": "NSImageNameFolderSmart",
+    "OldTypeName": "",
+    "NewPrintedName": "folderSmart",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameFolder",
+    "OldPrintedName": "NSImageNameFolder",
+    "OldTypeName": "",
+    "NewPrintedName": "folder",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameNetwork",
+    "OldPrintedName": "NSImageNameNetwork",
+    "OldTypeName": "",
+    "NewPrintedName": "network",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameMobileMe",
+    "OldPrintedName": "NSImageNameMobileMe",
+    "OldTypeName": "",
+    "NewPrintedName": "mobileMe",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameMultipleDocuments",
+    "OldPrintedName": "NSImageNameMultipleDocuments",
+    "OldTypeName": "",
+    "NewPrintedName": "multipleDocuments",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameUserAccounts",
+    "OldPrintedName": "NSImageNameUserAccounts",
+    "OldTypeName": "",
+    "NewPrintedName": "userAccounts",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNamePreferencesGeneral",
+    "OldPrintedName": "NSImageNamePreferencesGeneral",
+    "OldTypeName": "",
+    "NewPrintedName": "preferencesGeneral",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameAdvanced",
+    "OldPrintedName": "NSImageNameAdvanced",
+    "OldTypeName": "",
+    "NewPrintedName": "advanced",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameInfo",
+    "OldPrintedName": "NSImageNameInfo",
+    "OldTypeName": "",
+    "NewPrintedName": "info",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameFontPanel",
+    "OldPrintedName": "NSImageNameFontPanel",
+    "OldTypeName": "",
+    "NewPrintedName": "fontPanel",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameColorPanel",
+    "OldPrintedName": "NSImageNameColorPanel",
+    "OldTypeName": "",
+    "NewPrintedName": "colorPanel",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameUser",
+    "OldPrintedName": "NSImageNameUser",
+    "OldTypeName": "",
+    "NewPrintedName": "user",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameUserGroup",
+    "OldPrintedName": "NSImageNameUserGroup",
+    "OldTypeName": "",
+    "NewPrintedName": "userGroup",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameEveryone",
+    "OldPrintedName": "NSImageNameEveryone",
+    "OldTypeName": "",
+    "NewPrintedName": "everyone",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameUserGuest",
+    "OldPrintedName": "NSImageNameUserGuest",
+    "OldTypeName": "",
+    "NewPrintedName": "userGuest",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameMenuOnStateTemplate",
+    "OldPrintedName": "NSImageNameMenuOnStateTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "menuOnStateTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameMenuMixedStateTemplate",
+    "OldPrintedName": "NSImageNameMenuMixedStateTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "menuMixedStateTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameApplicationIcon",
+    "OldPrintedName": "NSImageNameApplicationIcon",
+    "OldTypeName": "",
+    "NewPrintedName": "applicationIcon",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTrashEmpty",
+    "OldPrintedName": "NSImageNameTrashEmpty",
+    "OldTypeName": "",
+    "NewPrintedName": "trashEmpty",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTrashFull",
+    "OldPrintedName": "NSImageNameTrashFull",
+    "OldTypeName": "",
+    "NewPrintedName": "trashFull",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameHomeTemplate",
+    "OldPrintedName": "NSImageNameHomeTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "homeTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameBookmarksTemplate",
+    "OldPrintedName": "NSImageNameBookmarksTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "bookmarksTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameCaution",
+    "OldPrintedName": "NSImageNameCaution",
+    "OldTypeName": "",
+    "NewPrintedName": "caution",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameStatusAvailable",
+    "OldPrintedName": "NSImageNameStatusAvailable",
+    "OldTypeName": "",
+    "NewPrintedName": "statusAvailable",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameStatusPartiallyAvailable",
+    "OldPrintedName": "NSImageNameStatusPartiallyAvailable",
+    "OldTypeName": "",
+    "NewPrintedName": "statusPartiallyAvailable",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameStatusUnavailable",
+    "OldPrintedName": "NSImageNameStatusUnavailable",
+    "OldTypeName": "",
+    "NewPrintedName": "statusUnavailable",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameStatusNone",
+    "OldPrintedName": "NSImageNameStatusNone",
+    "OldTypeName": "",
+    "NewPrintedName": "statusNone",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameShareTemplate",
+    "OldPrintedName": "NSImageNameShareTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "shareTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarAddDetailTemplate",
+    "OldPrintedName": "NSImageNameTouchBarAddDetailTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarAddDetailTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarAddTemplate",
+    "OldPrintedName": "NSImageNameTouchBarAddTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarAddTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarAlarmTemplate",
+    "OldPrintedName": "NSImageNameTouchBarAlarmTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarAlarmTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarAudioInputMuteTemplate",
+    "OldPrintedName": "NSImageNameTouchBarAudioInputMuteTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarAudioInputMuteTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarAudioInputTemplate",
+    "OldPrintedName": "NSImageNameTouchBarAudioInputTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarAudioInputTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarAudioOutputMuteTemplate",
+    "OldPrintedName": "NSImageNameTouchBarAudioOutputMuteTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarAudioOutputMuteTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarAudioOutputVolumeHighTemplate",
+    "OldPrintedName": "NSImageNameTouchBarAudioOutputVolumeHighTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarAudioOutputVolumeHighTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarAudioOutputVolumeLowTemplate",
+    "OldPrintedName": "NSImageNameTouchBarAudioOutputVolumeLowTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarAudioOutputVolumeLowTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarAudioOutputVolumeMediumTemplate",
+    "OldPrintedName": "NSImageNameTouchBarAudioOutputVolumeMediumTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarAudioOutputVolumeMediumTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarAudioOutputVolumeOffTemplate",
+    "OldPrintedName": "NSImageNameTouchBarAudioOutputVolumeOffTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarAudioOutputVolumeOffTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarBookmarksTemplate",
+    "OldPrintedName": "NSImageNameTouchBarBookmarksTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarBookmarksTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarColorPickerFill",
+    "OldPrintedName": "NSImageNameTouchBarColorPickerFill",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarColorPickerFill",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarColorPickerFont",
+    "OldPrintedName": "NSImageNameTouchBarColorPickerFont",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarColorPickerFont",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarColorPickerStroke",
+    "OldPrintedName": "NSImageNameTouchBarColorPickerStroke",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarColorPickerStroke",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarCommunicationAudioTemplate",
+    "OldPrintedName": "NSImageNameTouchBarCommunicationAudioTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarCommunicationAudioTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarCommunicationVideoTemplate",
+    "OldPrintedName": "NSImageNameTouchBarCommunicationVideoTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarCommunicationVideoTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarComposeTemplate",
+    "OldPrintedName": "NSImageNameTouchBarComposeTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarComposeTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarDeleteTemplate",
+    "OldPrintedName": "NSImageNameTouchBarDeleteTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarDeleteTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarDownloadTemplate",
+    "OldPrintedName": "NSImageNameTouchBarDownloadTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarDownloadTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarEnterFullScreenTemplate",
+    "OldPrintedName": "NSImageNameTouchBarEnterFullScreenTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarEnterFullScreenTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarExitFullScreenTemplate",
+    "OldPrintedName": "NSImageNameTouchBarExitFullScreenTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarExitFullScreenTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarFastForwardTemplate",
+    "OldPrintedName": "NSImageNameTouchBarFastForwardTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarFastForwardTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarFolderCopyToTemplate",
+    "OldPrintedName": "NSImageNameTouchBarFolderCopyToTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarFolderCopyToTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarFolderMoveToTemplate",
+    "OldPrintedName": "NSImageNameTouchBarFolderMoveToTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarFolderMoveToTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarFolderTemplate",
+    "OldPrintedName": "NSImageNameTouchBarFolderTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarFolderTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarGetInfoTemplate",
+    "OldPrintedName": "NSImageNameTouchBarGetInfoTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarGetInfoTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarGoBackTemplate",
+    "OldPrintedName": "NSImageNameTouchBarGoBackTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarGoBackTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarGoDownTemplate",
+    "OldPrintedName": "NSImageNameTouchBarGoDownTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarGoDownTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarGoForwardTemplate",
+    "OldPrintedName": "NSImageNameTouchBarGoForwardTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarGoForwardTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarGoUpTemplate",
+    "OldPrintedName": "NSImageNameTouchBarGoUpTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarGoUpTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarHistoryTemplate",
+    "OldPrintedName": "NSImageNameTouchBarHistoryTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarHistoryTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarIconViewTemplate",
+    "OldPrintedName": "NSImageNameTouchBarIconViewTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarIconViewTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarListViewTemplate",
+    "OldPrintedName": "NSImageNameTouchBarListViewTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarListViewTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarMailTemplate",
+    "OldPrintedName": "NSImageNameTouchBarMailTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarMailTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarNewFolderTemplate",
+    "OldPrintedName": "NSImageNameTouchBarNewFolderTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarNewFolderTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarNewMessageTemplate",
+    "OldPrintedName": "NSImageNameTouchBarNewMessageTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarNewMessageTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarOpenInBrowserTemplate",
+    "OldPrintedName": "NSImageNameTouchBarOpenInBrowserTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarOpenInBrowserTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarPauseTemplate",
+    "OldPrintedName": "NSImageNameTouchBarPauseTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarPauseTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarPlayPauseTemplate",
+    "OldPrintedName": "NSImageNameTouchBarPlayPauseTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarPlayPauseTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarPlayTemplate",
+    "OldPrintedName": "NSImageNameTouchBarPlayTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarPlayTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarQuickLookTemplate",
+    "OldPrintedName": "NSImageNameTouchBarQuickLookTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarQuickLookTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarRecordStartTemplate",
+    "OldPrintedName": "NSImageNameTouchBarRecordStartTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarRecordStartTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarRecordStopTemplate",
+    "OldPrintedName": "NSImageNameTouchBarRecordStopTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarRecordStopTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarRefreshTemplate",
+    "OldPrintedName": "NSImageNameTouchBarRefreshTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarRefreshTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarRewindTemplate",
+    "OldPrintedName": "NSImageNameTouchBarRewindTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarRewindTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarRotateLeftTemplate",
+    "OldPrintedName": "NSImageNameTouchBarRotateLeftTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarRotateLeftTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarRotateRightTemplate",
+    "OldPrintedName": "NSImageNameTouchBarRotateRightTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarRotateRightTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarSearchTemplate",
+    "OldPrintedName": "NSImageNameTouchBarSearchTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarSearchTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarShareTemplate",
+    "OldPrintedName": "NSImageNameTouchBarShareTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarShareTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarSidebarTemplate",
+    "OldPrintedName": "NSImageNameTouchBarSidebarTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarSidebarTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarSkipAhead15SecondsTemplate",
+    "OldPrintedName": "NSImageNameTouchBarSkipAhead15SecondsTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarSkipAhead15SecondsTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarSkipAhead30SecondsTemplate",
+    "OldPrintedName": "NSImageNameTouchBarSkipAhead30SecondsTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarSkipAhead30SecondsTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarSkipAheadTemplate",
+    "OldPrintedName": "NSImageNameTouchBarSkipAheadTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarSkipAheadTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarSkipBack15SecondsTemplate",
+    "OldPrintedName": "NSImageNameTouchBarSkipBack15SecondsTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarSkipBack15SecondsTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarSkipBack30SecondsTemplate",
+    "OldPrintedName": "NSImageNameTouchBarSkipBack30SecondsTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarSkipBack30SecondsTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarSkipBackTemplate",
+    "OldPrintedName": "NSImageNameTouchBarSkipBackTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarSkipBackTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarSkipToEndTemplate",
+    "OldPrintedName": "NSImageNameTouchBarSkipToEndTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarSkipToEndTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarSkipToStartTemplate",
+    "OldPrintedName": "NSImageNameTouchBarSkipToStartTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarSkipToStartTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarSlideshowTemplate",
+    "OldPrintedName": "NSImageNameTouchBarSlideshowTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarSlideshowTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarTagIconTemplate",
+    "OldPrintedName": "NSImageNameTouchBarTagIconTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarTagIconTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarTextBoldTemplate",
+    "OldPrintedName": "NSImageNameTouchBarTextBoldTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarTextBoldTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarTextBoxTemplate",
+    "OldPrintedName": "NSImageNameTouchBarTextBoxTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarTextBoxTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarTextCenterAlignTemplate",
+    "OldPrintedName": "NSImageNameTouchBarTextCenterAlignTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarTextCenterAlignTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarTextItalicTemplate",
+    "OldPrintedName": "NSImageNameTouchBarTextItalicTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarTextItalicTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarTextJustifiedAlignTemplate",
+    "OldPrintedName": "NSImageNameTouchBarTextJustifiedAlignTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarTextJustifiedAlignTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarTextLeftAlignTemplate",
+    "OldPrintedName": "NSImageNameTouchBarTextLeftAlignTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarTextLeftAlignTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarTextListTemplate",
+    "OldPrintedName": "NSImageNameTouchBarTextListTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarTextListTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarTextRightAlignTemplate",
+    "OldPrintedName": "NSImageNameTouchBarTextRightAlignTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarTextRightAlignTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarTextStrikethroughTemplate",
+    "OldPrintedName": "NSImageNameTouchBarTextStrikethroughTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarTextStrikethroughTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarTextUnderlineTemplate",
+    "OldPrintedName": "NSImageNameTouchBarTextUnderlineTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarTextUnderlineTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarUserAddTemplate",
+    "OldPrintedName": "NSImageNameTouchBarUserAddTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarUserAddTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarUserGroupTemplate",
+    "OldPrintedName": "NSImageNameTouchBarUserGroupTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarUserGroupTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarUserTemplate",
+    "OldPrintedName": "NSImageNameTouchBarUserTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarUserTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarVolumeDownTemplate",
+    "OldPrintedName": "NSImageNameTouchBarVolumeDownTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarVolumeDownTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarVolumeUpTemplate",
+    "OldPrintedName": "NSImageNameTouchBarVolumeUpTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarVolumeUpTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageNameTouchBarPlayheadTemplate",
+    "OldPrintedName": "NSImageNameTouchBarPlayheadTemplate",
+    "OldTypeName": "",
+    "NewPrintedName": "touchBarPlayheadTemplate",
+    "NewTypeName": "NSImage.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSImageLoadStatus",
+    "OldPrintedName": "NSImageLoadStatus",
+    "OldTypeName": "",
+    "NewPrintedName": "LoadStatus",
+    "NewTypeName": "NSImage"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSImageCacheMode",
+    "OldPrintedName": "NSImageCacheMode",
+    "OldTypeName": "",
+    "NewPrintedName": "CacheMode",
+    "NewTypeName": "NSImage"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSImageResizingMode",
+    "OldPrintedName": "NSImageResizingMode",
+    "OldTypeName": "",
+    "NewPrintedName": "ResizingMode",
+    "NewTypeName": "NSImage"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageRepRegistryDidChangeNotification",
+    "OldPrintedName": "NSImageRepRegistryDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "registryDidChangeNotification",
+    "NewTypeName": "NSImageRep"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageHintCTM",
+    "OldPrintedName": "NSImageHintCTM",
+    "OldTypeName": "",
+    "NewPrintedName": "CTM",
+    "NewTypeName": "NSImageRep.HintKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageHintInterpolation",
+    "OldPrintedName": "NSImageHintInterpolation",
+    "OldTypeName": "",
+    "NewPrintedName": "interpolation",
+    "NewTypeName": "NSImageRep.HintKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSImageHintUserInterfaceLayoutDirection",
+    "OldPrintedName": "NSImageHintUserInterfaceLayoutDirection",
+    "OldTypeName": "",
+    "NewPrintedName": "userInterfaceLayoutDirection",
+    "NewTypeName": "NSImageRep.HintKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSImageFrameStyle",
+    "OldPrintedName": "NSImageFrameStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "FrameStyle",
+    "NewTypeName": "NSImageView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutRelation",
+    "OldPrintedName": "NSLayoutRelation",
+    "OldTypeName": "",
+    "NewPrintedName": "Relation",
+    "NewTypeName": "NSLayoutConstraint"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutAttribute",
+    "OldPrintedName": "NSLayoutAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "Attribute",
+    "NewTypeName": "NSLayoutConstraint"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions",
+    "OldPrintedName": "NSLayoutFormatOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "FormatOptions",
+    "NewTypeName": "NSLayoutConstraint"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatAlignAllLeft",
+    "OldPrintedName": "alignAllLeft",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "alignAllLeft",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatAlignAllRight",
+    "OldPrintedName": "alignAllRight",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "alignAllRight",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatAlignAllTop",
+    "OldPrintedName": "alignAllTop",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "alignAllTop",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatAlignAllBottom",
+    "OldPrintedName": "alignAllBottom",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "alignAllBottom",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatAlignAllLeading",
+    "OldPrintedName": "alignAllLeading",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "alignAllLeading",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatAlignAllTrailing",
+    "OldPrintedName": "alignAllTrailing",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "alignAllTrailing",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatAlignAllCenterX",
+    "OldPrintedName": "alignAllCenterX",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "alignAllCenterX",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatAlignAllCenterY",
+    "OldPrintedName": "alignAllCenterY",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "alignAllCenterY",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatAlignAllLastBaseline",
+    "OldPrintedName": "alignAllLastBaseline",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "alignAllLastBaseline",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatAlignAllFirstBaseline",
+    "OldPrintedName": "alignAllFirstBaseline",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "alignAllFirstBaseline",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatAlignmentMask",
+    "OldPrintedName": "alignmentMask",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "alignmentMask",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatDirectionLeadingToTrailing",
+    "OldPrintedName": "directionLeadingToTrailing",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "directionLeadingToTrailing",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatDirectionLeftToRight",
+    "OldPrintedName": "directionLeftToRight",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "directionLeftToRight",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatDirectionRightToLeft",
+    "OldPrintedName": "directionRightToLeft",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "directionRightToLeft",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutFormatOptions@NSLayoutFormatDirectionMask",
+    "OldPrintedName": "directionMask",
+    "OldTypeName": "NSLayoutFormatOptions",
+    "NewPrintedName": "directionMask",
+    "NewTypeName": "NSLayoutConstraint.FormatOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLayoutConstraintOrientation",
+    "OldPrintedName": "NSLayoutConstraintOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "Orientation",
+    "NewTypeName": "NSLayoutConstraint"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSLayoutPriority",
+    "OldPrintedName": "NSLayoutPriority",
+    "OldTypeName": "",
+    "NewPrintedName": "Priority",
+    "NewTypeName": "NSLayoutConstraint"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLayoutPriorityRequired",
+    "OldPrintedName": "NSLayoutPriorityRequired",
+    "OldTypeName": "",
+    "NewPrintedName": "required",
+    "NewTypeName": "NSLayoutConstraint.Priority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLayoutPriorityDefaultHigh",
+    "OldPrintedName": "NSLayoutPriorityDefaultHigh",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultHigh",
+    "NewTypeName": "NSLayoutConstraint.Priority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLayoutPriorityDragThatCanResizeWindow",
+    "OldPrintedName": "NSLayoutPriorityDragThatCanResizeWindow",
+    "OldTypeName": "",
+    "NewPrintedName": "dragThatCanResizeWindow",
+    "NewTypeName": "NSLayoutConstraint.Priority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLayoutPriorityWindowSizeStayPut",
+    "OldPrintedName": "NSLayoutPriorityWindowSizeStayPut",
+    "OldTypeName": "",
+    "NewPrintedName": "windowSizeStayPut",
+    "NewTypeName": "NSLayoutConstraint.Priority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLayoutPriorityDragThatCannotResizeWindow",
+    "OldPrintedName": "NSLayoutPriorityDragThatCannotResizeWindow",
+    "OldTypeName": "",
+    "NewPrintedName": "dragThatCannotResizeWindow",
+    "NewTypeName": "NSLayoutConstraint.Priority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLayoutPriorityDefaultLow",
+    "OldPrintedName": "NSLayoutPriorityDefaultLow",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultLow",
+    "NewTypeName": "NSLayoutConstraint.Priority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLayoutPriorityFittingSizeCompression",
+    "OldPrintedName": "NSLayoutPriorityFittingSizeCompression",
+    "OldTypeName": "",
+    "NewPrintedName": "fittingSizeCompression",
+    "NewTypeName": "NSLayoutConstraint.Priority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextLayoutOrientation",
+    "OldPrintedName": "NSTextLayoutOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "TextLayoutOrientation",
+    "NewTypeName": "NSLayoutManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGlyphProperty",
+    "OldPrintedName": "NSGlyphProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "GlyphProperty",
+    "NewTypeName": "NSLayoutManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSControlCharacterAction",
+    "OldPrintedName": "NSControlCharacterAction",
+    "OldTypeName": "",
+    "NewPrintedName": "ControlCharacterAction",
+    "NewTypeName": "NSLayoutManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTypesetterBehavior",
+    "OldPrintedName": "NSTypesetterBehavior",
+    "OldTypeName": "",
+    "NewPrintedName": "TypesetterBehavior",
+    "NewTypeName": "NSLayoutManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLevelIndicatorStyle",
+    "OldPrintedName": "NSLevelIndicatorStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "Style",
+    "NewTypeName": "NSLevelIndicator"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSMatrixMode",
+    "OldPrintedName": "NSMatrixMode",
+    "OldTypeName": "",
+    "NewPrintedName": "Mode",
+    "NewTypeName": "NSMatrix"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSMediaLibrary",
+    "OldPrintedName": "NSMediaLibrary",
+    "OldTypeName": "",
+    "NewPrintedName": "Library",
+    "NewTypeName": "NSMediaLibraryBrowserController"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSMediaLibrary@NSMediaLibraryAudio",
+    "OldPrintedName": "audio",
+    "OldTypeName": "NSMediaLibrary",
+    "NewPrintedName": "audio",
+    "NewTypeName": "NSMediaLibraryBrowserController.Library"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSMediaLibrary@NSMediaLibraryImage",
+    "OldPrintedName": "image",
+    "OldTypeName": "NSMediaLibrary",
+    "NewPrintedName": "image",
+    "NewTypeName": "NSMediaLibraryBrowserController.Library"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSMediaLibrary@NSMediaLibraryMovie",
+    "OldPrintedName": "movie",
+    "OldTypeName": "NSMediaLibrary",
+    "NewPrintedName": "movie",
+    "NewTypeName": "NSMediaLibraryBrowserController.Library"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSMenuProperties",
+    "OldPrintedName": "NSMenuProperties",
+    "OldTypeName": "",
+    "NewPrintedName": "Properties",
+    "NewTypeName": "NSMenu"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSMenuProperties@NSMenuPropertyItemTitle",
+    "OldPrintedName": "propertyItemTitle",
+    "OldTypeName": "NSMenuProperties",
+    "NewPrintedName": "propertyItemTitle",
+    "NewTypeName": "NSMenu.Properties"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSMenuProperties@NSMenuPropertyItemAttributedTitle",
+    "OldPrintedName": "propertyItemAttributedTitle",
+    "OldTypeName": "NSMenuProperties",
+    "NewPrintedName": "propertyItemAttributedTitle",
+    "NewTypeName": "NSMenu.Properties"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSMenuProperties@NSMenuPropertyItemKeyEquivalent",
+    "OldPrintedName": "propertyItemKeyEquivalent",
+    "OldTypeName": "NSMenuProperties",
+    "NewPrintedName": "propertyItemKeyEquivalent",
+    "NewTypeName": "NSMenu.Properties"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSMenuProperties@NSMenuPropertyItemImage",
+    "OldPrintedName": "propertyItemImage",
+    "OldTypeName": "NSMenuProperties",
+    "NewPrintedName": "propertyItemImage",
+    "NewTypeName": "NSMenu.Properties"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSMenuProperties@NSMenuPropertyItemEnabled",
+    "OldPrintedName": "propertyItemEnabled",
+    "OldTypeName": "NSMenuProperties",
+    "NewPrintedName": "propertyItemEnabled",
+    "NewTypeName": "NSMenu.Properties"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSMenuProperties@NSMenuPropertyItemAccessibilityDescription",
+    "OldPrintedName": "propertyItemAccessibilityDescription",
+    "OldTypeName": "NSMenuProperties",
+    "NewPrintedName": "propertyItemAccessibilityDescription",
+    "NewTypeName": "NSMenu.Properties"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMenuWillSendActionNotification",
+    "OldPrintedName": "NSMenuWillSendAction",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willSendActionNotification",
+    "NewTypeName": "NSMenu"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMenuDidSendActionNotification",
+    "OldPrintedName": "NSMenuDidSendAction",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didSendActionNotification",
+    "NewTypeName": "NSMenu"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMenuDidAddItemNotification",
+    "OldPrintedName": "NSMenuDidAddItem",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didAddItemNotification",
+    "NewTypeName": "NSMenu"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMenuDidRemoveItemNotification",
+    "OldPrintedName": "NSMenuDidRemoveItem",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didRemoveItemNotification",
+    "NewTypeName": "NSMenu"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMenuDidChangeItemNotification",
+    "OldPrintedName": "NSMenuDidChangeItem",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeItemNotification",
+    "NewTypeName": "NSMenu"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMenuDidBeginTrackingNotification",
+    "OldPrintedName": "NSMenuDidBeginTracking",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didBeginTrackingNotification",
+    "NewTypeName": "NSMenu"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSMenuDidEndTrackingNotification",
+    "OldPrintedName": "NSMenuDidEndTracking",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didEndTrackingNotification",
+    "NewTypeName": "NSMenu"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSOpenGLContextParameter",
+    "OldPrintedName": "NSOpenGLContextParameter",
+    "OldTypeName": "",
+    "NewPrintedName": "Parameter",
+    "NewTypeName": "NSOpenGLContext"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSOpenGLContextAuxiliary",
+    "OldPrintedName": "NSOpenGLContextAuxiliary",
+    "OldTypeName": "",
+    "NewPrintedName": "Auxiliary",
+    "NewTypeName": "NSOpenGLContext"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOutlineViewDisclosureButtonKey",
+    "OldPrintedName": "NSOutlineViewDisclosureButtonKey",
+    "OldTypeName": "",
+    "NewPrintedName": "disclosureButtonIdentifier",
+    "NewTypeName": "NSOutlineView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOutlineViewShowHideButtonKey",
+    "OldPrintedName": "NSOutlineViewShowHideButtonKey",
+    "OldTypeName": "",
+    "NewPrintedName": "showHideButtonIdentifier",
+    "NewTypeName": "NSOutlineView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOutlineViewSelectionDidChangeNotification",
+    "OldPrintedName": "NSOutlineViewSelectionDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "selectionDidChangeNotification",
+    "NewTypeName": "NSOutlineView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOutlineViewColumnDidMoveNotification",
+    "OldPrintedName": "NSOutlineViewColumnDidMove",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "columnDidMoveNotification",
+    "NewTypeName": "NSOutlineView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOutlineViewColumnDidResizeNotification",
+    "OldPrintedName": "NSOutlineViewColumnDidResize",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "columnDidResizeNotification",
+    "NewTypeName": "NSOutlineView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOutlineViewSelectionIsChangingNotification",
+    "OldPrintedName": "NSOutlineViewSelectionIsChanging",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "selectionIsChangingNotification",
+    "NewTypeName": "NSOutlineView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOutlineViewItemWillExpandNotification",
+    "OldPrintedName": "NSOutlineViewItemWillExpand",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "itemWillExpandNotification",
+    "NewTypeName": "NSOutlineView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOutlineViewItemDidExpandNotification",
+    "OldPrintedName": "NSOutlineViewItemDidExpand",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "itemDidExpandNotification",
+    "NewTypeName": "NSOutlineView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOutlineViewItemWillCollapseNotification",
+    "OldPrintedName": "NSOutlineViewItemWillCollapse",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "itemWillCollapseNotification",
+    "NewTypeName": "NSOutlineView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSOutlineViewItemDidCollapseNotification",
+    "OldPrintedName": "NSOutlineViewItemDidCollapse",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "itemDidCollapseNotification",
+    "NewTypeName": "NSOutlineView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPDFPanelOptions",
+    "OldPrintedName": "NSPDFPanelOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "Options",
+    "NewTypeName": "NSPDFPanel"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPDFPanelOptions@NSPDFPanelShowsPaperSize",
+    "OldPrintedName": "showsPaperSize",
+    "OldTypeName": "NSPDFPanelOptions",
+    "NewPrintedName": "showsPaperSize",
+    "NewTypeName": "NSPDFPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPDFPanelOptions@NSPDFPanelShowsOrientation",
+    "OldPrintedName": "showsOrientation",
+    "OldTypeName": "NSPDFPanelOptions",
+    "NewPrintedName": "showsOrientation",
+    "NewTypeName": "NSPDFPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPDFPanelOptions@NSPDFPanelRequestsParentDirectory",
+    "OldPrintedName": "requestsParentDirectory",
+    "OldTypeName": "NSPDFPanelOptions",
+    "NewPrintedName": "requestsParentDirectory",
+    "NewTypeName": "NSPDFPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPageControllerTransitionStyle",
+    "OldPrintedName": "NSPageControllerTransitionStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "TransitionStyle",
+    "NewTypeName": "NSPageController"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextTabType",
+    "OldPrintedName": "NSTextTabType",
+    "OldTypeName": "",
+    "NewPrintedName": "TextTabType",
+    "NewTypeName": "NSParagraphStyle"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSLineBreakMode",
+    "OldPrintedName": "NSLineBreakMode",
+    "OldTypeName": "",
+    "NewPrintedName": "LineBreakMode",
+    "NewTypeName": "NSParagraphStyle"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypeString",
+    "OldPrintedName": "NSPasteboardTypeString",
+    "OldTypeName": "",
+    "NewPrintedName": "string",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypePDF",
+    "OldPrintedName": "NSPasteboardTypePDF",
+    "OldTypeName": "",
+    "NewPrintedName": "pdf",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypeTIFF",
+    "OldPrintedName": "NSPasteboardTypeTIFF",
+    "OldTypeName": "",
+    "NewPrintedName": "tiff",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypePNG",
+    "OldPrintedName": "NSPasteboardTypePNG",
+    "OldTypeName": "",
+    "NewPrintedName": "png",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypeRTF",
+    "OldPrintedName": "NSPasteboardTypeRTF",
+    "OldTypeName": "",
+    "NewPrintedName": "rtf",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypeRTFD",
+    "OldPrintedName": "NSPasteboardTypeRTFD",
+    "OldTypeName": "",
+    "NewPrintedName": "rtfd",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypeHTML",
+    "OldPrintedName": "NSPasteboardTypeHTML",
+    "OldTypeName": "",
+    "NewPrintedName": "html",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypeTabularText",
+    "OldPrintedName": "NSPasteboardTypeTabularText",
+    "OldTypeName": "",
+    "NewPrintedName": "tabularText",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypeFont",
+    "OldPrintedName": "NSPasteboardTypeFont",
+    "OldTypeName": "",
+    "NewPrintedName": "font",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypeRuler",
+    "OldPrintedName": "NSPasteboardTypeRuler",
+    "OldTypeName": "",
+    "NewPrintedName": "ruler",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypeColor",
+    "OldPrintedName": "NSPasteboardTypeColor",
+    "OldTypeName": "",
+    "NewPrintedName": "color",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypeSound",
+    "OldPrintedName": "NSPasteboardTypeSound",
+    "OldTypeName": "",
+    "NewPrintedName": "sound",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypeMultipleTextSelection",
+    "OldPrintedName": "NSPasteboardTypeMultipleTextSelection",
+    "OldTypeName": "",
+    "NewPrintedName": "multipleTextSelection",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardTypeTextFinderOptions",
+    "OldPrintedName": "NSPasteboardTypeTextFinderOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "textFinderOptions",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPostScriptPboardType",
+    "OldPrintedName": "NSPostScriptPboardType",
+    "OldTypeName": "",
+    "NewPrintedName": "postScript",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVCardPboardType",
+    "OldPrintedName": "NSVCardPboardType",
+    "OldTypeName": "",
+    "NewPrintedName": "vCard",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSInkTextPboardType",
+    "OldPrintedName": "NSInkTextPboardType",
+    "OldTypeName": "",
+    "NewPrintedName": "inkText",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFilesPromisePboardType",
+    "OldPrintedName": "NSFilesPromisePboardType",
+    "OldTypeName": "",
+    "NewPrintedName": "filePromise",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFileContentsPboardType",
+    "OldPrintedName": "NSFileContentsPboardType",
+    "OldTypeName": "",
+    "NewPrintedName": "fileContents",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSCreateFilenamePboardType",
+    "OldPrintedName": "NSCreateFilenamePboardType(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "fileNameType(forPathExtension:)",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSCreateFileContentsPboardType",
+    "OldPrintedName": "NSCreateFileContentsPboardType(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "fileContentsType(forPathExtension:)",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSGetFileType",
+    "OldPrintedName": "NSGetFileType(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "representedPathExtension",
+    "NewTypeName": "NSPasteboard.PasteboardType",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSGetFileTypes",
+    "OldPrintedName": "NSGetFileTypes(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "representedPathExtensions(from:)",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFindPanelSearchOptionsPboardType",
+    "OldPrintedName": "NSFindPanelSearchOptionsPboardType",
+    "OldTypeName": "",
+    "NewPrintedName": "findPanelSearchOptions",
+    "NewTypeName": "NSPasteboard.PasteboardType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFindPanelCaseInsensitiveSearch",
+    "OldPrintedName": "NSFindPanelCaseInsensitiveSearch",
+    "OldTypeName": "",
+    "NewPrintedName": "findPanelCaseInsensitiveSearch",
+    "NewTypeName": "NSPasteboard.PasteboardType.FindPanelSearchOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFindPanelSubstringMatch",
+    "OldPrintedName": "NSFindPanelSubstringMatch",
+    "OldTypeName": "",
+    "NewPrintedName": "findPanelSubstringMatch",
+    "NewTypeName": "NSPasteboard.PasteboardType.FindPanelSearchOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextFinderCaseInsensitiveKey",
+    "OldPrintedName": "NSTextFinderCaseInsensitiveKey",
+    "OldTypeName": "",
+    "NewPrintedName": "textFinderCaseInsensitiveKey",
+    "NewTypeName": "NSPasteboard.PasteboardType.TextFinderOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextFinderMatchingTypeKey",
+    "OldPrintedName": "NSTextFinderMatchingTypeKey",
+    "OldTypeName": "",
+    "NewPrintedName": "textFinderMatchingTypeKey",
+    "NewTypeName": "NSPasteboard.PasteboardType.TextFinderOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSGeneralPboard",
+    "OldPrintedName": "NSGeneralPboard",
+    "OldTypeName": "",
+    "NewPrintedName": "generalPboard",
+    "NewTypeName": "NSPasteboard.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontPboard",
+    "OldPrintedName": "NSFontPboard",
+    "OldTypeName": "",
+    "NewPrintedName": "fontPboard",
+    "NewTypeName": "NSPasteboard.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRulerPboard",
+    "OldPrintedName": "NSRulerPboard",
+    "OldTypeName": "",
+    "NewPrintedName": "rulerPboard",
+    "NewTypeName": "NSPasteboard.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFindPboard",
+    "OldPrintedName": "NSFindPboard",
+    "OldTypeName": "",
+    "NewPrintedName": "findPboard",
+    "NewTypeName": "NSPasteboard.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDragPboard",
+    "OldPrintedName": "NSDragPboard",
+    "OldTypeName": "",
+    "NewPrintedName": "dragPboard",
+    "NewTypeName": "NSPasteboard.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPasteboardContentsOptions",
+    "OldPrintedName": "NSPasteboardContentsOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "ContentsOptions",
+    "NewTypeName": "NSPasteboard"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPasteboardContentsOptions@NSPasteboardContentsCurrentHostOnly",
+    "OldPrintedName": "currentHostOnly",
+    "OldTypeName": "NSPasteboardContentsOptions",
+    "NewPrintedName": "currentHostOnly",
+    "NewTypeName": "NSPasteboard.ContentsOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardURLReadingFileURLsOnlyKey",
+    "OldPrintedName": "NSPasteboardURLReadingFileURLsOnlyKey",
+    "OldTypeName": "",
+    "NewPrintedName": "urlReadingFileURLsOnly",
+    "NewTypeName": "NSPasteboard.ReadingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPasteboardURLReadingContentsConformToTypesKey",
+    "OldPrintedName": "NSPasteboardURLReadingContentsConformToTypesKey",
+    "OldTypeName": "",
+    "NewPrintedName": "urlReadingContentsConformToTypes",
+    "NewTypeName": "NSPasteboard.ReadingOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPasteboardWritingOptions",
+    "OldPrintedName": "NSPasteboardWritingOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "WritingOptions",
+    "NewTypeName": "NSPasteboard"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPasteboardWritingOptions@NSPasteboardWritingPromised",
+    "OldPrintedName": "promised",
+    "OldTypeName": "NSPasteboardWritingOptions",
+    "NewPrintedName": "promised",
+    "NewTypeName": "NSPasteboard.WritingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPasteboardReadingOptions",
+    "OldPrintedName": "NSPasteboardReadingOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "ReadingOptions",
+    "NewTypeName": "NSPasteboard"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPasteboardReadingOptions@NSPasteboardReadingAsData",
+    "OldPrintedName": "asData",
+    "OldTypeName": "NSPasteboardReadingOptions",
+    "NewPrintedName": "asData",
+    "NewTypeName": "NSPasteboard.ReadingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPasteboardReadingOptions@NSPasteboardReadingAsString",
+    "OldPrintedName": "asString",
+    "OldTypeName": "NSPasteboardReadingOptions",
+    "NewPrintedName": "asString",
+    "NewTypeName": "NSPasteboard.ReadingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPasteboardReadingOptions@NSPasteboardReadingAsPropertyList",
+    "OldPrintedName": "asPropertyList",
+    "OldTypeName": "NSPasteboardReadingOptions",
+    "NewPrintedName": "asPropertyList",
+    "NewTypeName": "NSPasteboard.ReadingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPasteboardReadingOptions@NSPasteboardReadingAsKeyedArchive",
+    "OldPrintedName": "asKeyedArchive",
+    "OldTypeName": "NSPasteboardReadingOptions",
+    "NewPrintedName": "asKeyedArchive",
+    "NewTypeName": "NSPasteboard.ReadingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPathStyle",
+    "OldPrintedName": "NSPathStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "Style",
+    "NewTypeName": "NSPathControl"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPopUpButtonWillPopUpNotification",
+    "OldPrintedName": "NSPopUpButtonWillPopUp",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willPopUpNotification",
+    "NewTypeName": "NSPopUpButton"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPopUpArrowPosition",
+    "OldPrintedName": "NSPopUpArrowPosition",
+    "OldTypeName": "",
+    "NewPrintedName": "ArrowPosition",
+    "NewTypeName": "NSPopUpButton"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPopUpButtonCellWillPopUpNotification",
+    "OldPrintedName": "NSPopUpButtonCellWillPopUp",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willPopUpNotification",
+    "NewTypeName": "NSPopUpButtonCell"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPopoverCloseReasonKey",
+    "OldPrintedName": "NSPopoverCloseReasonKey",
+    "OldTypeName": "",
+    "NewPrintedName": "closeReasonUserInfoKey",
+    "NewTypeName": "NSPopover"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPopoverCloseReasonStandard",
+    "OldPrintedName": "NSPopoverCloseReasonStandard",
+    "OldTypeName": "",
+    "NewPrintedName": "standard",
+    "NewTypeName": "NSPopover.CloseReason"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPopoverCloseReasonDetachToWindow",
+    "OldPrintedName": "NSPopoverCloseReasonDetachToWindow",
+    "OldTypeName": "",
+    "NewPrintedName": "detachToWindow",
+    "NewTypeName": "NSPopover.CloseReason"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPopoverWillShowNotification",
+    "OldPrintedName": "NSPopoverWillShow",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willShowNotification",
+    "NewTypeName": "NSPopover"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPopoverDidShowNotification",
+    "OldPrintedName": "NSPopoverDidShow",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didShowNotification",
+    "NewTypeName": "NSPopover"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPopoverWillCloseNotification",
+    "OldPrintedName": "NSPopoverWillClose",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willCloseNotification",
+    "NewTypeName": "NSPopover"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPopoverDidCloseNotification",
+    "OldPrintedName": "NSPopoverDidClose",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didCloseNotification",
+    "NewTypeName": "NSPopover"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPopoverAppearance",
+    "OldPrintedName": "NSPopoverAppearance",
+    "OldTypeName": "",
+    "NewPrintedName": "Appearance",
+    "NewTypeName": "NSPopover"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPopoverBehavior",
+    "OldPrintedName": "NSPopoverBehavior",
+    "OldTypeName": "",
+    "NewPrintedName": "Behavior",
+    "NewTypeName": "NSPopover"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintingOrientation",
+    "OldPrintedName": "NSPrintingOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "Orientation",
+    "NewTypeName": "NSPrintInfo"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPaperOrientation",
+    "OldPrintedName": "NSPaperOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "PaperOrientation",
+    "NewTypeName": "NSPrintInfo"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintingPaginationMode",
+    "OldPrintedName": "NSPrintingPaginationMode",
+    "OldTypeName": "",
+    "NewPrintedName": "PaginationMode",
+    "NewTypeName": "NSPrintInfo"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintPaperName",
+    "OldPrintedName": "NSPrintPaperName",
+    "OldTypeName": "",
+    "NewPrintedName": "paperName",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintPaperSize",
+    "OldPrintedName": "NSPrintPaperSize",
+    "OldTypeName": "",
+    "NewPrintedName": "paperSize",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintOrientation",
+    "OldPrintedName": "NSPrintOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "orientation",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintScalingFactor",
+    "OldPrintedName": "NSPrintScalingFactor",
+    "OldTypeName": "",
+    "NewPrintedName": "scalingFactor",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintLeftMargin",
+    "OldPrintedName": "NSPrintLeftMargin",
+    "OldTypeName": "",
+    "NewPrintedName": "leftMargin",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintRightMargin",
+    "OldPrintedName": "NSPrintRightMargin",
+    "OldTypeName": "",
+    "NewPrintedName": "rightMargin",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintTopMargin",
+    "OldPrintedName": "NSPrintTopMargin",
+    "OldTypeName": "",
+    "NewPrintedName": "topMargin",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintBottomMargin",
+    "OldPrintedName": "NSPrintBottomMargin",
+    "OldTypeName": "",
+    "NewPrintedName": "bottomMargin",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintHorizontallyCentered",
+    "OldPrintedName": "NSPrintHorizontallyCentered",
+    "OldTypeName": "",
+    "NewPrintedName": "horizontallyCentered",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintVerticallyCentered",
+    "OldPrintedName": "NSPrintVerticallyCentered",
+    "OldTypeName": "",
+    "NewPrintedName": "verticallyCentered",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintHorizontalPagination",
+    "OldPrintedName": "NSPrintHorizontalPagination",
+    "OldTypeName": "",
+    "NewPrintedName": "horizontalPagination",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintVerticalPagination",
+    "OldPrintedName": "NSPrintVerticalPagination",
+    "OldTypeName": "",
+    "NewPrintedName": "verticalPagination",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintPrinter",
+    "OldPrintedName": "NSPrintPrinter",
+    "OldTypeName": "",
+    "NewPrintedName": "printer",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintCopies",
+    "OldPrintedName": "NSPrintCopies",
+    "OldTypeName": "",
+    "NewPrintedName": "copies",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintAllPages",
+    "OldPrintedName": "NSPrintAllPages",
+    "OldTypeName": "",
+    "NewPrintedName": "allPages",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintFirstPage",
+    "OldPrintedName": "NSPrintFirstPage",
+    "OldTypeName": "",
+    "NewPrintedName": "firstPage",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintLastPage",
+    "OldPrintedName": "NSPrintLastPage",
+    "OldTypeName": "",
+    "NewPrintedName": "lastPage",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintMustCollate",
+    "OldPrintedName": "NSPrintMustCollate",
+    "OldTypeName": "",
+    "NewPrintedName": "mustCollate",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintReversePageOrder",
+    "OldPrintedName": "NSPrintReversePageOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "reversePageOrder",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintJobDisposition",
+    "OldPrintedName": "NSPrintJobDisposition",
+    "OldTypeName": "",
+    "NewPrintedName": "jobDisposition",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintPagesAcross",
+    "OldPrintedName": "NSPrintPagesAcross",
+    "OldTypeName": "",
+    "NewPrintedName": "pagesAcross",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintPagesDown",
+    "OldPrintedName": "NSPrintPagesDown",
+    "OldTypeName": "",
+    "NewPrintedName": "pagesDown",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintTime",
+    "OldPrintedName": "NSPrintTime",
+    "OldTypeName": "",
+    "NewPrintedName": "time",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintDetailedErrorReporting",
+    "OldPrintedName": "NSPrintDetailedErrorReporting",
+    "OldTypeName": "",
+    "NewPrintedName": "detailedErrorReporting",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintFaxNumber",
+    "OldPrintedName": "NSPrintFaxNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "faxNumber",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintPrinterName",
+    "OldPrintedName": "NSPrintPrinterName",
+    "OldTypeName": "",
+    "NewPrintedName": "printerName",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintSelectionOnly",
+    "OldPrintedName": "NSPrintSelectionOnly",
+    "OldTypeName": "",
+    "NewPrintedName": "selectionOnly",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintJobSavingURL",
+    "OldPrintedName": "NSPrintJobSavingURL",
+    "OldTypeName": "",
+    "NewPrintedName": "jobSavingURL",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintJobSavingFileNameExtensionHidden",
+    "OldPrintedName": "NSPrintJobSavingFileNameExtensionHidden",
+    "OldTypeName": "",
+    "NewPrintedName": "jobSavingFileNameExtensionHidden",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintHeaderAndFooter",
+    "OldPrintedName": "NSPrintHeaderAndFooter",
+    "OldTypeName": "",
+    "NewPrintedName": "headerAndFooter",
+    "NewTypeName": "NSPrintInfo.AttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintSpoolJob",
+    "OldPrintedName": "NSPrintSpoolJob",
+    "OldTypeName": "",
+    "NewPrintedName": "spool",
+    "NewTypeName": "NSPrintInfo.JobDisposition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintPreviewJob",
+    "OldPrintedName": "NSPrintPreviewJob",
+    "OldTypeName": "",
+    "NewPrintedName": "preview",
+    "NewTypeName": "NSPrintInfo.JobDisposition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintSaveJob",
+    "OldPrintedName": "NSPrintSaveJob",
+    "OldTypeName": "",
+    "NewPrintedName": "save",
+    "NewTypeName": "NSPrintInfo.JobDisposition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintCancelJob",
+    "OldPrintedName": "NSPrintCancelJob",
+    "OldTypeName": "",
+    "NewPrintedName": "cancel",
+    "NewTypeName": "NSPrintInfo.JobDisposition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintingPageOrder",
+    "OldPrintedName": "NSPrintingPageOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "PageOrder",
+    "NewTypeName": "NSPrintOperation"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintRenderingQuality",
+    "OldPrintedName": "NSPrintRenderingQuality",
+    "OldTypeName": "",
+    "NewPrintedName": "RenderingQuality",
+    "NewTypeName": "NSPrintOperation"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintPanelOptions",
+    "OldPrintedName": "NSPrintPanelOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "Options",
+    "NewTypeName": "NSPrintPanel"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintPanelOptions@NSPrintPanelShowsCopies",
+    "OldPrintedName": "showsCopies",
+    "OldTypeName": "NSPrintPanelOptions",
+    "NewPrintedName": "showsCopies",
+    "NewTypeName": "NSPrintPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintPanelOptions@NSPrintPanelShowsPageRange",
+    "OldPrintedName": "showsPageRange",
+    "OldTypeName": "NSPrintPanelOptions",
+    "NewPrintedName": "showsPageRange",
+    "NewTypeName": "NSPrintPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintPanelOptions@NSPrintPanelShowsPaperSize",
+    "OldPrintedName": "showsPaperSize",
+    "OldTypeName": "NSPrintPanelOptions",
+    "NewPrintedName": "showsPaperSize",
+    "NewTypeName": "NSPrintPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintPanelOptions@NSPrintPanelShowsOrientation",
+    "OldPrintedName": "showsOrientation",
+    "OldTypeName": "NSPrintPanelOptions",
+    "NewPrintedName": "showsOrientation",
+    "NewTypeName": "NSPrintPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintPanelOptions@NSPrintPanelShowsScaling",
+    "OldPrintedName": "showsScaling",
+    "OldTypeName": "NSPrintPanelOptions",
+    "NewPrintedName": "showsScaling",
+    "NewTypeName": "NSPrintPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintPanelOptions@NSPrintPanelShowsPrintSelection",
+    "OldPrintedName": "showsPrintSelection",
+    "OldTypeName": "NSPrintPanelOptions",
+    "NewPrintedName": "showsPrintSelection",
+    "NewTypeName": "NSPrintPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintPanelOptions@NSPrintPanelShowsPageSetupAccessory",
+    "OldPrintedName": "showsPageSetupAccessory",
+    "OldTypeName": "NSPrintPanelOptions",
+    "NewPrintedName": "showsPageSetupAccessory",
+    "NewTypeName": "NSPrintPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrintPanelOptions@NSPrintPanelShowsPreview",
+    "OldPrintedName": "showsPreview",
+    "OldTypeName": "NSPrintPanelOptions",
+    "NewPrintedName": "showsPreview",
+    "NewTypeName": "NSPrintPanel.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintPhotoJobStyleHint",
+    "OldPrintedName": "NSPrintPhotoJobStyleHint",
+    "OldTypeName": "",
+    "NewPrintedName": "photo",
+    "NewTypeName": "NSPrintPanel.JobStyleHint"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintAllPresetsJobStyleHint",
+    "OldPrintedName": "NSPrintAllPresetsJobStyleHint",
+    "OldTypeName": "",
+    "NewPrintedName": "allPresets",
+    "NewTypeName": "NSPrintPanel.JobStyleHint"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintNoPresetsJobStyleHint",
+    "OldPrintedName": "NSPrintNoPresetsJobStyleHint",
+    "OldTypeName": "",
+    "NewPrintedName": "noPresets",
+    "NewTypeName": "NSPrintPanel.JobStyleHint"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintPanelAccessorySummaryItemNameKey",
+    "OldPrintedName": "NSPrintPanelAccessorySummaryItemNameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "itemName",
+    "NewTypeName": "NSPrintPanel.AccessorySummaryKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPrintPanelAccessorySummaryItemDescriptionKey",
+    "OldPrintedName": "NSPrintPanelAccessorySummaryItemDescriptionKey",
+    "OldTypeName": "",
+    "NewPrintedName": "itemDescription",
+    "NewTypeName": "NSPrintPanel.AccessorySummaryKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSPrinterTableStatus",
+    "OldPrintedName": "NSPrinterTableStatus",
+    "OldTypeName": "",
+    "NewPrintedName": "TableStatus",
+    "NewTypeName": "NSPrinter"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSProgressIndicatorStyle",
+    "OldPrintedName": "NSProgressIndicatorStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "Style",
+    "NewTypeName": "NSProgressIndicator"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRuleEditorRowsDidChangeNotification",
+    "OldPrintedName": "NSRuleEditorRowsDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "rowsDidChangeNotification",
+    "NewTypeName": "NSRuleEditor"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRuleEditorPredicateLeftExpression",
+    "OldPrintedName": "NSRuleEditorPredicateLeftExpression",
+    "OldTypeName": "",
+    "NewPrintedName": "leftExpression",
+    "NewTypeName": "NSRuleEditor.PredicatePartKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRuleEditorPredicateRightExpression",
+    "OldPrintedName": "NSRuleEditorPredicateRightExpression",
+    "OldTypeName": "",
+    "NewPrintedName": "rightExpression",
+    "NewTypeName": "NSRuleEditor.PredicatePartKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRuleEditorPredicateComparisonModifier",
+    "OldPrintedName": "NSRuleEditorPredicateComparisonModifier",
+    "OldTypeName": "",
+    "NewPrintedName": "comparisonModifier",
+    "NewTypeName": "NSRuleEditor.PredicatePartKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRuleEditorPredicateOptions",
+    "OldPrintedName": "NSRuleEditorPredicateOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "options",
+    "NewTypeName": "NSRuleEditor.PredicatePartKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRuleEditorPredicateOperatorType",
+    "OldPrintedName": "NSRuleEditorPredicateOperatorType",
+    "OldTypeName": "",
+    "NewPrintedName": "operatorType",
+    "NewTypeName": "NSRuleEditor.PredicatePartKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRuleEditorPredicateCustomSelector",
+    "OldPrintedName": "NSRuleEditorPredicateCustomSelector",
+    "OldTypeName": "",
+    "NewPrintedName": "customSelector",
+    "NewTypeName": "NSRuleEditor.PredicatePartKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRuleEditorPredicateCompoundType",
+    "OldPrintedName": "NSRuleEditorPredicateCompoundType",
+    "OldTypeName": "",
+    "NewPrintedName": "compoundType",
+    "NewTypeName": "NSRuleEditor.PredicatePartKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSRuleEditorNestingMode",
+    "OldPrintedName": "NSRuleEditorNestingMode",
+    "OldTypeName": "",
+    "NewPrintedName": "NestingMode",
+    "NewTypeName": "NSRuleEditor"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSRuleEditorRowType",
+    "OldPrintedName": "NSRuleEditorRowType",
+    "OldTypeName": "",
+    "NewPrintedName": "RowType",
+    "NewTypeName": "NSRuleEditor"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSRulerOrientation",
+    "OldPrintedName": "NSRulerOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "Orientation",
+    "NewTypeName": "NSRulerView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSScreenColorSpaceDidChangeNotification",
+    "OldPrintedName": "NSScreenColorSpaceDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "colorSpaceDidChangeNotification",
+    "NewTypeName": "NSScreen"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSScrollElasticity",
+    "OldPrintedName": "NSScrollElasticity",
+    "OldTypeName": "",
+    "NewPrintedName": "Elasticity",
+    "NewTypeName": "NSScrollView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSScrollViewWillStartLiveMagnifyNotification",
+    "OldPrintedName": "NSScrollViewWillStartLiveMagnify",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willStartLiveMagnifyNotification",
+    "NewTypeName": "NSScrollView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSScrollViewDidEndLiveMagnifyNotification",
+    "OldPrintedName": "NSScrollViewDidEndLiveMagnify",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didEndLiveMagnifyNotification",
+    "NewTypeName": "NSScrollView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSScrollViewWillStartLiveScrollNotification",
+    "OldPrintedName": "NSScrollViewWillStartLiveScroll",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willStartLiveScrollNotification",
+    "NewTypeName": "NSScrollView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSScrollViewDidLiveScrollNotification",
+    "OldPrintedName": "NSScrollViewDidLiveScroll",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didLiveScrollNotification",
+    "NewTypeName": "NSScrollView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSScrollViewDidEndLiveScrollNotification",
+    "OldPrintedName": "NSScrollViewDidEndLiveScroll",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didEndLiveScrollNotification",
+    "NewTypeName": "NSScrollView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSScrollViewFindBarPosition",
+    "OldPrintedName": "NSScrollViewFindBarPosition",
+    "OldTypeName": "",
+    "NewPrintedName": "FindBarPosition",
+    "NewTypeName": "NSScrollView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSScrollArrowPosition",
+    "OldPrintedName": "NSScrollArrowPosition",
+    "OldTypeName": "",
+    "NewPrintedName": "ArrowPosition",
+    "NewTypeName": "NSScroller"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSScrollArrowPosition@NSScrollerArrowsDefaultSetting",
+    "OldPrintedName": "scrollerArrowsDefaultSetting",
+    "OldTypeName": "NSScrollArrowPosition",
+    "NewPrintedName": "scrollerArrowsDefaultSetting",
+    "NewTypeName": "NSScroller.ArrowPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSUsableScrollerParts",
+    "OldPrintedName": "NSUsableScrollerParts",
+    "OldTypeName": "",
+    "NewPrintedName": "UsableParts",
+    "NewTypeName": "NSScroller"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSScrollerPart",
+    "OldPrintedName": "NSScrollerPart",
+    "OldTypeName": "",
+    "NewPrintedName": "Part",
+    "NewTypeName": "NSScroller"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSScrollerArrow",
+    "OldPrintedName": "NSScrollerArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "Arrow",
+    "NewTypeName": "NSScroller"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSScrollerStyle",
+    "OldPrintedName": "NSScrollerStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "Style",
+    "NewTypeName": "NSScroller"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSScrollerKnobStyle",
+    "OldPrintedName": "NSScrollerKnobStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "KnobStyle",
+    "NewTypeName": "NSScroller"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPreferredScrollerStyleDidChangeNotification",
+    "OldPrintedName": "NSPreferredScrollerStyleDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "preferredScrollerStyleDidChangeNotification",
+    "NewTypeName": "NSScroller"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSScrubberMode",
+    "OldPrintedName": "NSScrubberMode",
+    "OldTypeName": "",
+    "NewPrintedName": "Mode",
+    "NewTypeName": "NSScrubber"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSScrubberAlignment",
+    "OldPrintedName": "NSScrubberAlignment",
+    "OldTypeName": "",
+    "NewPrintedName": "Alignment",
+    "NewTypeName": "NSScrubber"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSSegmentSwitchTracking",
+    "OldPrintedName": "NSSegmentSwitchTracking",
+    "OldTypeName": "",
+    "NewPrintedName": "SwitchTracking",
+    "NewTypeName": "NSSegmentedControl"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSSegmentStyle",
+    "OldPrintedName": "NSSegmentStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "Style",
+    "NewTypeName": "NSSegmentedControl"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNamePostOnFacebook",
+    "OldPrintedName": "NSSharingServiceNamePostOnFacebook",
+    "OldTypeName": "",
+    "NewPrintedName": "postOnFacebook",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNamePostOnTwitter",
+    "OldPrintedName": "NSSharingServiceNamePostOnTwitter",
+    "OldTypeName": "",
+    "NewPrintedName": "postOnTwitter",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNamePostOnSinaWeibo",
+    "OldPrintedName": "NSSharingServiceNamePostOnSinaWeibo",
+    "OldTypeName": "",
+    "NewPrintedName": "postOnSinaWeibo",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNamePostOnTencentWeibo",
+    "OldPrintedName": "NSSharingServiceNamePostOnTencentWeibo",
+    "OldTypeName": "",
+    "NewPrintedName": "postOnTencentWeibo",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNamePostOnLinkedIn",
+    "OldPrintedName": "NSSharingServiceNamePostOnLinkedIn",
+    "OldTypeName": "",
+    "NewPrintedName": "postOnLinkedIn",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNameComposeEmail",
+    "OldPrintedName": "NSSharingServiceNameComposeEmail",
+    "OldTypeName": "",
+    "NewPrintedName": "composeEmail",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNameComposeMessage",
+    "OldPrintedName": "NSSharingServiceNameComposeMessage",
+    "OldTypeName": "",
+    "NewPrintedName": "composeMessage",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNameSendViaAirDrop",
+    "OldPrintedName": "NSSharingServiceNameSendViaAirDrop",
+    "OldTypeName": "",
+    "NewPrintedName": "sendViaAirDrop",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNameAddToSafariReadingList",
+    "OldPrintedName": "NSSharingServiceNameAddToSafariReadingList",
+    "OldTypeName": "",
+    "NewPrintedName": "addToSafariReadingList",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNameAddToIPhoto",
+    "OldPrintedName": "NSSharingServiceNameAddToIPhoto",
+    "OldTypeName": "",
+    "NewPrintedName": "addToIPhoto",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNameAddToAperture",
+    "OldPrintedName": "NSSharingServiceNameAddToAperture",
+    "OldTypeName": "",
+    "NewPrintedName": "addToAperture",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNameUseAsTwitterProfileImage",
+    "OldPrintedName": "NSSharingServiceNameUseAsTwitterProfileImage",
+    "OldTypeName": "",
+    "NewPrintedName": "useAsTwitterProfileImage",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNameUseAsFacebookProfileImage",
+    "OldPrintedName": "NSSharingServiceNameUseAsFacebookProfileImage",
+    "OldTypeName": "",
+    "NewPrintedName": "useAsFacebookProfileImage",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNameUseAsLinkedInProfileImage",
+    "OldPrintedName": "NSSharingServiceNameUseAsLinkedInProfileImage",
+    "OldTypeName": "",
+    "NewPrintedName": "useAsLinkedInProfileImage",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNameUseAsDesktopPicture",
+    "OldPrintedName": "NSSharingServiceNameUseAsDesktopPicture",
+    "OldTypeName": "",
+    "NewPrintedName": "useAsDesktopPicture",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNamePostImageOnFlickr",
+    "OldPrintedName": "NSSharingServiceNamePostImageOnFlickr",
+    "OldTypeName": "",
+    "NewPrintedName": "postImageOnFlickr",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNamePostVideoOnVimeo",
+    "OldPrintedName": "NSSharingServiceNamePostVideoOnVimeo",
+    "OldTypeName": "",
+    "NewPrintedName": "postVideoOnVimeo",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNamePostVideoOnYouku",
+    "OldPrintedName": "NSSharingServiceNamePostVideoOnYouku",
+    "OldTypeName": "",
+    "NewPrintedName": "postVideoOnYouku",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNamePostVideoOnTudou",
+    "OldPrintedName": "NSSharingServiceNamePostVideoOnTudou",
+    "OldTypeName": "",
+    "NewPrintedName": "postVideoOnTudou",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSharingServiceNameCloudSharing",
+    "OldPrintedName": "NSSharingServiceNameCloudSharing",
+    "OldTypeName": "",
+    "NewPrintedName": "cloudSharing",
+    "NewTypeName": "NSSharingService.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSSharingContentScope",
+    "OldPrintedName": "NSSharingContentScope",
+    "OldTypeName": "",
+    "NewPrintedName": "SharingContentScope",
+    "NewTypeName": "NSSharingService"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCloudKitSharingServiceOptions",
+    "OldPrintedName": "NSCloudKitSharingServiceOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "CloudKitOptions",
+    "NewTypeName": "NSSharingService"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCloudKitSharingServiceOptions@NSCloudKitSharingServiceStandard",
+    "OldPrintedName": "standard",
+    "OldTypeName": "NSCloudKitSharingServiceOptions",
+    "NewPrintedName": "standard",
+    "NewTypeName": "NSSharingService.CloudKitOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCloudKitSharingServiceOptions@NSCloudKitSharingServiceAllowPublic",
+    "OldPrintedName": "allowPublic",
+    "OldTypeName": "NSCloudKitSharingServiceOptions",
+    "NewPrintedName": "allowPublic",
+    "NewTypeName": "NSSharingService.CloudKitOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCloudKitSharingServiceOptions@NSCloudKitSharingServiceAllowPrivate",
+    "OldPrintedName": "allowPrivate",
+    "OldTypeName": "NSCloudKitSharingServiceOptions",
+    "NewPrintedName": "allowPrivate",
+    "NewTypeName": "NSSharingService.CloudKitOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCloudKitSharingServiceOptions@NSCloudKitSharingServiceAllowReadOnly",
+    "OldPrintedName": "allowReadOnly",
+    "OldTypeName": "NSCloudKitSharingServiceOptions",
+    "NewPrintedName": "allowReadOnly",
+    "NewTypeName": "NSSharingService.CloudKitOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCloudKitSharingServiceOptions@NSCloudKitSharingServiceAllowReadWrite",
+    "OldPrintedName": "allowReadWrite",
+    "OldTypeName": "NSCloudKitSharingServiceOptions",
+    "NewPrintedName": "allowReadWrite",
+    "NewTypeName": "NSSharingService.CloudKitOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTickMarkPosition",
+    "OldPrintedName": "NSTickMarkPosition",
+    "OldTypeName": "",
+    "NewPrintedName": "TickMarkPosition",
+    "NewTypeName": "NSSlider"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTickMarkPosition@NSTickMarkPositionLeading",
+    "OldPrintedName": "leading",
+    "OldTypeName": "NSTickMarkPosition",
+    "NewPrintedName": "leading",
+    "NewTypeName": "NSSlider.TickMarkPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTickMarkPosition@NSTickMarkPositionTrailing",
+    "OldPrintedName": "trailing",
+    "OldTypeName": "NSTickMarkPosition",
+    "NewPrintedName": "trailing",
+    "NewTypeName": "NSSlider.TickMarkPosition"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSSliderType",
+    "OldPrintedName": "NSSliderType",
+    "OldTypeName": "",
+    "NewPrintedName": "SliderType",
+    "NewTypeName": "NSSlider"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSSliderAccessoryWidth",
+    "OldPrintedName": "NSSliderAccessoryWidth",
+    "OldTypeName": "",
+    "NewPrintedName": "Width",
+    "NewTypeName": "NSSliderAccessory"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSliderAccessoryWidthDefault",
+    "OldPrintedName": "default",
+    "OldTypeName": "NSSliderAccessoryWidth",
+    "NewPrintedName": "default",
+    "NewTypeName": "NSSliderAccessory.Width"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSliderAccessoryWidthWide",
+    "OldPrintedName": "wide",
+    "OldTypeName": "NSSliderAccessoryWidth",
+    "NewPrintedName": "wide",
+    "NewTypeName": "NSSliderAccessory.Width"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVoiceName",
+    "OldPrintedName": "NSVoiceName",
+    "OldTypeName": "",
+    "NewPrintedName": "name",
+    "NewTypeName": "NSSpeechSynthesizer.VoiceAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVoiceIdentifier",
+    "OldPrintedName": "NSVoiceIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier",
+    "NewTypeName": "NSSpeechSynthesizer.VoiceAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVoiceAge",
+    "OldPrintedName": "NSVoiceAge",
+    "OldTypeName": "",
+    "NewPrintedName": "age",
+    "NewTypeName": "NSSpeechSynthesizer.VoiceAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVoiceGender",
+    "OldPrintedName": "NSVoiceGender",
+    "OldTypeName": "",
+    "NewPrintedName": "gender",
+    "NewTypeName": "NSSpeechSynthesizer.VoiceAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVoiceDemoText",
+    "OldPrintedName": "NSVoiceDemoText",
+    "OldTypeName": "",
+    "NewPrintedName": "demoText",
+    "NewTypeName": "NSSpeechSynthesizer.VoiceAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVoiceLocaleIdentifier",
+    "OldPrintedName": "NSVoiceLocaleIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "localeIdentifier",
+    "NewTypeName": "NSSpeechSynthesizer.VoiceAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVoiceSupportedCharacters",
+    "OldPrintedName": "NSVoiceSupportedCharacters",
+    "OldTypeName": "",
+    "NewPrintedName": "supportedCharacters",
+    "NewTypeName": "NSSpeechSynthesizer.VoiceAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVoiceIndividuallySpokenCharacters",
+    "OldPrintedName": "NSVoiceIndividuallySpokenCharacters",
+    "OldTypeName": "",
+    "NewPrintedName": "individuallySpokenCharacters",
+    "NewTypeName": "NSSpeechSynthesizer.VoiceAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechDictionaryLocaleIdentifier",
+    "OldPrintedName": "NSSpeechDictionaryLocaleIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "localeIdentifier",
+    "NewTypeName": "NSSpeechSynthesizer.DictionaryKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechDictionaryModificationDate",
+    "OldPrintedName": "NSSpeechDictionaryModificationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "modificationDate",
+    "NewTypeName": "NSSpeechSynthesizer.DictionaryKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechDictionaryPronunciations",
+    "OldPrintedName": "NSSpeechDictionaryPronunciations",
+    "OldTypeName": "",
+    "NewPrintedName": "pronunciations",
+    "NewTypeName": "NSSpeechSynthesizer.DictionaryKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechDictionaryAbbreviations",
+    "OldPrintedName": "NSSpeechDictionaryAbbreviations",
+    "OldTypeName": "",
+    "NewPrintedName": "abbreviations",
+    "NewTypeName": "NSSpeechSynthesizer.DictionaryKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechDictionaryEntrySpelling",
+    "OldPrintedName": "NSSpeechDictionaryEntrySpelling",
+    "OldTypeName": "",
+    "NewPrintedName": "entrySpelling",
+    "NewTypeName": "NSSpeechSynthesizer.DictionaryKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechDictionaryEntryPhonemes",
+    "OldPrintedName": "NSSpeechDictionaryEntryPhonemes",
+    "OldTypeName": "",
+    "NewPrintedName": "entryPhonemes",
+    "NewTypeName": "NSSpeechSynthesizer.DictionaryKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVoiceGenderNeuter",
+    "OldPrintedName": "NSVoiceGenderNeuter",
+    "OldTypeName": "",
+    "NewPrintedName": "neuter",
+    "NewTypeName": "NSSpeechSynthesizer.VoiceGender"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVoiceGenderMale",
+    "OldPrintedName": "NSVoiceGenderMale",
+    "OldTypeName": "",
+    "NewPrintedName": "male",
+    "NewTypeName": "NSSpeechSynthesizer.VoiceGender"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVoiceGenderFemale",
+    "OldPrintedName": "NSVoiceGenderFemale",
+    "OldTypeName": "",
+    "NewPrintedName": "female",
+    "NewTypeName": "NSSpeechSynthesizer.VoiceGender"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechStatusProperty",
+    "OldPrintedName": "NSSpeechStatusProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "status",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechErrorsProperty",
+    "OldPrintedName": "NSSpeechErrorsProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "errors",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechInputModeProperty",
+    "OldPrintedName": "NSSpeechInputModeProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "inputMode",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechCharacterModeProperty",
+    "OldPrintedName": "NSSpeechCharacterModeProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "characterMode",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechNumberModeProperty",
+    "OldPrintedName": "NSSpeechNumberModeProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "numberMode",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechRateProperty",
+    "OldPrintedName": "NSSpeechRateProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "rate",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechPitchBaseProperty",
+    "OldPrintedName": "NSSpeechPitchBaseProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "pitchBase",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechPitchModProperty",
+    "OldPrintedName": "NSSpeechPitchModProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "pitchMod",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechVolumeProperty",
+    "OldPrintedName": "NSSpeechVolumeProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "volume",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechSynthesizerInfoProperty",
+    "OldPrintedName": "NSSpeechSynthesizerInfoProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "synthesizerInfo",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechRecentSyncProperty",
+    "OldPrintedName": "NSSpeechRecentSyncProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "recentSync",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechPhonemeSymbolsProperty",
+    "OldPrintedName": "NSSpeechPhonemeSymbolsProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "phonemeSymbols",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechCurrentVoiceProperty",
+    "OldPrintedName": "NSSpeechCurrentVoiceProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "currentVoice",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechCommandDelimiterProperty",
+    "OldPrintedName": "NSSpeechCommandDelimiterProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "commandDelimiter",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechResetProperty",
+    "OldPrintedName": "NSSpeechResetProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "reset",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechOutputToFileURLProperty",
+    "OldPrintedName": "NSSpeechOutputToFileURLProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "outputToFileURL",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechModeText",
+    "OldPrintedName": "NSSpeechModeText",
+    "OldTypeName": "",
+    "NewPrintedName": "text",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.Mode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechModePhoneme",
+    "OldPrintedName": "NSSpeechModePhoneme",
+    "OldTypeName": "",
+    "NewPrintedName": "phoneme",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.Mode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechModeNormal",
+    "OldPrintedName": "NSSpeechModeNormal",
+    "OldTypeName": "",
+    "NewPrintedName": "normal",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.Mode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechModeLiteral",
+    "OldPrintedName": "NSSpeechModeLiteral",
+    "OldTypeName": "",
+    "NewPrintedName": "literal",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.Mode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechStatusOutputBusy",
+    "OldPrintedName": "NSSpeechStatusOutputBusy",
+    "OldTypeName": "",
+    "NewPrintedName": "outputBusy",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.StatusKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechStatusOutputPaused",
+    "OldPrintedName": "NSSpeechStatusOutputPaused",
+    "OldTypeName": "",
+    "NewPrintedName": "outputPaused",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.StatusKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechStatusNumberOfCharactersLeft",
+    "OldPrintedName": "NSSpeechStatusNumberOfCharactersLeft",
+    "OldTypeName": "",
+    "NewPrintedName": "numberOfCharactersLeft",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.StatusKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechStatusPhonemeCode",
+    "OldPrintedName": "NSSpeechStatusPhonemeCode",
+    "OldTypeName": "",
+    "NewPrintedName": "phonemeCode",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.StatusKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechErrorCount",
+    "OldPrintedName": "NSSpeechErrorCount",
+    "OldTypeName": "",
+    "NewPrintedName": "count",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.ErrorKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechErrorOldestCode",
+    "OldPrintedName": "NSSpeechErrorOldestCode",
+    "OldTypeName": "",
+    "NewPrintedName": "oldestCode",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.ErrorKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechErrorOldestCharacterOffset",
+    "OldPrintedName": "NSSpeechErrorOldestCharacterOffset",
+    "OldTypeName": "",
+    "NewPrintedName": "oldestCharacterOffset",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.ErrorKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechErrorNewestCode",
+    "OldPrintedName": "NSSpeechErrorNewestCode",
+    "OldTypeName": "",
+    "NewPrintedName": "newestCode",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.ErrorKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechErrorNewestCharacterOffset",
+    "OldPrintedName": "NSSpeechErrorNewestCharacterOffset",
+    "OldTypeName": "",
+    "NewPrintedName": "newestCharacterOffset",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.ErrorKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechSynthesizerInfoIdentifier",
+    "OldPrintedName": "NSSpeechSynthesizerInfoIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.SynthesizerInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechSynthesizerInfoVersion",
+    "OldPrintedName": "NSSpeechSynthesizerInfoVersion",
+    "OldTypeName": "",
+    "NewPrintedName": "version",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.SynthesizerInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechPhonemeInfoOpcode",
+    "OldPrintedName": "NSSpeechPhonemeInfoOpcode",
+    "OldTypeName": "",
+    "NewPrintedName": "opcode",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.PhonemeInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechPhonemeInfoSymbol",
+    "OldPrintedName": "NSSpeechPhonemeInfoSymbol",
+    "OldTypeName": "",
+    "NewPrintedName": "symbol",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.PhonemeInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechPhonemeInfoExample",
+    "OldPrintedName": "NSSpeechPhonemeInfoExample",
+    "OldTypeName": "",
+    "NewPrintedName": "example",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.PhonemeInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechPhonemeInfoHiliteStart",
+    "OldPrintedName": "NSSpeechPhonemeInfoHiliteStart",
+    "OldTypeName": "",
+    "NewPrintedName": "hiliteStart",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.PhonemeInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechPhonemeInfoHiliteEnd",
+    "OldPrintedName": "NSSpeechPhonemeInfoHiliteEnd",
+    "OldTypeName": "",
+    "NewPrintedName": "hiliteEnd",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.PhonemeInfoKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechCommandPrefix",
+    "OldPrintedName": "NSSpeechCommandPrefix",
+    "OldTypeName": "",
+    "NewPrintedName": "prefix",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.CommandDelimiterKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpeechCommandSuffix",
+    "OldPrintedName": "NSSpeechCommandSuffix",
+    "OldTypeName": "",
+    "NewPrintedName": "suffix",
+    "NewTypeName": "NSSpeechSynthesizer.SpeechPropertyKey.CommandDelimiterKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSSpeechBoundary",
+    "OldPrintedName": "NSSpeechBoundary",
+    "OldTypeName": "",
+    "NewPrintedName": "Boundary",
+    "NewTypeName": "NSSpeechSynthesizer"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCorrectionResponse",
+    "OldPrintedName": "NSCorrectionResponse",
+    "OldTypeName": "",
+    "NewPrintedName": "CorrectionResponse",
+    "NewTypeName": "NSSpellChecker"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSCorrectionIndicatorType",
+    "OldPrintedName": "NSCorrectionIndicatorType",
+    "OldTypeName": "",
+    "NewPrintedName": "CorrectionIndicatorType",
+    "NewTypeName": "NSSpellChecker"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpellCheckerDidChangeAutomaticSpellingCorrectionNotification",
+    "OldPrintedName": "NSSpellCheckerDidChangeAutomaticSpellingCorrection",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeAutomaticSpellingCorrectionNotification",
+    "NewTypeName": "NSSpellChecker"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpellCheckerDidChangeAutomaticTextReplacementNotification",
+    "OldPrintedName": "NSSpellCheckerDidChangeAutomaticTextReplacement",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeAutomaticTextReplacementNotification",
+    "NewTypeName": "NSSpellChecker"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpellCheckerDidChangeAutomaticQuoteSubstitutionNotification",
+    "OldPrintedName": "NSSpellCheckerDidChangeAutomaticQuoteSubstitution",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeAutomaticQuoteSubstitutionNotification",
+    "NewTypeName": "NSSpellChecker"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpellCheckerDidChangeAutomaticDashSubstitutionNotification",
+    "OldPrintedName": "NSSpellCheckerDidChangeAutomaticDashSubstitution",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeAutomaticDashSubstitutionNotification",
+    "NewTypeName": "NSSpellChecker"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpellCheckerDidChangeAutomaticCapitalizationNotification",
+    "OldPrintedName": "NSSpellCheckerDidChangeAutomaticCapitalization",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeAutomaticCapitalizationNotification",
+    "NewTypeName": "NSSpellChecker"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpellCheckerDidChangeAutomaticPeriodSubstitutionNotification",
+    "OldPrintedName": "NSSpellCheckerDidChangeAutomaticPeriodSubstitution",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeAutomaticPeriodSubstitutionNotification",
+    "NewTypeName": "NSSpellChecker"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSpellCheckerDidChangeAutomaticTextCompletionNotification",
+    "OldPrintedName": "NSSpellCheckerDidChangeAutomaticTextCompletion",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeAutomaticTextCompletionNotification",
+    "NewTypeName": "NSSpellChecker"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingOrthographyKey",
+    "OldPrintedName": "NSTextCheckingOrthographyKey",
+    "OldTypeName": "",
+    "NewPrintedName": "orthography",
+    "NewTypeName": "NSSpellChecker.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingQuotesKey",
+    "OldPrintedName": "NSTextCheckingQuotesKey",
+    "OldTypeName": "",
+    "NewPrintedName": "quotes",
+    "NewTypeName": "NSSpellChecker.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingReplacementsKey",
+    "OldPrintedName": "NSTextCheckingReplacementsKey",
+    "OldTypeName": "",
+    "NewPrintedName": "replacements",
+    "NewTypeName": "NSSpellChecker.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingReferenceDateKey",
+    "OldPrintedName": "NSTextCheckingReferenceDateKey",
+    "OldTypeName": "",
+    "NewPrintedName": "referenceDate",
+    "NewTypeName": "NSSpellChecker.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingReferenceTimeZoneKey",
+    "OldPrintedName": "NSTextCheckingReferenceTimeZoneKey",
+    "OldTypeName": "",
+    "NewPrintedName": "referenceTimeZone",
+    "NewTypeName": "NSSpellChecker.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingDocumentURLKey",
+    "OldPrintedName": "NSTextCheckingDocumentURLKey",
+    "OldTypeName": "",
+    "NewPrintedName": "documentURL",
+    "NewTypeName": "NSSpellChecker.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingDocumentTitleKey",
+    "OldPrintedName": "NSTextCheckingDocumentTitleKey",
+    "OldTypeName": "",
+    "NewPrintedName": "documentTitle",
+    "NewTypeName": "NSSpellChecker.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingDocumentAuthorKey",
+    "OldPrintedName": "NSTextCheckingDocumentAuthorKey",
+    "OldTypeName": "",
+    "NewPrintedName": "documentAuthor",
+    "NewTypeName": "NSSpellChecker.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingRegularExpressionsKey",
+    "OldPrintedName": "NSTextCheckingRegularExpressionsKey",
+    "OldTypeName": "",
+    "NewPrintedName": "regularExpressions",
+    "NewTypeName": "NSSpellChecker.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingSelectedRangeKey",
+    "OldPrintedName": "NSTextCheckingSelectedRangeKey",
+    "OldTypeName": "",
+    "NewPrintedName": "selectedRange",
+    "NewTypeName": "NSSpellChecker.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSplitViewWillResizeSubviewsNotification",
+    "OldPrintedName": "NSSplitViewWillResizeSubviews",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willResizeSubviewsNotification",
+    "NewTypeName": "NSSplitView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSplitViewDidResizeSubviewsNotification",
+    "OldPrintedName": "NSSplitViewDidResizeSubviews",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didResizeSubviewsNotification",
+    "NewTypeName": "NSSplitView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSSplitViewDividerStyle",
+    "OldPrintedName": "NSSplitViewDividerStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "DividerStyle",
+    "NewTypeName": "NSSplitView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSplitViewControllerAutomaticDimension",
+    "OldPrintedName": "NSSplitViewControllerAutomaticDimension",
+    "OldTypeName": "",
+    "NewPrintedName": "automaticDimension",
+    "NewTypeName": "NSSplitViewController"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSSplitViewItemBehavior",
+    "OldPrintedName": "NSSplitViewItemBehavior",
+    "OldTypeName": "",
+    "NewPrintedName": "Behavior",
+    "NewTypeName": "NSSplitViewItem"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSSplitViewItemCollapseBehavior",
+    "OldPrintedName": "NSSplitViewItemCollapseBehavior",
+    "OldTypeName": "",
+    "NewPrintedName": "CollapseBehavior",
+    "NewTypeName": "NSSplitViewItem"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSplitViewItemUnspecifiedDimension",
+    "OldPrintedName": "NSSplitViewItemUnspecifiedDimension",
+    "OldTypeName": "",
+    "NewPrintedName": "unspecifiedDimension",
+    "NewTypeName": "NSSplitViewItem"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStackViewGravity",
+    "OldPrintedName": "NSStackViewGravity",
+    "OldTypeName": "",
+    "NewPrintedName": "Gravity",
+    "NewTypeName": "NSStackView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStackViewGravity@NSStackViewGravityLeading",
+    "OldPrintedName": "leading",
+    "OldTypeName": "NSStackViewGravity",
+    "NewPrintedName": "leading",
+    "NewTypeName": "NSStackView.Gravity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStackViewGravity@NSStackViewGravityTrailing",
+    "OldPrintedName": "trailing",
+    "OldTypeName": "NSStackViewGravity",
+    "NewPrintedName": "trailing",
+    "NewTypeName": "NSStackView.Gravity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStackViewDistribution",
+    "OldPrintedName": "NSStackViewDistribution",
+    "OldTypeName": "",
+    "NewPrintedName": "Distribution",
+    "NewTypeName": "NSStackView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSStackViewVisibilityPriority",
+    "OldPrintedName": "NSStackViewVisibilityPriority",
+    "OldTypeName": "",
+    "NewPrintedName": "VisibilityPriority",
+    "NewTypeName": "NSStackView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStackViewVisibilityPriorityMustHold",
+    "OldPrintedName": "NSStackViewVisibilityPriorityMustHold",
+    "OldTypeName": "",
+    "NewPrintedName": "mustHold",
+    "NewTypeName": "NSStackView.VisibilityPriority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStackViewVisibilityPriorityDetachOnlyIfNecessary",
+    "OldPrintedName": "NSStackViewVisibilityPriorityDetachOnlyIfNecessary",
+    "OldTypeName": "",
+    "NewPrintedName": "detachOnlyIfNecessary",
+    "NewTypeName": "NSStackView.VisibilityPriority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStackViewVisibilityPriorityNotVisible",
+    "OldPrintedName": "NSStackViewVisibilityPriorityNotVisible",
+    "OldTypeName": "",
+    "NewPrintedName": "notVisible",
+    "NewTypeName": "NSStackView.VisibilityPriority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStackViewSpacingUseDefault",
+    "OldPrintedName": "NSStackViewSpacingUseDefault",
+    "OldTypeName": "",
+    "NewPrintedName": "useDefaultSpacing",
+    "NewTypeName": "NSStackView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVariableStatusItemLength",
+    "OldPrintedName": "NSVariableStatusItemLength",
+    "OldTypeName": "",
+    "NewPrintedName": "variableLength",
+    "NewTypeName": "NSStatusItem"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSSquareStatusItemLength",
+    "OldPrintedName": "NSSquareStatusItemLength",
+    "OldTypeName": "",
+    "NewPrintedName": "squareLength",
+    "NewTypeName": "NSStatusItem"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStatusItemBehavior",
+    "OldPrintedName": "NSStatusItemBehavior",
+    "OldTypeName": "",
+    "NewPrintedName": "Behavior",
+    "NewTypeName": "NSStatusItem"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStatusItemBehavior@NSStatusItemBehaviorRemovalAllowed",
+    "OldPrintedName": "removalAllowed",
+    "OldTypeName": "NSStatusItemBehavior",
+    "NewPrintedName": "removalAllowed",
+    "NewTypeName": "NSStatusItem.Behavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSStatusItemBehavior@NSStatusItemBehaviorTerminationOnRemoval",
+    "OldPrintedName": "terminationOnRemoval",
+    "OldTypeName": "NSStatusItemBehavior",
+    "NewPrintedName": "terminationOnRemoval",
+    "NewTypeName": "NSStatusItem.Behavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTabViewType",
+    "OldPrintedName": "NSTabViewType",
+    "OldTypeName": "",
+    "NewPrintedName": "TabType",
+    "NewTypeName": "NSTabView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTabPosition",
+    "OldPrintedName": "NSTabPosition",
+    "OldTypeName": "",
+    "NewPrintedName": "TabPosition",
+    "NewTypeName": "NSTabView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTabViewBorderType",
+    "OldPrintedName": "NSTabViewBorderType",
+    "OldTypeName": "",
+    "NewPrintedName": "TabViewBorderType",
+    "NewTypeName": "NSTabView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTabViewControllerTabStyle",
+    "OldPrintedName": "NSTabViewControllerTabStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "TabStyle",
+    "NewTypeName": "NSTabViewController"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTabState",
+    "OldPrintedName": "NSTabState",
+    "OldTypeName": "",
+    "NewPrintedName": "State",
+    "NewTypeName": "NSTabViewItem"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableColumnResizingOptions",
+    "OldPrintedName": "NSTableColumnResizingOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "ResizingOptions",
+    "NewTypeName": "NSTableColumn"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableColumnResizingOptions@NSTableColumnAutoresizingMask",
+    "OldPrintedName": "autoresizingMask",
+    "OldTypeName": "NSTableColumnResizingOptions",
+    "NewPrintedName": "autoresizingMask",
+    "NewTypeName": "NSTableColumn.ResizingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableColumnResizingOptions@NSTableColumnUserResizingMask",
+    "OldPrintedName": "userResizingMask",
+    "OldTypeName": "NSTableColumnResizingOptions",
+    "NewPrintedName": "userResizingMask",
+    "NewTypeName": "NSTableColumn.ResizingOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewDropOperation",
+    "OldPrintedName": "NSTableViewDropOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "DropOperation",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewColumnAutoresizingStyle",
+    "OldPrintedName": "NSTableViewColumnAutoresizingStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "ColumnAutoresizingStyle",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewGridLineStyle",
+    "OldPrintedName": "NSTableViewGridLineStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "GridLineStyle",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewGridLineStyle@NSTableViewSolidVerticalGridLineMask",
+    "OldPrintedName": "solidVerticalGridLineMask",
+    "OldTypeName": "NSTableViewGridLineStyle",
+    "NewPrintedName": "solidVerticalGridLineMask",
+    "NewTypeName": "NSTableView.GridLineStyle"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewGridLineStyle@NSTableViewSolidHorizontalGridLineMask",
+    "OldPrintedName": "solidHorizontalGridLineMask",
+    "OldTypeName": "NSTableViewGridLineStyle",
+    "NewPrintedName": "solidHorizontalGridLineMask",
+    "NewTypeName": "NSTableView.GridLineStyle"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewGridLineStyle@NSTableViewDashedHorizontalGridLineMask",
+    "OldPrintedName": "dashedHorizontalGridLineMask",
+    "OldTypeName": "NSTableViewGridLineStyle",
+    "NewPrintedName": "dashedHorizontalGridLineMask",
+    "NewTypeName": "NSTableView.GridLineStyle"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewRowSizeStyle",
+    "OldPrintedName": "NSTableViewRowSizeStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "RowSizeStyle",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewSelectionHighlightStyle",
+    "OldPrintedName": "NSTableViewSelectionHighlightStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "SelectionHighlightStyle",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewDraggingDestinationFeedbackStyle",
+    "OldPrintedName": "NSTableViewDraggingDestinationFeedbackStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "DraggingDestinationFeedbackStyle",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableRowActionEdge",
+    "OldPrintedName": "NSTableRowActionEdge",
+    "OldTypeName": "",
+    "NewPrintedName": "RowActionEdge",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewAnimationOptions",
+    "OldPrintedName": "NSTableViewAnimationOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "AnimationOptions",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewAnimationOptions@NSTableViewAnimationEffectFade",
+    "OldPrintedName": "effectFade",
+    "OldTypeName": "NSTableViewAnimationOptions",
+    "NewPrintedName": "effectFade",
+    "NewTypeName": "NSTableView.AnimationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewAnimationOptions@NSTableViewAnimationEffectGap",
+    "OldPrintedName": "effectGap",
+    "OldTypeName": "NSTableViewAnimationOptions",
+    "NewPrintedName": "effectGap",
+    "NewTypeName": "NSTableView.AnimationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewAnimationOptions@NSTableViewAnimationSlideUp",
+    "OldPrintedName": "slideUp",
+    "OldTypeName": "NSTableViewAnimationOptions",
+    "NewPrintedName": "slideUp",
+    "NewTypeName": "NSTableView.AnimationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewAnimationOptions@NSTableViewAnimationSlideDown",
+    "OldPrintedName": "slideDown",
+    "OldTypeName": "NSTableViewAnimationOptions",
+    "NewPrintedName": "slideDown",
+    "NewTypeName": "NSTableView.AnimationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewAnimationOptions@NSTableViewAnimationSlideLeft",
+    "OldPrintedName": "slideLeft",
+    "OldTypeName": "NSTableViewAnimationOptions",
+    "NewPrintedName": "slideLeft",
+    "NewTypeName": "NSTableView.AnimationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewAnimationOptions@NSTableViewAnimationSlideRight",
+    "OldPrintedName": "slideRight",
+    "OldTypeName": "NSTableViewAnimationOptions",
+    "NewPrintedName": "slideRight",
+    "NewTypeName": "NSTableView.AnimationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTableViewSelectionDidChangeNotification",
+    "OldPrintedName": "NSTableViewSelectionDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "selectionDidChangeNotification",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTableViewColumnDidMoveNotification",
+    "OldPrintedName": "NSTableViewColumnDidMove",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "columnDidMoveNotification",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTableViewColumnDidResizeNotification",
+    "OldPrintedName": "NSTableViewColumnDidResize",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "columnDidResizeNotification",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTableViewSelectionIsChangingNotification",
+    "OldPrintedName": "NSTableViewSelectionIsChanging",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "selectionIsChangingNotification",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTableViewRowViewKey",
+    "OldPrintedName": "NSTableViewRowViewKey",
+    "OldTypeName": "",
+    "NewPrintedName": "rowViewIdentifier",
+    "NewTypeName": "NSTableView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTableViewRowActionStyle",
+    "OldPrintedName": "NSTableViewRowActionStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "Style",
+    "NewTypeName": "NSTableViewRowAction"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextDidBeginEditingNotification",
+    "OldPrintedName": "NSTextDidBeginEditing",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didBeginEditingNotification",
+    "NewTypeName": "NSText"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextDidEndEditingNotification",
+    "OldPrintedName": "NSTextDidEndEditing",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didEndEditingNotification",
+    "NewTypeName": "NSText"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextDidChangeNotification",
+    "OldPrintedName": "NSTextDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeNotification",
+    "NewTypeName": "NSText"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextAlternativesSelectedAlternativeStringNotification",
+    "OldPrintedName": "NSTextAlternativesSelectedAlternativeString",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "selectedAlternativeStringNotification",
+    "NewTypeName": "NSTextAlternatives"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextBlockValueType",
+    "OldPrintedName": "NSTextBlockValueType",
+    "OldTypeName": "",
+    "NewPrintedName": "ValueType",
+    "NewTypeName": "NSTextBlock"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextBlockDimension",
+    "OldPrintedName": "NSTextBlockDimension",
+    "OldTypeName": "",
+    "NewPrintedName": "Dimension",
+    "NewTypeName": "NSTextBlock"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextBlockLayer",
+    "OldPrintedName": "NSTextBlockLayer",
+    "OldTypeName": "",
+    "NewPrintedName": "Layer",
+    "NewTypeName": "NSTextBlock"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextBlockVerticalAlignment",
+    "OldPrintedName": "NSTextBlockVerticalAlignment",
+    "OldTypeName": "",
+    "NewPrintedName": "VerticalAlignment",
+    "NewTypeName": "NSTextBlock"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextFieldBezelStyle",
+    "OldPrintedName": "NSTextFieldBezelStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "BezelStyle",
+    "NewTypeName": "NSTextField"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextFinderAction",
+    "OldPrintedName": "NSTextFinderAction",
+    "OldTypeName": "",
+    "NewPrintedName": "Action",
+    "NewTypeName": "NSTextFinder"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextFinderMatchingType",
+    "OldPrintedName": "NSTextFinderMatchingType",
+    "OldTypeName": "",
+    "NewPrintedName": "MatchingType",
+    "NewTypeName": "NSTextFinder"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextInputContextKeyboardSelectionDidChangeNotification",
+    "OldPrintedName": "NSTextInputContextKeyboardSelectionDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "keyboardSelectionDidChangeNotification",
+    "NewTypeName": "NSTextInputContext"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextListOptions",
+    "OldPrintedName": "NSTextListOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "Options",
+    "NewTypeName": "NSTextList"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextListOptions@NSTextListPrependEnclosingMarker",
+    "OldPrintedName": "prependEnclosingMarker",
+    "OldTypeName": "NSTextListOptions",
+    "NewPrintedName": "prependEnclosingMarker",
+    "NewTypeName": "NSTextList.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextStorageWillProcessEditingNotification",
+    "OldPrintedName": "NSTextStorageWillProcessEditing",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willProcessEditingNotification",
+    "NewTypeName": "NSTextStorage"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextStorageDidProcessEditingNotification",
+    "OldPrintedName": "NSTextStorageDidProcessEditing",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didProcessEditingNotification",
+    "NewTypeName": "NSTextStorage"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTabColumnTerminatorsAttributeName",
+    "OldPrintedName": "NSTabColumnTerminatorsAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "columnTerminators",
+    "NewTypeName": "NSTextTab.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextTableLayoutAlgorithm",
+    "OldPrintedName": "NSTextTableLayoutAlgorithm",
+    "OldTypeName": "",
+    "NewPrintedName": "LayoutAlgorithm",
+    "NewTypeName": "NSTextTable"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextViewWillChangeNotifyingTextViewNotification",
+    "OldPrintedName": "NSTextViewWillChangeNotifyingTextView",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willChangeNotifyingTextViewNotification",
+    "NewTypeName": "NSTextView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextViewDidChangeSelectionNotification",
+    "OldPrintedName": "NSTextViewDidChangeSelection",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeSelectionNotification",
+    "NewTypeName": "NSTextView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextViewDidChangeTypingAttributesNotification",
+    "OldPrintedName": "NSTextViewDidChangeTypingAttributes",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeTypingAttributesNotification",
+    "NewTypeName": "NSTextView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTokenStyle",
+    "OldPrintedName": "NSTokenStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "TokenStyle",
+    "NewTypeName": "NSTokenField"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSToolbarDisplayMode",
+    "OldPrintedName": "NSToolbarDisplayMode",
+    "OldTypeName": "",
+    "NewPrintedName": "DisplayMode",
+    "NewTypeName": "NSToolbar"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSToolbarSizeMode",
+    "OldPrintedName": "NSToolbarSizeMode",
+    "OldTypeName": "",
+    "NewPrintedName": "SizeMode",
+    "NewTypeName": "NSToolbar"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolbarWillAddItemNotification",
+    "OldPrintedName": "NSToolbarWillAddItem",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willAddItemNotification",
+    "NewTypeName": "NSToolbar"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolbarDidRemoveItemNotification",
+    "OldPrintedName": "NSToolbarDidRemoveItem",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didRemoveItemNotification",
+    "NewTypeName": "NSToolbar"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolbarSeparatorItemIdentifier",
+    "OldPrintedName": "NSToolbarSeparatorItemIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "separator",
+    "NewTypeName": "NSToolbarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolbarSpaceItemIdentifier",
+    "OldPrintedName": "NSToolbarSpaceItemIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "space",
+    "NewTypeName": "NSToolbarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolbarFlexibleSpaceItemIdentifier",
+    "OldPrintedName": "NSToolbarFlexibleSpaceItemIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "flexibleSpace",
+    "NewTypeName": "NSToolbarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolbarShowColorsItemIdentifier",
+    "OldPrintedName": "NSToolbarShowColorsItemIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "showColors",
+    "NewTypeName": "NSToolbarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolbarShowFontsItemIdentifier",
+    "OldPrintedName": "NSToolbarShowFontsItemIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "showFonts",
+    "NewTypeName": "NSToolbarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolbarCustomizeToolbarItemIdentifier",
+    "OldPrintedName": "NSToolbarCustomizeToolbarItemIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "customizeToolbar",
+    "NewTypeName": "NSToolbarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolbarPrintItemIdentifier",
+    "OldPrintedName": "NSToolbarPrintItemIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "print",
+    "NewTypeName": "NSToolbarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolbarToggleSidebarItemIdentifier",
+    "OldPrintedName": "NSToolbarToggleSidebarItemIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "toggleSidebar",
+    "NewTypeName": "NSToolbarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSToolbarCloudSharingItemIdentifier",
+    "OldPrintedName": "NSToolbarCloudSharingItemIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "cloudSharing",
+    "NewTypeName": "NSToolbarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTouchPhase",
+    "OldPrintedName": "NSTouchPhase",
+    "OldTypeName": "",
+    "NewPrintedName": "Phase",
+    "NewTypeName": "NSTouch"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTouchPhase@NSTouchPhaseBegan",
+    "OldPrintedName": "began",
+    "OldTypeName": "NSTouchPhase",
+    "NewPrintedName": "began",
+    "NewTypeName": "NSTouch.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTouchPhase@NSTouchPhaseMoved",
+    "OldPrintedName": "moved",
+    "OldTypeName": "NSTouchPhase",
+    "NewPrintedName": "moved",
+    "NewTypeName": "NSTouch.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTouchPhase@NSTouchPhaseStationary",
+    "OldPrintedName": "stationary",
+    "OldTypeName": "NSTouchPhase",
+    "NewPrintedName": "stationary",
+    "NewTypeName": "NSTouch.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTouchPhase@NSTouchPhaseEnded",
+    "OldPrintedName": "ended",
+    "OldTypeName": "NSTouchPhase",
+    "NewPrintedName": "ended",
+    "NewTypeName": "NSTouch.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTouchPhase@NSTouchPhaseCancelled",
+    "OldPrintedName": "cancelled",
+    "OldTypeName": "NSTouchPhase",
+    "NewPrintedName": "cancelled",
+    "NewTypeName": "NSTouch.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTouchPhase@NSTouchPhaseTouching",
+    "OldPrintedName": "touching",
+    "OldTypeName": "NSTouchPhase",
+    "NewPrintedName": "touching",
+    "NewTypeName": "NSTouch.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTouchPhase@NSTouchPhaseAny",
+    "OldPrintedName": "any",
+    "OldTypeName": "NSTouchPhase",
+    "NewPrintedName": "any",
+    "NewTypeName": "NSTouch.Phase"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTouchType",
+    "OldPrintedName": "NSTouchType",
+    "OldTypeName": "",
+    "NewPrintedName": "TouchType",
+    "NewTypeName": "NSTouch"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTouchTypeMask",
+    "OldPrintedName": "NSTouchTypeMask",
+    "OldTypeName": "",
+    "NewPrintedName": "TouchTypeMask",
+    "NewTypeName": "NSTouch"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTouchTypeMask@NSTouchTypeMaskDirect",
+    "OldPrintedName": "direct",
+    "OldTypeName": "NSTouchTypeMask",
+    "NewPrintedName": "direct",
+    "NewTypeName": "NSTouch.TouchTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTouchTypeMask@NSTouchTypeMaskIndirect",
+    "OldPrintedName": "indirect",
+    "OldTypeName": "NSTouchTypeMask",
+    "NewPrintedName": "indirect",
+    "NewTypeName": "NSTouch.TouchTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSTouchTypeMaskFromType",
+    "OldPrintedName": "NSTouchTypeMaskFromType(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "init(type:)",
+    "NewTypeName": "NSTouch.TouchTypeMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSTouchBarCustomizationIdentifier",
+    "OldPrintedName": "NSTouchBarCustomizationIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "CustomizationIdentifier",
+    "NewTypeName": "NSTouchBar"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSTouchBarItemIdentifier",
+    "OldPrintedName": "NSTouchBarItemIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "Identifier",
+    "NewTypeName": "NSTouchBarItem"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemIdentifierCandidateList",
+    "OldPrintedName": "candidateList",
+    "OldTypeName": "NSTouchBarItemIdentifier",
+    "NewPrintedName": "candidateList",
+    "NewTypeName": "NSTouchBarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemIdentifierCharacterPicker",
+    "OldPrintedName": "characterPicker",
+    "OldTypeName": "NSTouchBarItemIdentifier",
+    "NewPrintedName": "characterPicker",
+    "NewTypeName": "NSTouchBarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemIdentifierTextColorPicker",
+    "OldPrintedName": "textColorPicker",
+    "OldTypeName": "NSTouchBarItemIdentifier",
+    "NewPrintedName": "textColorPicker",
+    "NewTypeName": "NSTouchBarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemIdentifierTextStyle",
+    "OldPrintedName": "textStyle",
+    "OldTypeName": "NSTouchBarItemIdentifier",
+    "NewPrintedName": "textStyle",
+    "NewTypeName": "NSTouchBarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemIdentifierTextAlignment",
+    "OldPrintedName": "textAlignment",
+    "OldTypeName": "NSTouchBarItemIdentifier",
+    "NewPrintedName": "textAlignment",
+    "NewTypeName": "NSTouchBarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemIdentifierTextList",
+    "OldPrintedName": "textList",
+    "OldTypeName": "NSTouchBarItemIdentifier",
+    "NewPrintedName": "textList",
+    "NewTypeName": "NSTouchBarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemIdentifierTextFormat",
+    "OldPrintedName": "textFormat",
+    "OldTypeName": "NSTouchBarItemIdentifier",
+    "NewPrintedName": "textFormat",
+    "NewTypeName": "NSTouchBarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemIdentifierFixedSpaceSmall",
+    "OldPrintedName": "fixedSpaceSmall",
+    "OldTypeName": "NSTouchBarItemIdentifier",
+    "NewPrintedName": "fixedSpaceSmall",
+    "NewTypeName": "NSTouchBarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemIdentifierFixedSpaceLarge",
+    "OldPrintedName": "fixedSpaceLarge",
+    "OldTypeName": "NSTouchBarItemIdentifier",
+    "NewPrintedName": "fixedSpaceLarge",
+    "NewTypeName": "NSTouchBarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemIdentifierFlexibleSpace",
+    "OldPrintedName": "flexibleSpace",
+    "OldTypeName": "NSTouchBarItemIdentifier",
+    "NewPrintedName": "flexibleSpace",
+    "NewTypeName": "NSTouchBarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemIdentifierOtherItemsProxy",
+    "OldPrintedName": "otherItemsProxy",
+    "OldTypeName": "NSTouchBarItemIdentifier",
+    "NewPrintedName": "otherItemsProxy",
+    "NewTypeName": "NSTouchBarItem.Identifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSTouchBarItemPriority",
+    "OldPrintedName": "NSTouchBarItemPriority",
+    "OldTypeName": "",
+    "NewPrintedName": "Priority",
+    "NewTypeName": "NSTouchBarItem"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemPriorityHigh",
+    "OldPrintedName": "high",
+    "OldTypeName": "NSTouchBarItemPriority",
+    "NewPrintedName": "high",
+    "NewTypeName": "NSTouchBarItem.Priority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemPriorityNormal",
+    "OldPrintedName": "normal",
+    "OldTypeName": "NSTouchBarItemPriority",
+    "NewPrintedName": "normal",
+    "NewTypeName": "NSTouchBarItem.Priority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTouchBarItemPriorityLow",
+    "OldPrintedName": "low",
+    "OldTypeName": "NSTouchBarItemPriority",
+    "NewPrintedName": "low",
+    "NewTypeName": "NSTouchBarItem.Priority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTrackingAreaOptions",
+    "OldPrintedName": "NSTrackingAreaOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "Options",
+    "NewTypeName": "NSTrackingArea"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTrackingAreaOptions@NSTrackingMouseEnteredAndExited",
+    "OldPrintedName": "mouseEnteredAndExited",
+    "OldTypeName": "NSTrackingAreaOptions",
+    "NewPrintedName": "mouseEnteredAndExited",
+    "NewTypeName": "NSTrackingArea.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTrackingAreaOptions@NSTrackingMouseMoved",
+    "OldPrintedName": "mouseMoved",
+    "OldTypeName": "NSTrackingAreaOptions",
+    "NewPrintedName": "mouseMoved",
+    "NewTypeName": "NSTrackingArea.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTrackingAreaOptions@NSTrackingCursorUpdate",
+    "OldPrintedName": "cursorUpdate",
+    "OldTypeName": "NSTrackingAreaOptions",
+    "NewPrintedName": "cursorUpdate",
+    "NewTypeName": "NSTrackingArea.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTrackingAreaOptions@NSTrackingActiveWhenFirstResponder",
+    "OldPrintedName": "activeWhenFirstResponder",
+    "OldTypeName": "NSTrackingAreaOptions",
+    "NewPrintedName": "activeWhenFirstResponder",
+    "NewTypeName": "NSTrackingArea.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTrackingAreaOptions@NSTrackingActiveInKeyWindow",
+    "OldPrintedName": "activeInKeyWindow",
+    "OldTypeName": "NSTrackingAreaOptions",
+    "NewPrintedName": "activeInKeyWindow",
+    "NewTypeName": "NSTrackingArea.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTrackingAreaOptions@NSTrackingActiveInActiveApp",
+    "OldPrintedName": "activeInActiveApp",
+    "OldTypeName": "NSTrackingAreaOptions",
+    "NewPrintedName": "activeInActiveApp",
+    "NewTypeName": "NSTrackingArea.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTrackingAreaOptions@NSTrackingActiveAlways",
+    "OldPrintedName": "activeAlways",
+    "OldTypeName": "NSTrackingAreaOptions",
+    "NewPrintedName": "activeAlways",
+    "NewTypeName": "NSTrackingArea.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTrackingAreaOptions@NSTrackingAssumeInside",
+    "OldPrintedName": "assumeInside",
+    "OldTypeName": "NSTrackingAreaOptions",
+    "NewPrintedName": "assumeInside",
+    "NewTypeName": "NSTrackingArea.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTrackingAreaOptions@NSTrackingInVisibleRect",
+    "OldPrintedName": "inVisibleRect",
+    "OldTypeName": "NSTrackingAreaOptions",
+    "NewPrintedName": "inVisibleRect",
+    "NewTypeName": "NSTrackingArea.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTrackingAreaOptions@NSTrackingEnabledDuringMouseDrag",
+    "OldPrintedName": "enabledDuringMouseDrag",
+    "OldTypeName": "NSTrackingAreaOptions",
+    "NewPrintedName": "enabledDuringMouseDrag",
+    "NewTypeName": "NSTrackingArea.Options"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSAutoresizingMaskOptions",
+    "OldPrintedName": "NSAutoresizingMaskOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "AutoresizingMask",
+    "NewTypeName": "NSView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSAutoresizingMaskOptions@NSViewNotSizable",
+    "OldPrintedName": "viewNotSizable",
+    "OldTypeName": "NSAutoresizingMaskOptions",
+    "NewPrintedName": "none",
+    "NewTypeName": "NSView.AutoresizingMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSAutoresizingMaskOptions@NSViewMinXMargin",
+    "OldPrintedName": "viewMinXMargin",
+    "OldTypeName": "NSAutoresizingMaskOptions",
+    "NewPrintedName": "minXMargin",
+    "NewTypeName": "NSView.AutoresizingMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSAutoresizingMaskOptions@NSViewWidthSizable",
+    "OldPrintedName": "viewWidthSizable",
+    "OldTypeName": "NSAutoresizingMaskOptions",
+    "NewPrintedName": "width",
+    "NewTypeName": "NSView.AutoresizingMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSAutoresizingMaskOptions@NSViewMaxXMargin",
+    "OldPrintedName": "viewMaxXMargin",
+    "OldTypeName": "NSAutoresizingMaskOptions",
+    "NewPrintedName": "maxXMargin",
+    "NewTypeName": "NSView.AutoresizingMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSAutoresizingMaskOptions@NSViewMinYMargin",
+    "OldPrintedName": "viewMinYMargin",
+    "OldTypeName": "NSAutoresizingMaskOptions",
+    "NewPrintedName": "minYMargin",
+    "NewTypeName": "NSView.AutoresizingMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSAutoresizingMaskOptions@NSViewHeightSizable",
+    "OldPrintedName": "viewHeightSizable",
+    "OldTypeName": "NSAutoresizingMaskOptions",
+    "NewPrintedName": "height",
+    "NewTypeName": "NSView.AutoresizingMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSAutoresizingMaskOptions@NSViewMaxYMargin",
+    "OldPrintedName": "viewMaxYMargin",
+    "OldTypeName": "NSAutoresizingMaskOptions",
+    "NewPrintedName": "maxYMargin",
+    "NewTypeName": "NSView.AutoresizingMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSViewLayerContentsRedrawPolicy",
+    "OldPrintedName": "NSViewLayerContentsRedrawPolicy",
+    "OldTypeName": "",
+    "NewPrintedName": "LayerContentsRedrawPolicy",
+    "NewTypeName": "NSView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSViewLayerContentsPlacement",
+    "OldPrintedName": "NSViewLayerContentsPlacement",
+    "OldTypeName": "",
+    "NewPrintedName": "LayerContentsPlacement",
+    "NewTypeName": "NSView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSTrackingRectTag",
+    "OldPrintedName": "NSTrackingRectTag",
+    "OldTypeName": "",
+    "NewPrintedName": "TrackingRectTag",
+    "NewTypeName": "NSView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@NSToolTipTag",
+    "OldPrintedName": "NSToolTipTag",
+    "OldTypeName": "",
+    "NewPrintedName": "ToolTipTag",
+    "NewTypeName": "NSView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFullScreenModeAllScreens",
+    "OldPrintedName": "NSFullScreenModeAllScreens",
+    "OldTypeName": "",
+    "NewPrintedName": "fullScreenModeAllScreens",
+    "NewTypeName": "NSView.FullScreenModeOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFullScreenModeSetting",
+    "OldPrintedName": "NSFullScreenModeSetting",
+    "OldTypeName": "",
+    "NewPrintedName": "fullScreenModeSetting",
+    "NewTypeName": "NSView.FullScreenModeOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFullScreenModeWindowLevel",
+    "OldPrintedName": "NSFullScreenModeWindowLevel",
+    "OldTypeName": "",
+    "NewPrintedName": "fullScreenModeWindowLevel",
+    "NewTypeName": "NSView.FullScreenModeOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFullScreenModeApplicationPresentationOptions",
+    "OldPrintedName": "NSFullScreenModeApplicationPresentationOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "fullScreenModeApplicationPresentationOptions",
+    "NewTypeName": "NSView.FullScreenModeOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDefinitionPresentationTypeKey",
+    "OldPrintedName": "NSDefinitionPresentationTypeKey",
+    "OldTypeName": "",
+    "NewPrintedName": "presentationType",
+    "NewTypeName": "NSView.DefinitionOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDefinitionPresentationTypeOverlay",
+    "OldPrintedName": "NSDefinitionPresentationTypeOverlay",
+    "OldTypeName": "",
+    "NewPrintedName": "overlay",
+    "NewTypeName": "NSView.DefinitionPresentationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDefinitionPresentationTypeDictionaryApplication",
+    "OldPrintedName": "NSDefinitionPresentationTypeDictionaryApplication",
+    "OldTypeName": "",
+    "NewPrintedName": "dictionaryApplication",
+    "NewTypeName": "NSView.DefinitionPresentationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewFrameDidChangeNotification",
+    "OldPrintedName": "NSViewFrameDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "frameDidChangeNotification",
+    "NewTypeName": "NSView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewBoundsDidChangeNotification",
+    "OldPrintedName": "NSViewBoundsDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "boundsDidChangeNotification",
+    "NewTypeName": "NSView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewGlobalFrameDidChangeNotification",
+    "OldPrintedName": "NSViewGlobalFrameDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "globalFrameDidChangeNotification",
+    "NewTypeName": "NSView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewDidUpdateTrackingAreasNotification",
+    "OldPrintedName": "NSViewDidUpdateTrackingAreas",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didUpdateTrackingAreasNotification",
+    "NewTypeName": "NSView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBackgroundStyle",
+    "OldPrintedName": "NSBackgroundStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "BackgroundStyle",
+    "NewTypeName": "NSView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewNoIntrinsicMetric",
+    "OldPrintedName": "NSViewNoIntrinsicMetric",
+    "OldTypeName": "",
+    "NewPrintedName": "noIntrinsicMetric",
+    "NewTypeName": "NSView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewAnimationTargetKey",
+    "OldPrintedName": "NSViewAnimationTargetKey",
+    "OldTypeName": "",
+    "NewPrintedName": "target",
+    "NewTypeName": "NSViewAnimation.Key"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewAnimationStartFrameKey",
+    "OldPrintedName": "NSViewAnimationStartFrameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "startFrame",
+    "NewTypeName": "NSViewAnimation.Key"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewAnimationEndFrameKey",
+    "OldPrintedName": "NSViewAnimationEndFrameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "endFrame",
+    "NewTypeName": "NSViewAnimation.Key"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewAnimationEffectKey",
+    "OldPrintedName": "NSViewAnimationEffectKey",
+    "OldTypeName": "",
+    "NewPrintedName": "effect",
+    "NewTypeName": "NSViewAnimation.Key"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewAnimationFadeInEffect",
+    "OldPrintedName": "NSViewAnimationFadeInEffect",
+    "OldTypeName": "",
+    "NewPrintedName": "fadeIn",
+    "NewTypeName": "NSViewAnimation.EffectName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewAnimationFadeOutEffect",
+    "OldPrintedName": "NSViewAnimationFadeOutEffect",
+    "OldTypeName": "",
+    "NewPrintedName": "fadeOut",
+    "NewTypeName": "NSViewAnimation.EffectName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSViewControllerTransitionOptions",
+    "OldPrintedName": "NSViewControllerTransitionOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "TransitionOptions",
+    "NewTypeName": "NSViewController"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSViewControllerTransitionOptions@NSViewControllerTransitionCrossfade",
+    "OldPrintedName": "crossfade",
+    "OldTypeName": "NSViewControllerTransitionOptions",
+    "NewPrintedName": "crossfade",
+    "NewTypeName": "NSViewController.TransitionOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSViewControllerTransitionOptions@NSViewControllerTransitionSlideUp",
+    "OldPrintedName": "slideUp",
+    "OldTypeName": "NSViewControllerTransitionOptions",
+    "NewPrintedName": "slideUp",
+    "NewTypeName": "NSViewController.TransitionOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSViewControllerTransitionOptions@NSViewControllerTransitionSlideDown",
+    "OldPrintedName": "slideDown",
+    "OldTypeName": "NSViewControllerTransitionOptions",
+    "NewPrintedName": "slideDown",
+    "NewTypeName": "NSViewController.TransitionOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSViewControllerTransitionOptions@NSViewControllerTransitionSlideLeft",
+    "OldPrintedName": "slideLeft",
+    "OldTypeName": "NSViewControllerTransitionOptions",
+    "NewPrintedName": "slideLeft",
+    "NewTypeName": "NSViewController.TransitionOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSViewControllerTransitionOptions@NSViewControllerTransitionSlideRight",
+    "OldPrintedName": "slideRight",
+    "OldTypeName": "NSViewControllerTransitionOptions",
+    "NewPrintedName": "slideRight",
+    "NewTypeName": "NSViewController.TransitionOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSViewControllerTransitionOptions@NSViewControllerTransitionSlideForward",
+    "OldPrintedName": "slideForward",
+    "OldTypeName": "NSViewControllerTransitionOptions",
+    "NewPrintedName": "slideForward",
+    "NewTypeName": "NSViewController.TransitionOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSViewControllerTransitionOptions@NSViewControllerTransitionSlideBackward",
+    "OldPrintedName": "slideBackward",
+    "OldTypeName": "NSViewControllerTransitionOptions",
+    "NewPrintedName": "slideBackward",
+    "NewTypeName": "NSViewController.TransitionOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSViewControllerTransitionOptions@NSViewControllerTransitionAllowUserInteraction",
+    "OldPrintedName": "allowUserInteraction",
+    "OldTypeName": "NSViewControllerTransitionOptions",
+    "NewPrintedName": "allowUserInteraction",
+    "NewTypeName": "NSViewController.TransitionOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSVisualEffectMaterial",
+    "OldPrintedName": "NSVisualEffectMaterial",
+    "OldTypeName": "",
+    "NewPrintedName": "Material",
+    "NewTypeName": "NSVisualEffectView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSVisualEffectBlendingMode",
+    "OldPrintedName": "NSVisualEffectBlendingMode",
+    "OldTypeName": "",
+    "NewPrintedName": "BlendingMode",
+    "NewTypeName": "NSVisualEffectView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSVisualEffectState",
+    "OldPrintedName": "NSVisualEffectState",
+    "OldTypeName": "",
+    "NewPrintedName": "State",
+    "NewTypeName": "NSVisualEffectView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask",
+    "OldPrintedName": "NSWindowStyleMask",
+    "OldTypeName": "",
+    "NewPrintedName": "StyleMask",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskBorderless",
+    "OldPrintedName": "borderless",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "borderless",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskTitled",
+    "OldPrintedName": "titled",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "titled",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskClosable",
+    "OldPrintedName": "closable",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "closable",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskMiniaturizable",
+    "OldPrintedName": "miniaturizable",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "miniaturizable",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskResizable",
+    "OldPrintedName": "resizable",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "resizable",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskTexturedBackground",
+    "OldPrintedName": "texturedBackground",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "texturedBackground",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskUnifiedTitleAndToolbar",
+    "OldPrintedName": "unifiedTitleAndToolbar",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "unifiedTitleAndToolbar",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskFullScreen",
+    "OldPrintedName": "fullScreen",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "fullScreen",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskFullSizeContentView",
+    "OldPrintedName": "fullSizeContentView",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "fullSizeContentView",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskUtilityWindow",
+    "OldPrintedName": "utilityWindow",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "utilityWindow",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskDocModalWindow",
+    "OldPrintedName": "docModalWindow",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "docModalWindow",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskNonactivatingPanel",
+    "OldPrintedName": "nonactivatingPanel",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "nonactivatingPanel",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowStyleMask@NSWindowStyleMaskHUDWindow",
+    "OldPrintedName": "hudWindow",
+    "OldTypeName": "NSWindowStyleMask",
+    "NewPrintedName": "hudWindow",
+    "NewTypeName": "NSWindow.StyleMask"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowSharingType",
+    "OldPrintedName": "NSWindowSharingType",
+    "OldTypeName": "",
+    "NewPrintedName": "SharingType",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowBackingLocation",
+    "OldPrintedName": "NSWindowBackingLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "BackingLocation",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior",
+    "OldPrintedName": "NSWindowCollectionBehavior",
+    "OldTypeName": "",
+    "NewPrintedName": "CollectionBehavior",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior@NSWindowCollectionBehaviorCanJoinAllSpaces",
+    "OldPrintedName": "canJoinAllSpaces",
+    "OldTypeName": "NSWindowCollectionBehavior",
+    "NewPrintedName": "canJoinAllSpaces",
+    "NewTypeName": "NSWindow.CollectionBehavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior@NSWindowCollectionBehaviorMoveToActiveSpace",
+    "OldPrintedName": "moveToActiveSpace",
+    "OldTypeName": "NSWindowCollectionBehavior",
+    "NewPrintedName": "moveToActiveSpace",
+    "NewTypeName": "NSWindow.CollectionBehavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior@NSWindowCollectionBehaviorManaged",
+    "OldPrintedName": "managed",
+    "OldTypeName": "NSWindowCollectionBehavior",
+    "NewPrintedName": "managed",
+    "NewTypeName": "NSWindow.CollectionBehavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior@NSWindowCollectionBehaviorTransient",
+    "OldPrintedName": "transient",
+    "OldTypeName": "NSWindowCollectionBehavior",
+    "NewPrintedName": "transient",
+    "NewTypeName": "NSWindow.CollectionBehavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior@NSWindowCollectionBehaviorStationary",
+    "OldPrintedName": "stationary",
+    "OldTypeName": "NSWindowCollectionBehavior",
+    "NewPrintedName": "stationary",
+    "NewTypeName": "NSWindow.CollectionBehavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior@NSWindowCollectionBehaviorParticipatesInCycle",
+    "OldPrintedName": "participatesInCycle",
+    "OldTypeName": "NSWindowCollectionBehavior",
+    "NewPrintedName": "participatesInCycle",
+    "NewTypeName": "NSWindow.CollectionBehavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior@NSWindowCollectionBehaviorIgnoresCycle",
+    "OldPrintedName": "ignoresCycle",
+    "OldTypeName": "NSWindowCollectionBehavior",
+    "NewPrintedName": "ignoresCycle",
+    "NewTypeName": "NSWindow.CollectionBehavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior@NSWindowCollectionBehaviorFullScreenPrimary",
+    "OldPrintedName": "fullScreenPrimary",
+    "OldTypeName": "NSWindowCollectionBehavior",
+    "NewPrintedName": "fullScreenPrimary",
+    "NewTypeName": "NSWindow.CollectionBehavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior@NSWindowCollectionBehaviorFullScreenAuxiliary",
+    "OldPrintedName": "fullScreenAuxiliary",
+    "OldTypeName": "NSWindowCollectionBehavior",
+    "NewPrintedName": "fullScreenAuxiliary",
+    "NewTypeName": "NSWindow.CollectionBehavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior@NSWindowCollectionBehaviorFullScreenNone",
+    "OldPrintedName": "fullScreenNone",
+    "OldTypeName": "NSWindowCollectionBehavior",
+    "NewPrintedName": "fullScreenNone",
+    "NewTypeName": "NSWindow.CollectionBehavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior@NSWindowCollectionBehaviorFullScreenAllowsTiling",
+    "OldPrintedName": "fullScreenAllowsTiling",
+    "OldTypeName": "NSWindowCollectionBehavior",
+    "NewPrintedName": "fullScreenAllowsTiling",
+    "NewTypeName": "NSWindow.CollectionBehavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowCollectionBehavior@NSWindowCollectionBehaviorFullScreenDisallowsTiling",
+    "OldPrintedName": "fullScreenDisallowsTiling",
+    "OldTypeName": "NSWindowCollectionBehavior",
+    "NewPrintedName": "fullScreenDisallowsTiling",
+    "NewTypeName": "NSWindow.CollectionBehavior"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowAnimationBehavior",
+    "OldPrintedName": "NSWindowAnimationBehavior",
+    "OldTypeName": "",
+    "NewPrintedName": "AnimationBehavior",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowOcclusionState",
+    "OldPrintedName": "NSWindowOcclusionState",
+    "OldTypeName": "",
+    "NewPrintedName": "OcclusionState",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowOcclusionState@NSWindowOcclusionStateVisible",
+    "OldPrintedName": "visible",
+    "OldTypeName": "NSWindowOcclusionState",
+    "NewPrintedName": "visible",
+    "NewTypeName": "NSWindow.OcclusionState"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSSelectionDirection",
+    "OldPrintedName": "NSSelectionDirection",
+    "OldTypeName": "",
+    "NewPrintedName": "SelectionDirection",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowButton",
+    "OldPrintedName": "NSWindowButton",
+    "OldTypeName": "",
+    "NewPrintedName": "ButtonType",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowTitleVisibility",
+    "OldPrintedName": "NSWindowTitleVisibility",
+    "OldTypeName": "",
+    "NewPrintedName": "TitleVisibility",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowUserTabbingPreference",
+    "OldPrintedName": "NSWindowUserTabbingPreference",
+    "OldTypeName": "",
+    "NewPrintedName": "UserTabbingPreference",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowTabbingMode",
+    "OldPrintedName": "NSWindowTabbingMode",
+    "OldTypeName": "",
+    "NewPrintedName": "TabbingMode",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidBecomeKeyNotification",
+    "OldPrintedName": "NSWindowDidBecomeKey",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didBecomeKeyNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidBecomeMainNotification",
+    "OldPrintedName": "NSWindowDidBecomeMain",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didBecomeMainNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidChangeScreenNotification",
+    "OldPrintedName": "NSWindowDidChangeScreen",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeScreenNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidDeminiaturizeNotification",
+    "OldPrintedName": "NSWindowDidDeminiaturize",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didDeminiaturizeNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidExposeNotification",
+    "OldPrintedName": "NSWindowDidExpose",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didExposeNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidMiniaturizeNotification",
+    "OldPrintedName": "NSWindowDidMiniaturize",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didMiniaturizeNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidMoveNotification",
+    "OldPrintedName": "NSWindowDidMove",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didMoveNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidResignKeyNotification",
+    "OldPrintedName": "NSWindowDidResignKey",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didResignKeyNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidResignMainNotification",
+    "OldPrintedName": "NSWindowDidResignMain",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didResignMainNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidResizeNotification",
+    "OldPrintedName": "NSWindowDidResize",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didResizeNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidUpdateNotification",
+    "OldPrintedName": "NSWindowDidUpdate",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didUpdateNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowWillCloseNotification",
+    "OldPrintedName": "NSWindowWillClose",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willCloseNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowWillMiniaturizeNotification",
+    "OldPrintedName": "NSWindowWillMiniaturize",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willMiniaturizeNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowWillMoveNotification",
+    "OldPrintedName": "NSWindowWillMove",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willMoveNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowWillBeginSheetNotification",
+    "OldPrintedName": "NSWindowWillBeginSheet",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willBeginSheetNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidEndSheetNotification",
+    "OldPrintedName": "NSWindowDidEndSheet",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didEndSheetNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidChangeBackingPropertiesNotification",
+    "OldPrintedName": "NSWindowDidChangeBackingProperties",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeBackingPropertiesNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBackingPropertyOldScaleFactorKey",
+    "OldPrintedName": "NSBackingPropertyOldScaleFactorKey",
+    "OldTypeName": "",
+    "NewPrintedName": "oldScaleFactorUserInfoKey",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBackingPropertyOldColorSpaceKey",
+    "OldPrintedName": "NSBackingPropertyOldColorSpaceKey",
+    "OldTypeName": "",
+    "NewPrintedName": "oldColorSpaceUserInfoKey",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidChangeScreenProfileNotification",
+    "OldPrintedName": "NSWindowDidChangeScreenProfile",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeScreenProfileNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowWillStartLiveResizeNotification",
+    "OldPrintedName": "NSWindowWillStartLiveResize",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willStartLiveResizeNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidEndLiveResizeNotification",
+    "OldPrintedName": "NSWindowDidEndLiveResize",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didEndLiveResizeNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowWillEnterFullScreenNotification",
+    "OldPrintedName": "NSWindowWillEnterFullScreen",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willEnterFullScreenNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidEnterFullScreenNotification",
+    "OldPrintedName": "NSWindowDidEnterFullScreen",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didEnterFullScreenNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowWillExitFullScreenNotification",
+    "OldPrintedName": "NSWindowWillExitFullScreen",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willExitFullScreenNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidExitFullScreenNotification",
+    "OldPrintedName": "NSWindowDidExitFullScreen",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didExitFullScreenNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowWillEnterVersionBrowserNotification",
+    "OldPrintedName": "NSWindowWillEnterVersionBrowser",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willEnterVersionBrowserNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidEnterVersionBrowserNotification",
+    "OldPrintedName": "NSWindowDidEnterVersionBrowser",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didEnterVersionBrowserNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowWillExitVersionBrowserNotification",
+    "OldPrintedName": "NSWindowWillExitVersionBrowser",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willExitVersionBrowserNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidExitVersionBrowserNotification",
+    "OldPrintedName": "NSWindowDidExitVersionBrowser",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didExitVersionBrowserNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWindowDidChangeOcclusionStateNotification",
+    "OldPrintedName": "NSWindowDidChangeOcclusionState",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeOcclusionStateNotification",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSBackingStoreType",
+    "OldPrintedName": "NSBackingStoreType",
+    "OldTypeName": "",
+    "NewPrintedName": "BackingStoreType",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWindowOrderingMode",
+    "OldPrintedName": "NSWindowOrderingMode",
+    "OldTypeName": "",
+    "NewPrintedName": "OrderingMode",
+    "NewTypeName": "NSWindow"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSPlanarFromDepth",
+    "OldPrintedName": "NSPlanarFromDepth(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "isPlanar",
+    "NewTypeName": "NSWindow.Depth",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSColorSpaceFromDepth",
+    "OldPrintedName": "NSColorSpaceFromDepth(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "colorSpaceName",
+    "NewTypeName": "NSWindow.Depth",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSBitsPerSampleFromDepth",
+    "OldPrintedName": "NSBitsPerSampleFromDepth(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "bitsPerSample",
+    "NewTypeName": "NSWindow.Depth",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSBitsPerPixelFromDepth",
+    "OldPrintedName": "NSBitsPerPixelFromDepth(_:)",
+    "OldTypeName": "",
+    "NewPrintedName": "bitsPerPixel",
+    "NewTypeName": "NSWindow.Depth",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDesktopImageScalingKey",
+    "OldPrintedName": "NSWorkspaceDesktopImageScalingKey",
+    "OldTypeName": "",
+    "NewPrintedName": "imageScaling",
+    "NewTypeName": "NSWorkspace.DesktopImageOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDesktopImageAllowClippingKey",
+    "OldPrintedName": "NSWorkspaceDesktopImageAllowClippingKey",
+    "OldTypeName": "",
+    "NewPrintedName": "allowClipping",
+    "NewTypeName": "NSWorkspace.DesktopImageOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDesktopImageFillColorKey",
+    "OldPrintedName": "NSWorkspaceDesktopImageFillColorKey",
+    "OldTypeName": "",
+    "NewPrintedName": "fillColor",
+    "NewTypeName": "NSWorkspace.DesktopImageOptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceApplicationKey",
+    "OldPrintedName": "NSWorkspaceApplicationKey",
+    "OldTypeName": "",
+    "NewPrintedName": "applicationUserInfoKey",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceWillLaunchApplicationNotification",
+    "OldPrintedName": "NSWorkspaceWillLaunchApplication",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willLaunchApplicationNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDidLaunchApplicationNotification",
+    "OldPrintedName": "NSWorkspaceDidLaunchApplication",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didLaunchApplicationNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDidTerminateApplicationNotification",
+    "OldPrintedName": "NSWorkspaceDidTerminateApplication",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didTerminateApplicationNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDidHideApplicationNotification",
+    "OldPrintedName": "NSWorkspaceDidHideApplication",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didHideApplicationNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDidUnhideApplicationNotification",
+    "OldPrintedName": "NSWorkspaceDidUnhideApplication",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didUnhideApplicationNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDidActivateApplicationNotification",
+    "OldPrintedName": "NSWorkspaceDidActivateApplication",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didActivateApplicationNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDidDeactivateApplicationNotification",
+    "OldPrintedName": "NSWorkspaceDidDeactivateApplication",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didDeactivateApplicationNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceVolumeLocalizedNameKey",
+    "OldPrintedName": "NSWorkspaceVolumeLocalizedNameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "localizedVolumeNameUserInfoKey",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceVolumeURLKey",
+    "OldPrintedName": "NSWorkspaceVolumeURLKey",
+    "OldTypeName": "",
+    "NewPrintedName": "volumeURLUserInfoKey",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceVolumeOldLocalizedNameKey",
+    "OldPrintedName": "NSWorkspaceVolumeOldLocalizedNameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "oldLocalizedVolumeNameUserInfoKey",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceVolumeOldURLKey",
+    "OldPrintedName": "NSWorkspaceVolumeOldURLKey",
+    "OldTypeName": "",
+    "NewPrintedName": "oldVolumeURLUserInfoKey",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDidMountNotification",
+    "OldPrintedName": "NSWorkspaceDidMount",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didMountNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDidUnmountNotification",
+    "OldPrintedName": "NSWorkspaceDidUnmount",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didUnmountNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceWillUnmountNotification",
+    "OldPrintedName": "NSWorkspaceWillUnmount",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willUnmountNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDidRenameVolumeNotification",
+    "OldPrintedName": "NSWorkspaceDidRenameVolume",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didRenameVolumeNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceWillPowerOffNotification",
+    "OldPrintedName": "NSWorkspaceWillPowerOff",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willPowerOffNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceWillSleepNotification",
+    "OldPrintedName": "NSWorkspaceWillSleep",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "willSleepNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDidWakeNotification",
+    "OldPrintedName": "NSWorkspaceDidWake",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didWakeNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceScreensDidSleepNotification",
+    "OldPrintedName": "NSWorkspaceScreensDidSleep",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "screensDidSleepNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceScreensDidWakeNotification",
+    "OldPrintedName": "NSWorkspaceScreensDidWake",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "screensDidWakeNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceSessionDidBecomeActiveNotification",
+    "OldPrintedName": "NSWorkspaceSessionDidBecomeActive",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "sessionDidBecomeActiveNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceSessionDidResignActiveNotification",
+    "OldPrintedName": "NSWorkspaceSessionDidResignActive",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "sessionDidResignActiveNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDidChangeFileLabelsNotification",
+    "OldPrintedName": "NSWorkspaceDidChangeFileLabels",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didChangeFileLabelsNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceActiveSpaceDidChangeNotification",
+    "OldPrintedName": "NSWorkspaceActiveSpaceDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "activeSpaceDidChangeNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceMoveOperation",
+    "OldPrintedName": "NSWorkspaceMoveOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "moveOperation",
+    "NewTypeName": "NSWorkspace.FileOperationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceCopyOperation",
+    "OldPrintedName": "NSWorkspaceCopyOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "copyOperation",
+    "NewTypeName": "NSWorkspace.FileOperationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceLinkOperation",
+    "OldPrintedName": "NSWorkspaceLinkOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "linkOperation",
+    "NewTypeName": "NSWorkspace.FileOperationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceCompressOperation",
+    "OldPrintedName": "NSWorkspaceCompressOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "compressOperation",
+    "NewTypeName": "NSWorkspace.FileOperationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDecompressOperation",
+    "OldPrintedName": "NSWorkspaceDecompressOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "decompressOperation",
+    "NewTypeName": "NSWorkspace.FileOperationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceEncryptOperation",
+    "OldPrintedName": "NSWorkspaceEncryptOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "encryptOperation",
+    "NewTypeName": "NSWorkspace.FileOperationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDecryptOperation",
+    "OldPrintedName": "NSWorkspaceDecryptOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "decryptOperation",
+    "NewTypeName": "NSWorkspace.FileOperationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDestroyOperation",
+    "OldPrintedName": "NSWorkspaceDestroyOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "destroyOperation",
+    "NewTypeName": "NSWorkspace.FileOperationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceRecycleOperation",
+    "OldPrintedName": "NSWorkspaceRecycleOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "recycleOperation",
+    "NewTypeName": "NSWorkspace.FileOperationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDuplicateOperation",
+    "OldPrintedName": "NSWorkspaceDuplicateOperation",
+    "OldTypeName": "",
+    "NewPrintedName": "duplicateOperation",
+    "NewTypeName": "NSWorkspace.FileOperationName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceDidPerformFileOperationNotification",
+    "OldPrintedName": "NSWorkspaceDidPerformFileOperation",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "didPerformFileOperationNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions",
+    "OldPrintedName": "NSWorkspaceLaunchOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "LaunchOptions",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions@NSWorkspaceLaunchAndPrint",
+    "OldPrintedName": "andPrint",
+    "OldTypeName": "NSWorkspaceLaunchOptions",
+    "NewPrintedName": "andPrint",
+    "NewTypeName": "NSWorkspace.LaunchOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions@NSWorkspaceLaunchWithErrorPresentation",
+    "OldPrintedName": "withErrorPresentation",
+    "OldTypeName": "NSWorkspaceLaunchOptions",
+    "NewPrintedName": "withErrorPresentation",
+    "NewTypeName": "NSWorkspace.LaunchOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions@NSWorkspaceLaunchInhibitingBackgroundOnly",
+    "OldPrintedName": "inhibitingBackgroundOnly",
+    "OldTypeName": "NSWorkspaceLaunchOptions",
+    "NewPrintedName": "inhibitingBackgroundOnly",
+    "NewTypeName": "NSWorkspace.LaunchOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions@NSWorkspaceLaunchWithoutAddingToRecents",
+    "OldPrintedName": "withoutAddingToRecents",
+    "OldTypeName": "NSWorkspaceLaunchOptions",
+    "NewPrintedName": "withoutAddingToRecents",
+    "NewTypeName": "NSWorkspace.LaunchOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions@NSWorkspaceLaunchWithoutActivation",
+    "OldPrintedName": "withoutActivation",
+    "OldTypeName": "NSWorkspaceLaunchOptions",
+    "NewPrintedName": "withoutActivation",
+    "NewTypeName": "NSWorkspace.LaunchOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions@NSWorkspaceLaunchAsync",
+    "OldPrintedName": "async",
+    "OldTypeName": "NSWorkspaceLaunchOptions",
+    "NewPrintedName": "async",
+    "NewTypeName": "NSWorkspace.LaunchOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions@NSWorkspaceLaunchNewInstance",
+    "OldPrintedName": "newInstance",
+    "OldTypeName": "NSWorkspaceLaunchOptions",
+    "NewPrintedName": "newInstance",
+    "NewTypeName": "NSWorkspace.LaunchOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions@NSWorkspaceLaunchAndHide",
+    "OldPrintedName": "andHide",
+    "OldTypeName": "NSWorkspaceLaunchOptions",
+    "NewPrintedName": "andHide",
+    "NewTypeName": "NSWorkspace.LaunchOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions@NSWorkspaceLaunchAndHideOthers",
+    "OldPrintedName": "andHideOthers",
+    "OldTypeName": "NSWorkspaceLaunchOptions",
+    "NewPrintedName": "andHideOthers",
+    "NewTypeName": "NSWorkspace.LaunchOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions@NSWorkspaceLaunchDefault",
+    "OldPrintedName": "default",
+    "OldTypeName": "NSWorkspaceLaunchOptions",
+    "NewPrintedName": "default",
+    "NewTypeName": "NSWorkspace.LaunchOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions@NSWorkspaceLaunchAllowingClassicStartup",
+    "OldPrintedName": "allowingClassicStartup",
+    "OldTypeName": "NSWorkspaceLaunchOptions",
+    "NewPrintedName": "allowingClassicStartup",
+    "NewTypeName": "NSWorkspace.LaunchOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceLaunchOptions@NSWorkspaceLaunchPreferringClassic",
+    "OldPrintedName": "preferringClassic",
+    "OldTypeName": "NSWorkspaceLaunchOptions",
+    "NewPrintedName": "preferringClassic",
+    "NewTypeName": "NSWorkspace.LaunchOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceIconCreationOptions",
+    "OldPrintedName": "NSWorkspaceIconCreationOptions",
+    "OldTypeName": "",
+    "NewPrintedName": "IconCreationOptions",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceIconCreationOptions@NSExcludeQuickDrawElementsIconCreationOption",
+    "OldPrintedName": "excludeQuickDrawElementsIconCreationOption",
+    "OldTypeName": "NSWorkspaceIconCreationOptions",
+    "NewPrintedName": "excludeQuickDrawElementsIconCreationOption",
+    "NewTypeName": "NSWorkspace.IconCreationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSWorkspaceIconCreationOptions@NSExclude10_4ElementsIconCreationOption",
+    "OldPrintedName": "exclude10_4ElementsIconCreationOption",
+    "OldTypeName": "NSWorkspaceIconCreationOptions",
+    "NewPrintedName": "exclude10_4ElementsIconCreationOption",
+    "NewTypeName": "NSWorkspace.IconCreationOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceLaunchConfigurationAppleEvent",
+    "OldPrintedName": "NSWorkspaceLaunchConfigurationAppleEvent",
+    "OldTypeName": "",
+    "NewPrintedName": "appleEvent",
+    "NewTypeName": "NSWorkspace.LaunchConfigurationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceLaunchConfigurationArguments",
+    "OldPrintedName": "NSWorkspaceLaunchConfigurationArguments",
+    "OldTypeName": "",
+    "NewPrintedName": "arguments",
+    "NewTypeName": "NSWorkspace.LaunchConfigurationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceLaunchConfigurationEnvironment",
+    "OldPrintedName": "NSWorkspaceLaunchConfigurationEnvironment",
+    "OldTypeName": "",
+    "NewPrintedName": "environment",
+    "NewTypeName": "NSWorkspace.LaunchConfigurationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceLaunchConfigurationArchitecture",
+    "OldPrintedName": "NSWorkspaceLaunchConfigurationArchitecture",
+    "OldTypeName": "",
+    "NewPrintedName": "architecture",
+    "NewTypeName": "NSWorkspace.LaunchConfigurationKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWorkspaceAccessibilityDisplayOptionsDidChangeNotification",
+    "OldPrintedName": "NSWorkspaceAccessibilityDisplayOptionsDidChange",
+    "OldTypeName": "NSNotification.Name",
+    "NewPrintedName": "accessibilityDisplayOptionsDidChangeNotification",
+    "NewTypeName": "NSWorkspace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAssetImageGeneratorApertureModeCleanAperture",
+    "OldPrintedName": "AVAssetImageGeneratorApertureModeCleanAperture",
+    "OldTypeName": "",
+    "NewPrintedName": "cleanAperture",
+    "NewTypeName": "AVAssetImageGeneratorApertureMode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAssetImageGeneratorApertureModeProductionAperture",
+    "OldPrintedName": "AVAssetImageGeneratorApertureModeProductionAperture",
+    "OldTypeName": "",
+    "NewPrintedName": "productionAperture",
+    "NewTypeName": "AVAssetImageGeneratorApertureMode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAssetImageGeneratorApertureModeEncodedPixels",
+    "OldPrintedName": "AVAssetImageGeneratorApertureModeEncodedPixels",
+    "OldTypeName": "",
+    "NewPrintedName": "encodedPixels",
+    "NewTypeName": "AVAssetImageGeneratorApertureMode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeAudioFallback",
+    "OldPrintedName": "AVTrackAssociationTypeAudioFallback",
+    "OldTypeName": "",
+    "NewPrintedName": "audioFallback",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeChapterList",
+    "OldPrintedName": "AVTrackAssociationTypeChapterList",
+    "OldTypeName": "",
+    "NewPrintedName": "chapterList",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeForcedSubtitlesOnly",
+    "OldPrintedName": "AVTrackAssociationTypeForcedSubtitlesOnly",
+    "OldTypeName": "",
+    "NewPrintedName": "forcedSubtitlesOnly",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeSelectionFollower",
+    "OldPrintedName": "AVTrackAssociationTypeSelectionFollower",
+    "OldTypeName": "",
+    "NewPrintedName": "selectionFollower",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeTimecode",
+    "OldPrintedName": "AVTrackAssociationTypeTimecode",
+    "OldTypeName": "",
+    "NewPrintedName": "timecode",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeMetadataReferent",
+    "OldPrintedName": "AVTrackAssociationTypeMetadataReferent",
+    "OldTypeName": "",
+    "NewPrintedName": "metadataReferent",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAudioTimePitchAlgorithmTimeDomain",
+    "OldPrintedName": "AVAudioTimePitchAlgorithmTimeDomain",
+    "OldTypeName": "",
+    "NewPrintedName": "timeDomain",
+    "NewTypeName": "AVAudioTimePitchAlgorithm"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAudioTimePitchAlgorithmSpectral",
+    "OldPrintedName": "AVAudioTimePitchAlgorithmSpectral",
+    "OldTypeName": "",
+    "NewPrintedName": "spectral",
+    "NewTypeName": "AVAudioTimePitchAlgorithm"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAudioTimePitchAlgorithmVarispeed",
+    "OldPrintedName": "AVAudioTimePitchAlgorithmVarispeed",
+    "OldTypeName": "",
+    "NewPrintedName": "varispeed",
+    "NewTypeName": "AVAudioTimePitchAlgorithm"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureDevicePosition",
+    "OldPrintedName": "AVCaptureDevicePosition",
+    "OldTypeName": "",
+    "NewPrintedName": "Position",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureFlashMode",
+    "OldPrintedName": "AVCaptureFlashMode",
+    "OldTypeName": "",
+    "NewPrintedName": "FlashMode",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureTorchMode",
+    "OldPrintedName": "AVCaptureTorchMode",
+    "OldTypeName": "",
+    "NewPrintedName": "TorchMode",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureFocusMode",
+    "OldPrintedName": "AVCaptureFocusMode",
+    "OldTypeName": "",
+    "NewPrintedName": "FocusMode",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureExposureMode",
+    "OldPrintedName": "AVCaptureExposureMode",
+    "OldTypeName": "",
+    "NewPrintedName": "ExposureMode",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureWhiteBalanceMode",
+    "OldPrintedName": "AVCaptureWhiteBalanceMode",
+    "OldTypeName": "",
+    "NewPrintedName": "WhiteBalanceMode",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@AVCaptureDeviceTransportControlsSpeed",
+    "OldPrintedName": "AVCaptureDeviceTransportControlsSpeed",
+    "OldTypeName": "",
+    "NewPrintedName": "TransportControlsSpeed",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@AVCaptureDeviceTransportControlsPlaybackMode",
+    "OldPrintedName": "AVCaptureDeviceTransportControlsPlaybackMode",
+    "OldTypeName": "",
+    "NewPrintedName": "TransportControlsPlaybackMode",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(cs)AVCaptureDeviceFormat",
+    "OldPrintedName": "AVCaptureDeviceFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "Format",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(cs)AVFrameRateRange",
+    "OldPrintedName": "AVFrameRateRange",
+    "OldTypeName": "",
+    "NewPrintedName": "FrameRateRange",
+    "NewTypeName": "AVCaptureDevice.Format"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(cs)AVCaptureDeviceInputSource",
+    "OldPrintedName": "AVCaptureDeviceInputSource",
+    "OldTypeName": "",
+    "NewPrintedName": "InputSource",
+    "NewTypeName": "AVCaptureDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetPhoto",
+    "OldPrintedName": "AVCaptureSessionPresetPhoto",
+    "OldTypeName": "",
+    "NewPrintedName": "photo",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetHigh",
+    "OldPrintedName": "AVCaptureSessionPresetHigh",
+    "OldTypeName": "",
+    "NewPrintedName": "high",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetMedium",
+    "OldPrintedName": "AVCaptureSessionPresetMedium",
+    "OldTypeName": "",
+    "NewPrintedName": "medium",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetLow",
+    "OldPrintedName": "AVCaptureSessionPresetLow",
+    "OldTypeName": "",
+    "NewPrintedName": "low",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPreset320x240",
+    "OldPrintedName": "AVCaptureSessionPreset320x240",
+    "OldTypeName": "",
+    "NewPrintedName": "qvga320x240",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPreset352x288",
+    "OldPrintedName": "AVCaptureSessionPreset352x288",
+    "OldTypeName": "",
+    "NewPrintedName": "cif352x288",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPreset640x480",
+    "OldPrintedName": "AVCaptureSessionPreset640x480",
+    "OldTypeName": "",
+    "NewPrintedName": "vga640x480",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPreset960x540",
+    "OldPrintedName": "AVCaptureSessionPreset960x540",
+    "OldTypeName": "",
+    "NewPrintedName": "qHD960x540",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPreset1280x720",
+    "OldPrintedName": "AVCaptureSessionPreset1280x720",
+    "OldTypeName": "",
+    "NewPrintedName": "hd1280x720",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetiFrame960x540",
+    "OldPrintedName": "AVCaptureSessionPresetiFrame960x540",
+    "OldTypeName": "",
+    "NewPrintedName": "iFrame960x540",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVCaptureSessionPresetiFrame1280x720",
+    "OldPrintedName": "AVCaptureSessionPresetiFrame1280x720",
+    "OldTypeName": "",
+    "NewPrintedName": "iFrame1280x720",
+    "NewTypeName": "AVCaptureSession.Preset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeQuickTimeMovie",
+    "OldPrintedName": "AVFileTypeQuickTimeMovie",
+    "OldTypeName": "",
+    "NewPrintedName": "mov",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeMPEG4",
+    "OldPrintedName": "AVFileTypeMPEG4",
+    "OldTypeName": "",
+    "NewPrintedName": "mp4",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAppleM4V",
+    "OldPrintedName": "AVFileTypeAppleM4V",
+    "OldTypeName": "",
+    "NewPrintedName": "m4v",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAppleM4A",
+    "OldPrintedName": "AVFileTypeAppleM4A",
+    "OldTypeName": "",
+    "NewPrintedName": "m4a",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileType3GPP",
+    "OldPrintedName": "AVFileType3GPP",
+    "OldTypeName": "",
+    "NewPrintedName": "mobile3GPP",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileType3GPP2",
+    "OldPrintedName": "AVFileType3GPP2",
+    "OldTypeName": "",
+    "NewPrintedName": "mobile3GPP2",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeCoreAudioFormat",
+    "OldPrintedName": "AVFileTypeCoreAudioFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "caf",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeWAVE",
+    "OldPrintedName": "AVFileTypeWAVE",
+    "OldTypeName": "",
+    "NewPrintedName": "wav",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAIFF",
+    "OldPrintedName": "AVFileTypeAIFF",
+    "OldTypeName": "",
+    "NewPrintedName": "aiff",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAIFC",
+    "OldPrintedName": "AVFileTypeAIFC",
+    "OldTypeName": "",
+    "NewPrintedName": "aifc",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAMR",
+    "OldPrintedName": "AVFileTypeAMR",
+    "OldTypeName": "",
+    "NewPrintedName": "amr",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeMPEGLayer3",
+    "OldPrintedName": "AVFileTypeMPEGLayer3",
+    "OldTypeName": "",
+    "NewPrintedName": "mp3",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeSunAU",
+    "OldPrintedName": "AVFileTypeSunAU",
+    "OldTypeName": "",
+    "NewPrintedName": "au",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAC3",
+    "OldPrintedName": "AVFileTypeAC3",
+    "OldTypeName": "",
+    "NewPrintedName": "ac3",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeEnhancedAC3",
+    "OldPrintedName": "AVFileTypeEnhancedAC3",
+    "OldTypeName": "",
+    "NewPrintedName": "eac3",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVLayerVideoGravityResizeAspect",
+    "OldPrintedName": "AVLayerVideoGravityResizeAspect",
+    "OldTypeName": "",
+    "NewPrintedName": "resizeAspect",
+    "NewTypeName": "AVLayerVideoGravity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVLayerVideoGravityResizeAspectFill",
+    "OldPrintedName": "AVLayerVideoGravityResizeAspectFill",
+    "OldTypeName": "",
+    "NewPrintedName": "resizeAspectFill",
+    "NewTypeName": "AVLayerVideoGravity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVLayerVideoGravityResize",
+    "OldPrintedName": "AVLayerVideoGravityResize",
+    "OldTypeName": "",
+    "NewPrintedName": "resize",
+    "NewTypeName": "AVLayerVideoGravity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicVisual",
+    "OldPrintedName": "AVMediaCharacteristicVisual",
+    "OldTypeName": "",
+    "NewPrintedName": "visual",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicAudible",
+    "OldPrintedName": "AVMediaCharacteristicAudible",
+    "OldTypeName": "",
+    "NewPrintedName": "audible",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicLegible",
+    "OldPrintedName": "AVMediaCharacteristicLegible",
+    "OldTypeName": "",
+    "NewPrintedName": "legible",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicFrameBased",
+    "OldPrintedName": "AVMediaCharacteristicFrameBased",
+    "OldTypeName": "",
+    "NewPrintedName": "frameBased",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicUsesWideGamutColorSpace",
+    "OldPrintedName": "AVMediaCharacteristicUsesWideGamutColorSpace",
+    "OldTypeName": "",
+    "NewPrintedName": "usesWideGamutColorSpace",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicIsMainProgramContent",
+    "OldPrintedName": "AVMediaCharacteristicIsMainProgramContent",
+    "OldTypeName": "",
+    "NewPrintedName": "isMainProgramContent",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicIsAuxiliaryContent",
+    "OldPrintedName": "AVMediaCharacteristicIsAuxiliaryContent",
+    "OldTypeName": "",
+    "NewPrintedName": "isAuxiliaryContent",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicContainsOnlyForcedSubtitles",
+    "OldPrintedName": "AVMediaCharacteristicContainsOnlyForcedSubtitles",
+    "OldTypeName": "",
+    "NewPrintedName": "containsOnlyForcedSubtitles",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicTranscribesSpokenDialogForAccessibility",
+    "OldPrintedName": "AVMediaCharacteristicTranscribesSpokenDialogForAccessibility",
+    "OldTypeName": "",
+    "NewPrintedName": "transcribesSpokenDialogForAccessibility",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicDescribesMusicAndSoundForAccessibility",
+    "OldPrintedName": "AVMediaCharacteristicDescribesMusicAndSoundForAccessibility",
+    "OldTypeName": "",
+    "NewPrintedName": "describesMusicAndSoundForAccessibility",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicEasyToRead",
+    "OldPrintedName": "AVMediaCharacteristicEasyToRead",
+    "OldTypeName": "",
+    "NewPrintedName": "easyToRead",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicDescribesVideoForAccessibility",
+    "OldPrintedName": "AVMediaCharacteristicDescribesVideoForAccessibility",
+    "OldTypeName": "",
+    "NewPrintedName": "describesVideoForAccessibility",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicLanguageTranslation",
+    "OldPrintedName": "AVMediaCharacteristicLanguageTranslation",
+    "OldTypeName": "",
+    "NewPrintedName": "languageTranslation",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicDubbedTranslation",
+    "OldPrintedName": "AVMediaCharacteristicDubbedTranslation",
+    "OldTypeName": "",
+    "NewPrintedName": "dubbedTranslation",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicVoiceOverTranslation",
+    "OldPrintedName": "AVMediaCharacteristicVoiceOverTranslation",
+    "OldTypeName": "",
+    "NewPrintedName": "voiceOverTranslation",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeVideo",
+    "OldPrintedName": "AVMediaTypeVideo",
+    "OldTypeName": "",
+    "NewPrintedName": "video",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeAudio",
+    "OldPrintedName": "AVMediaTypeAudio",
+    "OldTypeName": "",
+    "NewPrintedName": "audio",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeText",
+    "OldPrintedName": "AVMediaTypeText",
+    "OldTypeName": "",
+    "NewPrintedName": "text",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeClosedCaption",
+    "OldPrintedName": "AVMediaTypeClosedCaption",
+    "OldTypeName": "",
+    "NewPrintedName": "closedCaption",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeSubtitle",
+    "OldPrintedName": "AVMediaTypeSubtitle",
+    "OldTypeName": "",
+    "NewPrintedName": "subtitle",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeTimecode",
+    "OldPrintedName": "AVMediaTypeTimecode",
+    "OldTypeName": "",
+    "NewPrintedName": "timecode",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeMetadata",
+    "OldPrintedName": "AVMediaTypeMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeMuxed",
+    "OldPrintedName": "AVMediaTypeMuxed",
+    "OldTypeName": "",
+    "NewPrintedName": "muxed",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataExtraAttributeValueURIKey",
+    "OldPrintedName": "AVMetadataExtraAttributeValueURIKey",
+    "OldTypeName": "",
+    "NewPrintedName": "valueURI",
+    "NewTypeName": "AVMetadataExtraAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataExtraAttributeBaseURIKey",
+    "OldPrintedName": "AVMetadataExtraAttributeBaseURIKey",
+    "OldTypeName": "",
+    "NewPrintedName": "baseURI",
+    "NewTypeName": "AVMetadataExtraAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataExtraAttributeInfoKey",
+    "OldPrintedName": "AVMetadataExtraAttributeInfoKey",
+    "OldTypeName": "",
+    "NewPrintedName": "info",
+    "NewTypeName": "AVMetadataExtraAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatQuickTimeUserData",
+    "OldPrintedName": "AVMetadataFormatQuickTimeUserData",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserData",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatISOUserData",
+    "OldPrintedName": "AVMetadataFormatISOUserData",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserData",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatQuickTimeMetadata",
+    "OldPrintedName": "AVMetadataFormatQuickTimeMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadata",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatiTunesMetadata",
+    "OldPrintedName": "AVMetadataFormatiTunesMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadata",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatID3Metadata",
+    "OldPrintedName": "AVMetadataFormatID3Metadata",
+    "OldTypeName": "",
+    "NewPrintedName": "id3Metadata",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatHLSMetadata",
+    "OldPrintedName": "AVMetadataFormatHLSMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "hlsMetadata",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierTitle",
+    "OldPrintedName": "AVMetadataCommonIdentifierTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierCreator",
+    "OldPrintedName": "AVMetadataCommonIdentifierCreator",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierCreator",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierSubject",
+    "OldPrintedName": "AVMetadataCommonIdentifierSubject",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierSubject",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierDescription",
+    "OldPrintedName": "AVMetadataCommonIdentifierDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierPublisher",
+    "OldPrintedName": "AVMetadataCommonIdentifierPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierContributor",
+    "OldPrintedName": "AVMetadataCommonIdentifierContributor",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierContributor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierCreationDate",
+    "OldPrintedName": "AVMetadataCommonIdentifierCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierCreationDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierLastModifiedDate",
+    "OldPrintedName": "AVMetadataCommonIdentifierLastModifiedDate",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierLastModifiedDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierType",
+    "OldPrintedName": "AVMetadataCommonIdentifierType",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierType",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierFormat",
+    "OldPrintedName": "AVMetadataCommonIdentifierFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierFormat",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierAssetIdentifier",
+    "OldPrintedName": "AVMetadataCommonIdentifierAssetIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierAssetIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierSource",
+    "OldPrintedName": "AVMetadataCommonIdentifierSource",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierSource",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierLanguage",
+    "OldPrintedName": "AVMetadataCommonIdentifierLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierLanguage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierRelation",
+    "OldPrintedName": "AVMetadataCommonIdentifierRelation",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierRelation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierLocation",
+    "OldPrintedName": "AVMetadataCommonIdentifierLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierLocation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierCopyrights",
+    "OldPrintedName": "AVMetadataCommonIdentifierCopyrights",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierCopyrights",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierAlbumName",
+    "OldPrintedName": "AVMetadataCommonIdentifierAlbumName",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierAlbumName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierAuthor",
+    "OldPrintedName": "AVMetadataCommonIdentifierAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierArtist",
+    "OldPrintedName": "AVMetadataCommonIdentifierArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierArtwork",
+    "OldPrintedName": "AVMetadataCommonIdentifierArtwork",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierArtwork",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierMake",
+    "OldPrintedName": "AVMetadataCommonIdentifierMake",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierMake",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierModel",
+    "OldPrintedName": "AVMetadataCommonIdentifierModel",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierModel",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierSoftware",
+    "OldPrintedName": "AVMetadataCommonIdentifierSoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierSoftware",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataAlbum",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataAlbum",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataArranger",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataArranger",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataArtist",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataAuthor",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataChapter",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataChapter",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataChapter",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataComment",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataComment",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataComment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataComposer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataComposer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataCopyright",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataCreationDate",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataCreationDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataDescription",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataDirector",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataDirector",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataDisclaimer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataDisclaimer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataDisclaimer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataEncodedBy",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataEncodedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataFullName",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataFullName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataFullName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataGenre",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataHostComputer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataHostComputer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataHostComputer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataInformation",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataInformation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataKeywords",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataKeywords",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeywords",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataMake",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataMake",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataMake",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataModel",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataModel",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataModel",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataOriginalArtist",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataOriginalArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataOriginalFormat",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataOriginalFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataOriginalFormat",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataOriginalSource",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataOriginalSource",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataOriginalSource",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataPerformers",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataPerformers",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataPerformers",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataProducer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataProducer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataPublisher",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataProduct",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataProduct",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataProduct",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataSoftware",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataSoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataSoftware",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataSpecialPlaybackRequirements",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataSpecialPlaybackRequirements",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataSpecialPlaybackRequirements",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataTrack",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataTrack",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataTrack",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataWarning",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataWarning",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataWarning",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataWriter",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataWriter",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataWriter",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataURLLink",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataURLLink",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataURLLink",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataLocationISO6709",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataLocationISO6709",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataLocationISO6709",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataTrackName",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataTrackName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataTrackName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataCredits",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataCredits",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataPhonogramRights",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataPhonogramRights",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataTaggedCharacteristic",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataTaggedCharacteristic",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataTaggedCharacteristic",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierISOUserDataCopyright",
+    "OldPrintedName": "AVMetadataIdentifierISOUserDataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierISOUserDataDate",
+    "OldPrintedName": "AVMetadataIdentifierISOUserDataDate",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierISOUserDataTaggedCharacteristic",
+    "OldPrintedName": "AVMetadataIdentifierISOUserDataTaggedCharacteristic",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataTaggedCharacteristic",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataCopyright",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataAuthor",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataPerformer",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataPerformer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataGenre",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataRecordingYear",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataRecordingYear",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataRecordingYear",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataLocation",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataLocation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataTitle",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataDescription",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataCollection",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataCollection",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataCollection",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataUserRating",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataUserRating",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataUserRating",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataThumbnail",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataThumbnail",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataThumbnail",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataAlbumAndTrack",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataAlbumAndTrack",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataAlbumAndTrack",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataKeywordList",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataKeywordList",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataKeywordList",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataMediaClassification",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataMediaClassification",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataMediaClassification",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataMediaRating",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataMediaRating",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataMediaRating",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataAuthor",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataComment",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataComment",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataComment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCopyright",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCreationDate",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCreationDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDirector",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDirector",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDisplayName",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDisplayName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDisplayName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataInformation",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataInformation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataKeywords",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataKeywords",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeywords",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataProducer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataProducer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataPublisher",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataAlbum",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataAlbum",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataArtist",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataArtwork",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataArtwork",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataArtwork",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDescription",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataSoftware",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataSoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataSoftware",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataYear",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataYear",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataYear",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataGenre",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataiXML",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataiXML",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataiXML",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationISO6709",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationISO6709",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationISO6709",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataMake",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataMake",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataMake",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataModel",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataModel",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataModel",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataArranger",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataArranger",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataEncodedBy",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataEncodedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataOriginalArtist",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataOriginalArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataPerformer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataPerformer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataComposer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataComposer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCredits",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCredits",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataPhonogramRights",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataPhonogramRights",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCameraIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCameraIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCameraIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCameraFrameReadoutTime",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCameraFrameReadoutTime",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCameraFrameReadoutTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataTitle",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCollectionUser",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCollectionUser",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCollectionUser",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataRatingUser",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataRatingUser",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataRatingUser",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationName",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationBody",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationBody",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationBody",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationNote",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationNote",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationNote",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationRole",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationRole",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationRole",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationDate",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDirectionFacing",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDirectionFacing",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDirectionFacing",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDirectionMotion",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDirectionMotion",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDirectionMotion",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataPreferredAffineTransform",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataPreferredAffineTransform",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataPreferredAffineTransform",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDetectedFace",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDetectedFace",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDetectedFace",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataVideoOrientation",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataVideoOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataVideoOrientation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataContentIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataContentIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataContentIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAlbum",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAlbum",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataArtist",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataUserComment",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataUserComment",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataUserComment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataCoverArt",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataCoverArt",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataCoverArt",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataCopyright",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataReleaseDate",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataReleaseDate",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataReleaseDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataEncodedBy",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataEncodedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPredefinedGenre",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPredefinedGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPredefinedGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataUserGenre",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataUserGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataUserGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataSongName",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataSongName",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataSongName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataTrackSubTitle",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataTrackSubTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataTrackSubTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataEncodingTool",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataEncodingTool",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataEncodingTool",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataComposer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataComposer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAlbumArtist",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAlbumArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAlbumArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAccountKind",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAccountKind",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAccountKind",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAppleID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAppleID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAppleID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataArtistID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataArtistID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataArtistID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataSongID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataSongID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataSongID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataDiscCompilation",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataDiscCompilation",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataDiscCompilation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataDiscNumber",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataDiscNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataDiscNumber",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataGenreID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataGenreID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataGenreID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataGrouping",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataGrouping",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataGrouping",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPlaylistID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPlaylistID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPlaylistID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataContentRating",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataContentRating",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataContentRating",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataBeatsPerMin",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataBeatsPerMin",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataBeatsPerMin",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataTrackNumber",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataTrackNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataTrackNumber",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataArtDirector",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataArtDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataArtDirector",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataArranger",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataArranger",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAuthor",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataLyrics",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataLyrics",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataLyrics",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAcknowledgement",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAcknowledgement",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAcknowledgement",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataConductor",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataConductor",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataConductor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataDescription",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataDirector",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataDirector",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataEQ",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataEQ",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataEQ",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataLinerNotes",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataLinerNotes",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataLinerNotes",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataRecordCompany",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataRecordCompany",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataRecordCompany",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataOriginalArtist",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataOriginalArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPhonogramRights",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPhonogramRights",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataProducer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataProducer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPerformer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPerformer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPublisher",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataSoundEngineer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataSoundEngineer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataSoundEngineer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataSoloist",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataSoloist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataSoloist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataCredits",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataCredits",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataThanks",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataThanks",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataThanks",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataOnlineExtras",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataOnlineExtras",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataOnlineExtras",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataExecProducer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataExecProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataExecProducer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAudioEncryption",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAudioEncryption",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAudioEncryption",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAttachedPicture",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAttachedPicture",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAttachedPicture",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAudioSeekPointIndex",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAudioSeekPointIndex",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAudioSeekPointIndex",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataComments",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataComments",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataComments",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCommercial",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCommercial",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCommercial",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCommerical",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCommerical",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCommerical",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEncryption",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEncryption",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEncryption",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEqualization",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEqualization",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEqualization",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEqualization2",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEqualization2",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEqualization2",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEventTimingCodes",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEventTimingCodes",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEventTimingCodes",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataGeneralEncapsulatedObject",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataGeneralEncapsulatedObject",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataGeneralEncapsulatedObject",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataGroupIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataGroupIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataGroupIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInvolvedPeopleList_v23",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInvolvedPeopleList_v23",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInvolvedPeopleList_v23",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLink",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLink",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLink",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMusicCDIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMusicCDIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMusicCDIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMPEGLocationLookupTable",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMPEGLocationLookupTable",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMPEGLocationLookupTable",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOwnership",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOwnership",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOwnership",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPrivate",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPrivate",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPrivate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPlayCounter",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPlayCounter",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPlayCounter",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPopularimeter",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPopularimeter",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPopularimeter",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPositionSynchronization",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPositionSynchronization",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPositionSynchronization",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRecommendedBufferSize",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRecommendedBufferSize",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRecommendedBufferSize",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRelativeVolumeAdjustment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment2",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment2",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRelativeVolumeAdjustment2",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataReverb",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataReverb",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataReverb",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSeek",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSeek",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSeek",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSignature",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSignature",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSignature",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSynchronizedLyric",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSynchronizedLyric",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSynchronizedLyric",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSynchronizedTempoCodes",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSynchronizedTempoCodes",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSynchronizedTempoCodes",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAlbumTitle",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAlbumTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAlbumTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataBeatsPerMinute",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataBeatsPerMinute",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataBeatsPerMinute",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataComposer",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataComposer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataContentType",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataContentType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataContentType",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCopyright",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataDate",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataDate",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEncodingTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEncodingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEncodingTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPlaylistDelay",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPlaylistDelay",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPlaylistDelay",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalReleaseTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalReleaseTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalReleaseTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRecordingTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRecordingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRecordingTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataReleaseTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataReleaseTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataReleaseTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTaggingTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTaggingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTaggingTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEncodedBy",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEncodedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLyricist",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLyricist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLyricist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataFileType",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataFileType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataFileType",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInvolvedPeopleList_v24",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInvolvedPeopleList_v24",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInvolvedPeopleList_v24",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataContentGroupDescription",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataContentGroupDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataContentGroupDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTitleDescription",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTitleDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTitleDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSubTitle",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSubTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSubTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInitialKey",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInitialKey",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInitialKey",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLanguage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLanguage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLength",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLength",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLength",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMusicianCreditsList",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMusicianCreditsList",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMusicianCreditsList",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMediaType",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMediaType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMediaType",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMood",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMood",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMood",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalAlbumTitle",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalAlbumTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalAlbumTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalFilename",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalFilename",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalFilename",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalLyricist",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalLyricist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalLyricist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalArtist",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalReleaseYear",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalReleaseYear",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalReleaseYear",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataFileOwner",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataFileOwner",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataFileOwner",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLeadPerformer",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLeadPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLeadPerformer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataBand",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataBand",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataBand",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataConductor",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataConductor",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataConductor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataModifiedBy",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataModifiedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataModifiedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPartOfASet",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPartOfASet",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPartOfASet",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataProducedNotice",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataProducedNotice",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataProducedNotice",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPublisher",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTrackNumber",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTrackNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTrackNumber",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRecordingDates",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRecordingDates",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRecordingDates",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInternetRadioStationName",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInternetRadioStationName",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInternetRadioStationName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInternetRadioStationOwner",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInternetRadioStationOwner",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInternetRadioStationOwner",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSize",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSize",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSize",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAlbumSortOrder",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAlbumSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAlbumSortOrder",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPerformerSortOrder",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPerformerSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPerformerSortOrder",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTitleSortOrder",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTitleSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTitleSortOrder",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInternationalStandardRecordingCode",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInternationalStandardRecordingCode",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInternationalStandardRecordingCode",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEncodedWith",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEncodedWith",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEncodedWith",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSetSubtitle",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSetSubtitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSetSubtitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataYear",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataYear",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataYear",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataUserText",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataUserText",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataUserText",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataUniqueFileIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataUniqueFileIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataUniqueFileIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTermsOfUse",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTermsOfUse",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTermsOfUse",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataUnsynchronizedLyric",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataUnsynchronizedLyric",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataUnsynchronizedLyric",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCommercialInformation",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCommercialInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCommercialInformation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCopyrightInformation",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCopyrightInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCopyrightInformation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialAudioFileWebpage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialAudioFileWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialAudioFileWebpage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialArtistWebpage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialArtistWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialArtistWebpage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialAudioSourceWebpage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialAudioSourceWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialAudioSourceWebpage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialInternetRadioStationHomepage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialInternetRadioStationHomepage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialInternetRadioStationHomepage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPayment",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPayment",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPayment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialPublisherWebpage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialPublisherWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialPublisherWebpage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataUserURL",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataUserURL",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataUserURL",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierIcyMetadataStreamTitle",
+    "OldPrintedName": "AVMetadataIdentifierIcyMetadataStreamTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "icyMetadataStreamTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierIcyMetadataStreamURL",
+    "OldPrintedName": "AVMetadataIdentifierIcyMetadataStreamURL",
+    "OldTypeName": "",
+    "NewPrintedName": "icyMetadataStreamURL",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyTitle",
+    "OldPrintedName": "AVMetadataCommonKeyTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyCreator",
+    "OldPrintedName": "AVMetadataCommonKeyCreator",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyCreator",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeySubject",
+    "OldPrintedName": "AVMetadataCommonKeySubject",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeySubject",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyDescription",
+    "OldPrintedName": "AVMetadataCommonKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyPublisher",
+    "OldPrintedName": "AVMetadataCommonKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyContributor",
+    "OldPrintedName": "AVMetadataCommonKeyContributor",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyContributor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyCreationDate",
+    "OldPrintedName": "AVMetadataCommonKeyCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyCreationDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyLastModifiedDate",
+    "OldPrintedName": "AVMetadataCommonKeyLastModifiedDate",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyLastModifiedDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyType",
+    "OldPrintedName": "AVMetadataCommonKeyType",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyType",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyFormat",
+    "OldPrintedName": "AVMetadataCommonKeyFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyFormat",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyIdentifier",
+    "OldPrintedName": "AVMetadataCommonKeyIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeySource",
+    "OldPrintedName": "AVMetadataCommonKeySource",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeySource",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyLanguage",
+    "OldPrintedName": "AVMetadataCommonKeyLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyLanguage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyRelation",
+    "OldPrintedName": "AVMetadataCommonKeyRelation",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyRelation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyLocation",
+    "OldPrintedName": "AVMetadataCommonKeyLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyLocation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyCopyrights",
+    "OldPrintedName": "AVMetadataCommonKeyCopyrights",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyCopyrights",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyAlbumName",
+    "OldPrintedName": "AVMetadataCommonKeyAlbumName",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyAlbumName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyAuthor",
+    "OldPrintedName": "AVMetadataCommonKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyArtist",
+    "OldPrintedName": "AVMetadataCommonKeyArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyArtwork",
+    "OldPrintedName": "AVMetadataCommonKeyArtwork",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyArtwork",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyMake",
+    "OldPrintedName": "AVMetadataCommonKeyMake",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyMake",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyModel",
+    "OldPrintedName": "AVMetadataCommonKeyModel",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyModel",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeySoftware",
+    "OldPrintedName": "AVMetadataCommonKeySoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeySoftware",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyAlbum",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyAlbum",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyArranger",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyArranger",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyArtist",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyAuthor",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyChapter",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyChapter",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyChapter",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyComment",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyComment",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyComment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyComposer",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyComposer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyCopyright",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyCreationDate",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyCreationDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyDescription",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyDirector",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyDirector",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyDisclaimer",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyDisclaimer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyDisclaimer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyEncodedBy",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyEncodedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyFullName",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyFullName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyFullName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyGenre",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyHostComputer",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyHostComputer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyHostComputer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyInformation",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyInformation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyKeywords",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyKeywords",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyKeywords",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyMake",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyMake",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyMake",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyModel",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyModel",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyModel",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyOriginalArtist",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyOriginalArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyOriginalFormat",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyOriginalFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyOriginalFormat",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyOriginalSource",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyOriginalSource",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyOriginalSource",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyPerformers",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyPerformers",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyPerformers",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyProducer",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyProducer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyPublisher",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyProduct",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyProduct",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyProduct",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeySoftware",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeySoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeySoftware",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeySpecialPlaybackRequirements",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeySpecialPlaybackRequirements",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeySpecialPlaybackRequirements",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyTrack",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyTrack",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyTrack",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyWarning",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyWarning",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyWarning",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyWriter",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyWriter",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyWriter",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyURLLink",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyURLLink",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyURLLink",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyLocationISO6709",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyLocationISO6709",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyLocationISO6709",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyTrackName",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyTrackName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyTrackName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyCredits",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyCredits",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyPhonogramRights",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyPhonogramRights",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyTaggedCharacteristic",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyTaggedCharacteristic",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyTaggedCharacteristic",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataISOUserDataKeyCopyright",
+    "OldPrintedName": "AVMetadataISOUserDataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataISOUserDataKeyTaggedCharacteristic",
+    "OldPrintedName": "AVMetadataISOUserDataKeyTaggedCharacteristic",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataKeyTaggedCharacteristic",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataISOUserDataKeyDate",
+    "OldPrintedName": "AVMetadataISOUserDataKeyDate",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataKeyDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyCopyright",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyAuthor",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyPerformer",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyPerformer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyGenre",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyRecordingYear",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyRecordingYear",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyRecordingYear",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyLocation",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyLocation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyTitle",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyDescription",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyCollection",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyCollection",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyCollection",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyUserRating",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyUserRating",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyUserRating",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyThumbnail",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyThumbnail",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyThumbnail",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyAlbumAndTrack",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyAlbumAndTrack",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyAlbumAndTrack",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyKeywordList",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyKeywordList",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyKeywordList",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyMediaClassification",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyMediaClassification",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyMediaClassification",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyMediaRating",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyMediaRating",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyMediaRating",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyAuthor",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyComment",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyComment",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyComment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCopyright",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCreationDate",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCreationDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDirector",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDirector",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDisplayName",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDisplayName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDisplayName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyInformation",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyInformation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyKeywords",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyKeywords",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyKeywords",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyProducer",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyProducer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyPublisher",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyAlbum",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyAlbum",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyArtist",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyArtwork",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyArtwork",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyArtwork",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDescription",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeySoftware",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeySoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeySoftware",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyYear",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyYear",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyYear",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyGenre",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyiXML",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyiXML",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyiXML",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationISO6709",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationISO6709",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationISO6709",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyMake",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyMake",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyMake",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyModel",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyModel",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyModel",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyArranger",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyArranger",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyEncodedBy",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyEncodedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyOriginalArtist",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyOriginalArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyPerformer",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyPerformer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyComposer",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyComposer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCredits",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCredits",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyPhonogramRights",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyPhonogramRights",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCameraIdentifier",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCameraIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCameraIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCameraFrameReadoutTime",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCameraFrameReadoutTime",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCameraFrameReadoutTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyTitle",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCollectionUser",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCollectionUser",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCollectionUser",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyRatingUser",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyRatingUser",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyRatingUser",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationName",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationBody",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationBody",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationBody",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationNote",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationNote",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationNote",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationRole",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationRole",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationRole",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationDate",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDirectionFacing",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDirectionFacing",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDirectionFacing",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDirectionMotion",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDirectionMotion",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDirectionMotion",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyContentIdentifier",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyContentIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyContentIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAlbum",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAlbum",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyArtist",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyUserComment",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyUserComment",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyUserComment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyCoverArt",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyCoverArt",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyCoverArt",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyCopyright",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyReleaseDate",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyReleaseDate",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyReleaseDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyEncodedBy",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyEncodedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPredefinedGenre",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPredefinedGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPredefinedGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyUserGenre",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyUserGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyUserGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeySongName",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeySongName",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeySongName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyTrackSubTitle",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyTrackSubTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyTrackSubTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyEncodingTool",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyEncodingTool",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyEncodingTool",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyComposer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyComposer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAlbumArtist",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAlbumArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAlbumArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAccountKind",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAccountKind",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAccountKind",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAppleID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAppleID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAppleID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyArtistID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyArtistID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyArtistID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeySongID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeySongID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeySongID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyDiscCompilation",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyDiscCompilation",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyDiscCompilation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyDiscNumber",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyDiscNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyDiscNumber",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyGenreID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyGenreID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyGenreID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyGrouping",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyGrouping",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyGrouping",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPlaylistID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPlaylistID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPlaylistID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyContentRating",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyContentRating",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyContentRating",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyBeatsPerMin",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyBeatsPerMin",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyBeatsPerMin",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyTrackNumber",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyTrackNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyTrackNumber",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyArtDirector",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyArtDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyArtDirector",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyArranger",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyArranger",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAuthor",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyLyrics",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyLyrics",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyLyrics",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAcknowledgement",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAcknowledgement",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAcknowledgement",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyConductor",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyConductor",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyConductor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyDescription",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyDirector",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyDirector",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyEQ",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyEQ",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyEQ",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyLinerNotes",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyLinerNotes",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyLinerNotes",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyRecordCompany",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyRecordCompany",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyRecordCompany",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyOriginalArtist",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyOriginalArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPhonogramRights",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPhonogramRights",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyProducer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyProducer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPerformer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPerformer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPublisher",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeySoundEngineer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeySoundEngineer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeySoundEngineer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeySoloist",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeySoloist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeySoloist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyCredits",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyCredits",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyThanks",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyThanks",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyThanks",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyOnlineExtras",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyOnlineExtras",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyOnlineExtras",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyExecProducer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyExecProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyExecProducer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAudioEncryption",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAudioEncryption",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAudioEncryption",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAttachedPicture",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAttachedPicture",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAttachedPicture",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAudioSeekPointIndex",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAudioSeekPointIndex",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAudioSeekPointIndex",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyComments",
+    "OldPrintedName": "AVMetadataID3MetadataKeyComments",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyComments",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCommercial",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCommercial",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCommercial",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCommerical",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCommerical",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCommerical",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEncryption",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEncryption",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEncryption",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEqualization",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEqualization",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEqualization",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEqualization2",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEqualization2",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEqualization2",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEventTimingCodes",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEventTimingCodes",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEventTimingCodes",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyGeneralEncapsulatedObject",
+    "OldPrintedName": "AVMetadataID3MetadataKeyGeneralEncapsulatedObject",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyGeneralEncapsulatedObject",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyGroupIdentifier",
+    "OldPrintedName": "AVMetadataID3MetadataKeyGroupIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyGroupIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInvolvedPeopleList_v23",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInvolvedPeopleList_v23",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInvolvedPeopleList_v23",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLink",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLink",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLink",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMusicCDIdentifier",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMusicCDIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMusicCDIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMPEGLocationLookupTable",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMPEGLocationLookupTable",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMPEGLocationLookupTable",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOwnership",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOwnership",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOwnership",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPrivate",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPrivate",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPrivate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPlayCounter",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPlayCounter",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPlayCounter",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPopularimeter",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPopularimeter",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPopularimeter",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPositionSynchronization",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPositionSynchronization",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPositionSynchronization",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRecommendedBufferSize",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRecommendedBufferSize",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRecommendedBufferSize",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRelativeVolumeAdjustment",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRelativeVolumeAdjustment",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRelativeVolumeAdjustment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRelativeVolumeAdjustment2",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRelativeVolumeAdjustment2",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRelativeVolumeAdjustment2",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyReverb",
+    "OldPrintedName": "AVMetadataID3MetadataKeyReverb",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyReverb",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySeek",
+    "OldPrintedName": "AVMetadataID3MetadataKeySeek",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySeek",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySignature",
+    "OldPrintedName": "AVMetadataID3MetadataKeySignature",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySignature",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySynchronizedLyric",
+    "OldPrintedName": "AVMetadataID3MetadataKeySynchronizedLyric",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySynchronizedLyric",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySynchronizedTempoCodes",
+    "OldPrintedName": "AVMetadataID3MetadataKeySynchronizedTempoCodes",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySynchronizedTempoCodes",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAlbumTitle",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAlbumTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAlbumTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyBeatsPerMinute",
+    "OldPrintedName": "AVMetadataID3MetadataKeyBeatsPerMinute",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyBeatsPerMinute",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyComposer",
+    "OldPrintedName": "AVMetadataID3MetadataKeyComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyComposer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyContentType",
+    "OldPrintedName": "AVMetadataID3MetadataKeyContentType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyContentType",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCopyright",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyDate",
+    "OldPrintedName": "AVMetadataID3MetadataKeyDate",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEncodingTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEncodingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEncodingTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPlaylistDelay",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPlaylistDelay",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPlaylistDelay",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalReleaseTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalReleaseTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalReleaseTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRecordingTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRecordingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRecordingTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyReleaseTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyReleaseTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyReleaseTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTaggingTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTaggingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTaggingTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEncodedBy",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEncodedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLyricist",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLyricist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLyricist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyFileType",
+    "OldPrintedName": "AVMetadataID3MetadataKeyFileType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyFileType",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInvolvedPeopleList_v24",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInvolvedPeopleList_v24",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInvolvedPeopleList_v24",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyContentGroupDescription",
+    "OldPrintedName": "AVMetadataID3MetadataKeyContentGroupDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyContentGroupDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTitleDescription",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTitleDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTitleDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySubTitle",
+    "OldPrintedName": "AVMetadataID3MetadataKeySubTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySubTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInitialKey",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInitialKey",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInitialKey",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLanguage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLanguage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLength",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLength",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLength",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMusicianCreditsList",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMusicianCreditsList",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMusicianCreditsList",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMediaType",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMediaType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMediaType",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMood",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMood",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMood",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalAlbumTitle",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalAlbumTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalAlbumTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalFilename",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalFilename",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalFilename",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalLyricist",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalLyricist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalLyricist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalArtist",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalReleaseYear",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalReleaseYear",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalReleaseYear",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyFileOwner",
+    "OldPrintedName": "AVMetadataID3MetadataKeyFileOwner",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyFileOwner",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLeadPerformer",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLeadPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLeadPerformer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyBand",
+    "OldPrintedName": "AVMetadataID3MetadataKeyBand",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyBand",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyConductor",
+    "OldPrintedName": "AVMetadataID3MetadataKeyConductor",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyConductor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyModifiedBy",
+    "OldPrintedName": "AVMetadataID3MetadataKeyModifiedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyModifiedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPartOfASet",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPartOfASet",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPartOfASet",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyProducedNotice",
+    "OldPrintedName": "AVMetadataID3MetadataKeyProducedNotice",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyProducedNotice",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPublisher",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTrackNumber",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTrackNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTrackNumber",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRecordingDates",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRecordingDates",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRecordingDates",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInternetRadioStationName",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInternetRadioStationName",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInternetRadioStationName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInternetRadioStationOwner",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInternetRadioStationOwner",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInternetRadioStationOwner",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySize",
+    "OldPrintedName": "AVMetadataID3MetadataKeySize",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySize",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAlbumSortOrder",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAlbumSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAlbumSortOrder",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPerformerSortOrder",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPerformerSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPerformerSortOrder",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTitleSortOrder",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTitleSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTitleSortOrder",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInternationalStandardRecordingCode",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInternationalStandardRecordingCode",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInternationalStandardRecordingCode",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEncodedWith",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEncodedWith",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEncodedWith",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySetSubtitle",
+    "OldPrintedName": "AVMetadataID3MetadataKeySetSubtitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySetSubtitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyYear",
+    "OldPrintedName": "AVMetadataID3MetadataKeyYear",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyYear",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyUserText",
+    "OldPrintedName": "AVMetadataID3MetadataKeyUserText",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyUserText",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyUniqueFileIdentifier",
+    "OldPrintedName": "AVMetadataID3MetadataKeyUniqueFileIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyUniqueFileIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTermsOfUse",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTermsOfUse",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTermsOfUse",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyUnsynchronizedLyric",
+    "OldPrintedName": "AVMetadataID3MetadataKeyUnsynchronizedLyric",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyUnsynchronizedLyric",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCommercialInformation",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCommercialInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCommercialInformation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCopyrightInformation",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCopyrightInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCopyrightInformation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialAudioFileWebpage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialAudioFileWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialAudioFileWebpage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialArtistWebpage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialArtistWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialArtistWebpage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialAudioSourceWebpage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialAudioSourceWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialAudioSourceWebpage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialInternetRadioStationHomepage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialInternetRadioStationHomepage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialInternetRadioStationHomepage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPayment",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPayment",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPayment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialPublisherWebpage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialPublisherWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialPublisherWebpage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyUserURL",
+    "OldPrintedName": "AVMetadataID3MetadataKeyUserURL",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyUserURL",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIcyMetadataKeyStreamTitle",
+    "OldPrintedName": "AVMetadataIcyMetadataKeyStreamTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "icyMetadataKeyStreamTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIcyMetadataKeyStreamURL",
+    "OldPrintedName": "AVMetadataIcyMetadataKeyStreamURL",
+    "OldTypeName": "",
+    "NewPrintedName": "icyMetadataKeyStreamURL",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceCommon",
+    "OldPrintedName": "AVMetadataKeySpaceCommon",
+    "OldTypeName": "",
+    "NewPrintedName": "common",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceQuickTimeUserData",
+    "OldPrintedName": "AVMetadataKeySpaceQuickTimeUserData",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserData",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceISOUserData",
+    "OldPrintedName": "AVMetadataKeySpaceISOUserData",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserData",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceQuickTimeMetadata",
+    "OldPrintedName": "AVMetadataKeySpaceQuickTimeMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadata",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceiTunes",
+    "OldPrintedName": "AVMetadataKeySpaceiTunes",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunes",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceID3",
+    "OldPrintedName": "AVMetadataKeySpaceID3",
+    "OldTypeName": "",
+    "NewPrintedName": "id3",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceIcy",
+    "OldPrintedName": "AVMetadataKeySpaceIcy",
+    "OldTypeName": "",
+    "NewPrintedName": "icy",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceHLSDateRange",
+    "OldPrintedName": "AVMetadataKeySpaceHLSDateRange",
+    "OldTypeName": "",
+    "NewPrintedName": "hlsDateRange",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataObjectTypeFace",
+    "OldPrintedName": "AVMetadataObjectTypeFace",
+    "OldTypeName": "",
+    "NewPrintedName": "face",
+    "NewTypeName": "AVMetadataObject.ObjectType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset640x480",
+    "OldPrintedName": "AVOutputSettingsPreset640x480",
+    "OldTypeName": "",
+    "NewPrintedName": "preset640x480",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset960x540",
+    "OldPrintedName": "AVOutputSettingsPreset960x540",
+    "OldTypeName": "",
+    "NewPrintedName": "preset960x540",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset1280x720",
+    "OldPrintedName": "AVOutputSettingsPreset1280x720",
+    "OldTypeName": "",
+    "NewPrintedName": "preset1280x720",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset1920x1080",
+    "OldPrintedName": "AVOutputSettingsPreset1920x1080",
+    "OldTypeName": "",
+    "NewPrintedName": "preset1920x1080",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset3840x2160",
+    "OldPrintedName": "AVOutputSettingsPreset3840x2160",
+    "OldTypeName": "",
+    "NewPrintedName": "preset3840x2160",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerWaitingToMinimizeStallsReason",
+    "OldPrintedName": "AVPlayerWaitingToMinimizeStallsReason",
+    "OldTypeName": "",
+    "NewPrintedName": "toMinimizeStalls",
+    "NewTypeName": "AVPlayer.WaitingReason"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerWaitingWhileEvaluatingBufferingRateReason",
+    "OldPrintedName": "AVPlayerWaitingWhileEvaluatingBufferingRateReason",
+    "OldTypeName": "",
+    "NewPrintedName": "evaluatingBufferingRate",
+    "NewTypeName": "AVPlayer.WaitingReason"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerWaitingWithNoItemToPlayReason",
+    "OldPrintedName": "AVPlayerWaitingWithNoItemToPlayReason",
+    "OldTypeName": "",
+    "NewPrintedName": "noItemToPlay",
+    "NewTypeName": "AVPlayer.WaitingReason"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerItemLegibleOutputTextStylingResolutionDefault",
+    "OldPrintedName": "AVPlayerItemLegibleOutputTextStylingResolutionDefault",
+    "OldTypeName": "",
+    "NewPrintedName": "default",
+    "NewTypeName": "AVPlayerItemLegibleOutputTextStylingResolution"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerItemLegibleOutputTextStylingResolutionSourceAndRulesOnly",
+    "OldPrintedName": "AVPlayerItemLegibleOutputTextStylingResolutionSourceAndRulesOnly",
+    "OldTypeName": "",
+    "NewPrintedName": "sourceAndRulesOnly",
+    "NewTypeName": "AVPlayerItemLegibleOutputTextStylingResolution"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCTPerformanceMetric_WallClockTime",
+    "OldPrintedName": "XCTPerformanceMetric_WallClockTime",
+    "OldTypeName": "",
+    "NewPrintedName": "wallClockTime",
+    "NewTypeName": "XCTPerformanceMetric"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCTWaiterResult",
+    "OldPrintedName": "XCTWaiterResult",
+    "OldTypeName": "",
+    "NewPrintedName": "Result",
+    "NewTypeName": "XCTWaiter"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCTestErrorCode",
+    "OldPrintedName": "XCTestErrorCode",
+    "OldTypeName": "",
+    "NewPrintedName": "Code",
+    "NewTypeName": "XCTestError"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIElementType",
+    "OldPrintedName": "XCUIElementType",
+    "OldTypeName": "",
+    "NewPrintedName": "Type",
+    "NewTypeName": "XCUIElement"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIUserInterfaceSizeClass",
+    "OldPrintedName": "XCUIUserInterfaceSizeClass",
+    "OldTypeName": "",
+    "NewPrintedName": "SizeClass",
+    "NewTypeName": "XCUIElement"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags",
+    "OldPrintedName": "XCUIKeyModifierFlags",
+    "OldTypeName": "",
+    "NewPrintedName": "KeyModifierFlags",
+    "NewTypeName": "XCUIElement"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierCapsLock",
+    "OldPrintedName": "capsLock",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "capsLock",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierShift",
+    "OldPrintedName": "shift",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "shift",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierControl",
+    "OldPrintedName": "control",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "control",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierOption",
+    "OldPrintedName": "option",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "option",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierCommand",
+    "OldPrintedName": "command",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "command",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierAlphaShift",
+    "OldPrintedName": "alphaShift",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "alphaShift",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierAlternate",
+    "OldPrintedName": "alternate",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "alternate",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyDelete",
+    "OldPrintedName": "XCUIKeyboardKeyDelete",
+    "OldTypeName": "",
+    "NewPrintedName": "delete",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyReturn",
+    "OldPrintedName": "XCUIKeyboardKeyReturn",
+    "OldTypeName": "",
+    "NewPrintedName": "return",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyEnter",
+    "OldPrintedName": "XCUIKeyboardKeyEnter",
+    "OldTypeName": "",
+    "NewPrintedName": "enter",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyTab",
+    "OldPrintedName": "XCUIKeyboardKeyTab",
+    "OldTypeName": "",
+    "NewPrintedName": "tab",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeySpace",
+    "OldPrintedName": "XCUIKeyboardKeySpace",
+    "OldTypeName": "",
+    "NewPrintedName": "space",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyEscape",
+    "OldPrintedName": "XCUIKeyboardKeyEscape",
+    "OldTypeName": "",
+    "NewPrintedName": "escape",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyUpArrow",
+    "OldPrintedName": "XCUIKeyboardKeyUpArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "upArrow",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyDownArrow",
+    "OldPrintedName": "XCUIKeyboardKeyDownArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "downArrow",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyLeftArrow",
+    "OldPrintedName": "XCUIKeyboardKeyLeftArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "leftArrow",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightArrow",
+    "OldPrintedName": "XCUIKeyboardKeyRightArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "rightArrow",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF1",
+    "OldPrintedName": "XCUIKeyboardKeyF1",
+    "OldTypeName": "",
+    "NewPrintedName": "F1",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF2",
+    "OldPrintedName": "XCUIKeyboardKeyF2",
+    "OldTypeName": "",
+    "NewPrintedName": "F2",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF3",
+    "OldPrintedName": "XCUIKeyboardKeyF3",
+    "OldTypeName": "",
+    "NewPrintedName": "F3",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF4",
+    "OldPrintedName": "XCUIKeyboardKeyF4",
+    "OldTypeName": "",
+    "NewPrintedName": "F4",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF5",
+    "OldPrintedName": "XCUIKeyboardKeyF5",
+    "OldTypeName": "",
+    "NewPrintedName": "F5",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF6",
+    "OldPrintedName": "XCUIKeyboardKeyF6",
+    "OldTypeName": "",
+    "NewPrintedName": "F6",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF7",
+    "OldPrintedName": "XCUIKeyboardKeyF7",
+    "OldTypeName": "",
+    "NewPrintedName": "F7",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF8",
+    "OldPrintedName": "XCUIKeyboardKeyF8",
+    "OldTypeName": "",
+    "NewPrintedName": "F8",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF9",
+    "OldPrintedName": "XCUIKeyboardKeyF9",
+    "OldTypeName": "",
+    "NewPrintedName": "F9",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF10",
+    "OldPrintedName": "XCUIKeyboardKeyF10",
+    "OldTypeName": "",
+    "NewPrintedName": "F10",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF11",
+    "OldPrintedName": "XCUIKeyboardKeyF11",
+    "OldTypeName": "",
+    "NewPrintedName": "F11",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF12",
+    "OldPrintedName": "XCUIKeyboardKeyF12",
+    "OldTypeName": "",
+    "NewPrintedName": "F12",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF13",
+    "OldPrintedName": "XCUIKeyboardKeyF13",
+    "OldTypeName": "",
+    "NewPrintedName": "F13",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF14",
+    "OldPrintedName": "XCUIKeyboardKeyF14",
+    "OldTypeName": "",
+    "NewPrintedName": "F14",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF15",
+    "OldPrintedName": "XCUIKeyboardKeyF15",
+    "OldTypeName": "",
+    "NewPrintedName": "F15",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF16",
+    "OldPrintedName": "XCUIKeyboardKeyF16",
+    "OldTypeName": "",
+    "NewPrintedName": "F16",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF17",
+    "OldPrintedName": "XCUIKeyboardKeyF17",
+    "OldTypeName": "",
+    "NewPrintedName": "F17",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF18",
+    "OldPrintedName": "XCUIKeyboardKeyF18",
+    "OldTypeName": "",
+    "NewPrintedName": "F18",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF19",
+    "OldPrintedName": "XCUIKeyboardKeyF19",
+    "OldTypeName": "",
+    "NewPrintedName": "F19",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyForwardDelete",
+    "OldPrintedName": "XCUIKeyboardKeyForwardDelete",
+    "OldTypeName": "",
+    "NewPrintedName": "forwardDelete",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyHome",
+    "OldPrintedName": "XCUIKeyboardKeyHome",
+    "OldTypeName": "",
+    "NewPrintedName": "home",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyEnd",
+    "OldPrintedName": "XCUIKeyboardKeyEnd",
+    "OldTypeName": "",
+    "NewPrintedName": "end",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyPageUp",
+    "OldPrintedName": "XCUIKeyboardKeyPageUp",
+    "OldTypeName": "",
+    "NewPrintedName": "pageUp",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyPageDown",
+    "OldPrintedName": "XCUIKeyboardKeyPageDown",
+    "OldTypeName": "",
+    "NewPrintedName": "pageDown",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyClear",
+    "OldPrintedName": "XCUIKeyboardKeyClear",
+    "OldTypeName": "",
+    "NewPrintedName": "clear",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyHelp",
+    "OldPrintedName": "XCUIKeyboardKeyHelp",
+    "OldTypeName": "",
+    "NewPrintedName": "help",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyCapsLock",
+    "OldPrintedName": "XCUIKeyboardKeyCapsLock",
+    "OldTypeName": "",
+    "NewPrintedName": "capsLock",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyShift",
+    "OldPrintedName": "XCUIKeyboardKeyShift",
+    "OldTypeName": "",
+    "NewPrintedName": "shift",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyControl",
+    "OldPrintedName": "XCUIKeyboardKeyControl",
+    "OldTypeName": "",
+    "NewPrintedName": "control",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyOption",
+    "OldPrintedName": "XCUIKeyboardKeyOption",
+    "OldTypeName": "",
+    "NewPrintedName": "option",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyCommand",
+    "OldPrintedName": "XCUIKeyboardKeyCommand",
+    "OldTypeName": "",
+    "NewPrintedName": "command",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightShift",
+    "OldPrintedName": "XCUIKeyboardKeyRightShift",
+    "OldTypeName": "",
+    "NewPrintedName": "rightShift",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightControl",
+    "OldPrintedName": "XCUIKeyboardKeyRightControl",
+    "OldTypeName": "",
+    "NewPrintedName": "rightControl",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightOption",
+    "OldPrintedName": "XCUIKeyboardKeyRightOption",
+    "OldTypeName": "",
+    "NewPrintedName": "rightOption",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightCommand",
+    "OldPrintedName": "XCUIKeyboardKeyRightCommand",
+    "OldTypeName": "",
+    "NewPrintedName": "rightCommand",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeySecondaryFn",
+    "OldPrintedName": "XCUIKeyboardKeySecondaryFn",
+    "OldTypeName": "",
+    "NewPrintedName": "secondaryFn",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSAttributedString(im)enumerateAttributesInRange:options:usingBlock:",
+    "Index": 3
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSAttributedString(im)enumerateAttribute:inRange:options:usingBlock:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateReadingItemAtURL:options:error:byAccessor:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateWritingItemAtURL:options:error:byAccessor:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateReadingItemAtURL:options:writingItemAtURL:options:error:byAccessor:",
+    "Index": 6
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateWritingItemAtURL:options:writingItemAtURL:options:error:byAccessor:",
+    "Index": 6
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)prepareForReadingItemsAtURLs:options:writingItemsAtURLs:options:error:byAccessor:",
+    "Index": 6
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:unit:scheme:options:usingBlock:",
+    "Index": 5
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:scheme:options:usingBlock:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSLinguisticTagger(cm)enumerateTagsForString:range:unit:scheme:options:orthography:usingBlock:",
+    "Index": 7
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSString(im)enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:",
+    "Index": 5
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(pl)NSXPCProxyCreating(im)synchronousRemoteObjectProxyWithErrorHandler:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:@F@CGPathApplyWithBlock",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSApplication(im)enumerateWindowsWithOptions:usingBlock:",
+    "Index": 2
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSDraggingSession(im)enumerateDraggingItemsWithOptions:forView:classes:searchOptions:usingBlock:",
+    "Index": 5
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSWindow(im)trackEventsMatchingMask:timeout:mode:handler:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)XCTestCase(im)measureBlock:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)XCTestCase(im)measureMetrics:automaticallyStartMeasuring:forBlock:",
+    "Index": 3
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)XCUIElement(cm)performWithKeyModifiers:block:",
+    "Index": 2
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:@F@xpc_array_apply",
+    "Index": 2
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:@F@xpc_dictionary_apply",
+    "Index": 2
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSCNNBinaryKernel(im)encodeToCommandBuffer:primaryImage:secondaryImage:destinationImage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSCNNBinaryKernel(im)encodeToCommandBuffer:primaryImage:secondaryImage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSCNNKernel(im)encodeToCommandBuffer:sourceImage:destinationImage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSCNNKernel(im)encodeToCommandBuffer:sourceImage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSImage(im)readBytes:dataLayout:imageIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSImage(im)writeBytes:dataLayout:imageIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSKernel(im)copyWithZone:device:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSCopying(im)copyWithZone:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSNNGraph(im)encodeToCommandBuffer:sourceImages:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:8Dispatch0A4DataV9copyBytesys29UnsafeMutableRawBufferPointerV2to_Si5counttF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:8Dispatch0A4DataV9copyBytesys29UnsafeMutableRawBufferPointerV2to_s14CountableRangeVySiG4fromtF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PDFDocument(im)findString:withOptions:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)PDFDocumentDelegate(im)classForAnnotationType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)PDFDocumentDelegate(im)classForAnnotationClass:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)AMWorkflowControllerDelegate(im)workflowController:willRunAction:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)AMWorkflowControllerDelegate(im)workflowController:didRunAction:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)AMWorkflowControllerDelegate(im)workflowController:didError:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldUpdateTouchBarItemIdentifiers:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSAttributedString(im)attributesAtIndex:effectiveRange:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSAttributedString(im)drawWithRect:options:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSAttributedString(im)boundingRectWithSize:options:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSAttributedString(im)drawWithRect:options:context:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSAttributedString(im)boundingRectWithSize:options:context:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSAttributedString(im)attribute:atIndex:effectiveRange:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSLinguisticTagger(cm)availableTagSchemesForLanguage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSMutableAttributedString(im)readFromURL:options:documentAttributes:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSMutableAttributedString(im)readFromData:options:documentAttributes:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSString(im)drawWithRect:options:attributes:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSString(im)boundingRectWithSize:options:attributes:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSString(im)drawWithRect:options:attributes:context:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSString(im)boundingRectWithSize:options:attributes:context:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSTextCheckingResult(im)rangeAtIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSTextCheckingResult(im)rangeWithName:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSURLSessionTaskDelegate(im)URLSession:taskIsWaitingForConnectivity:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6insertys5RangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6insertys11ClosedRangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6removeys5RangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6removeys11ClosedRangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6insertSb8inserted_s7UnicodeO6ScalarV17memberAfterInserttAIF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6removes7UnicodeO6ScalarVSgAHF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation19PropertyListDecoderC6decodexxm_AA4DataV4fromtKs9DecodableRzlF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation19PropertyListDecoderC6decodexxm_AA4DataV4fromSo0bC13SerializationC0bC6FormatOz6formattKs9DecodableRzlF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CSSearchableIndexDelegate(im)searchableIndex:reindexAllSearchableItemsWithAcknowledgementHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CSSearchableIndexDelegate(im)searchableIndex:reindexAllSearchableItemsWithAcknowledgementHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLArgumentEncoder(im)setArgumentBuffer:offset:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)newCaptureScopeWithDevice:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)newCaptureScopeWithCommandQueue:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)startCaptureWithDevice:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)startCaptureWithCommandQueue:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)startCaptureWithScope:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLComputeCommandEncoder(im)setSamplerState:atIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLDevice(im)newTextureWithDescriptor:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLFunction(im)newArgumentEncoderWithBufferIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLFunction(im)newArgumentEncoderWithBufferIndex:reflection:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexSamplerState:atIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentSamplerState:atIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLTexture(im)newTextureViewWithPixelFormat:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:displayGamut:bundle:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:displayGamut:bundle:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)valueClassForBinding:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)valueClassForBinding:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)bind:toObject:withKeyPath:options:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)bind:toObject:withKeyPath:options:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)unbind:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)unbind:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)infoForBinding:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)infoForBinding:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)optionDescriptionsForBinding:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)optionDescriptionsForBinding:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)validModesForFontPanel:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)validModesForFontPanel:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)pasteboard:provideDataForType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)pasteboard:provideDataForType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilitySetOverrideValue:forAttribute:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilitySetOverrideValue:forAttribute:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityAttributeValue:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityAttributeValue:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityIsAttributeSettable:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityIsAttributeSettable:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilitySetValue:forAttribute:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilitySetValue:forAttribute:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityAttributeValue:forParameter:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityAttributeValue:forParameter:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityActionDescription:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityActionDescription:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityPerformAction:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityPerformAction:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityArrayAttributeCount:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityArrayAttributeCount:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityArrayAttributeValues:index:maxCount:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)accessibilityArrayAttributeValues:index:maxCount:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CLGeocoder(im)geocodePostalAddress:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CIContext(im)startTaskToRender:toDestination:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CIContext(im)startTaskToClear:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)copyFloatArrayInto:maxCount:atTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)copyDoubleArrayInto:maxCount:atTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)resetWithFloatArray:count:atTimes:count:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)resetWithDoubleArray:count:atTimes:count:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)copyFloatArrayInto:maxCount:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)copyDoubleArrayInto:maxCount:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLTexture(im)writeToURL:level:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)WKURLSchemeHandler(im)webView:startURLSchemeTask:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)WKURLSchemeHandler(im)webView:stopURLSchemeTask:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)WKURLSchemeTask(im)didReceiveResponse:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)WKURLSchemeTask(im)didReceiveData:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:@F@NSAccessibilityRoleDescription"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:@F@NSAccessibilityRoleDescriptionForUIElement"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSApplicationDelegate(im)application:openURLs:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSBezierPath(im)elementAtIndex:associatedPoints:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSBezierPath(im)elementAtIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSCollectionView(im)registerClass:forItemWithIdentifier:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSCollectionView(im)registerNib:forItemWithIdentifier:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSCollectionView(im)registerClass:forSupplementaryViewOfKind:withIdentifier:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSCollectionView(im)registerNib:forSupplementaryViewOfKind:withIdentifier:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSCollectionViewLayout(im)registerClass:forDecorationViewOfKind:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSCollectionViewLayout(im)registerNib:forDecorationViewOfKind:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSCollectionViewPrefetching(im)collectionView:prefetchItemsAtIndexPaths:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSCollectionViewPrefetching(im)collectionView:cancelPrefetchingForItemsAtIndexPaths:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSColor(im)colorUsingColorSpaceName:device:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSColor(im)colorUsingColorSpaceName:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSColorPickerTouchBarItem(cm)colorPickerWithIdentifier:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSColorPickerTouchBarItem(cm)colorPickerWithIdentifier:buttonImage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSDocument(im)saveToURL:ofType:forSaveOperation:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSDocument(im)updateChangeCount:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSFontCollection(im)matchingDescriptorsWithOptions:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSLayoutManager(im)temporaryAttributesAtCharacterIndex:effectiveRange:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSLayoutManager(im)temporaryAttribute:atCharacterIndex:effectiveRange:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSPageControllerDelegate(im)pageController:identifierForObject:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSPageControllerDelegate(im)pageController:viewControllerForIdentifier:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSScrubber(im)registerClass:forItemIdentifier:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSScrubber(im)registerNib:forItemIdentifier:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldUpdateTouchBarItemIdentifiers:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSTextBlock(im)setWidth:type:forLayer:edge:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSTextBlock(im)setWidth:type:forLayer:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSTextView(im)writeSelectionToPasteboard:type:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSTextView(im)writeSelectionToPasteboard:types:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSTextViewDelegate(im)textView:shouldUpdateTouchBarItemIdentifiers:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSTokenFieldCellDelegate(im)tokenFieldCell:representedObjectForEditingString:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSTokenFieldCellDelegate(im)tokenFieldCell:styleForRepresentedObject:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSTokenFieldDelegate(im)tokenField:representedObjectForEditingString:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSTokenFieldDelegate(im)tokenField:styleForRepresentedObject:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSWindow(im)setFrameUsingName:force:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSWindow(im)setFrameUsingName:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSWindow(cm)standardWindowButton:forStyleMask:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSWindow(im)standardWindowButton:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSWindow(im)nextEventMatchingMask:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAsset(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAsset(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAudioNode(im)nameForInputBus:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAudioNode(im)nameForOutputBus:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVComposition(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVComposition(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVFragmentedAsset(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVFragmentedAsset(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVFragmentedMovie(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVFragmentedMovie(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMetadataItem(cm)metadataItemsFromArray:filteredByIdentifier:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMovie(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMovie(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMutableComposition(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMutableComposition(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMutableMovie(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMutableMovie(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVPlayerItem(im)seekToTime:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVPlayerItem(im)seekToDate:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)SCNAnimatable(im)removeAnimationForKey:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)SCNAnimatable(im)removeAnimationForKey:blendOutDuration:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)SCNAnimatable(im)removeAnimationForKey:fadeOutDuration:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNCameraController(im)dollyZoomToTarget:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)convertVector:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)convertVector:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertPosition:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertPosition:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertVector:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertVector:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertTransform:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertTransform:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdLookAt:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)lookAt:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:enforceOrder:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCTWaiter(cm)waitForExpectations:timeout:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCTWaiter(cm)waitForExpectations:timeout:enforceOrder:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCUIElementQuery(im)elementAtIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCUIElementQuery(im)elementBoundByIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSCoreDataCoreSpotlightDelegate(im)searchableIndex:reindexAllSearchableItemsWithAcknowledgementHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)fetchHistoryAfterDate:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)fetchHistoryAfterToken:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)fetchHistoryAfterTransaction:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)deleteHistoryBeforeDate:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)deleteHistoryBeforeToken:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)deleteHistoryBeforeTransaction:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCVPixelBuffer:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCVPixelBuffer:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCGImage:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCGImage:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCIImage:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCIImage:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onImageURL:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onImageURL:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onImageData:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onImageData:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PHChange(im)changeDetailsForObject:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PHChange(im)changeDetailsForFetchResult:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PHFetchResult(im)indexOfObject:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PHFetchResult(im)indexOfObject:inRange:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)PHFetchResult(im)enumerateObjectsUsingBlock:"
+  }
 ]
\ No newline at end of file
diff --git a/lib/Migrator/overlay.json b/lib/Migrator/overlay.json
index 32960f8..57877a8 100644
--- a/lib/Migrator/overlay.json
+++ b/lib/Migrator/overlay.json
@@ -1,2 +1,143 @@
 [
-]
\ No newline at end of file
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr":  "c:@F@NSBeep",
+    "OldPrintedName": "NSBeep()",
+    "NewPrintedName": "beep()",
+    "NewTypeName": "NSSound"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr":  "c:@F@NSApplicationLoad",
+    "OldPrintedName": "NSApplicationLoad()",
+    "NewPrintedName": "load()",
+    "NewTypeName": "NSApplication"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSRectFill",
+    "OldPrintedName": "NSRectFill(_:)",
+    "NewPrintedName": "fill()",
+    "NewTypeName": "NSRect",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSRectFillUsingOperation",
+    "OldPrintedName": "NSRectFillUsingOperation(_:_:)",
+    "NewPrintedName": "fill(using:)",
+    "NewTypeName": "NSRect",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSFrameRect",
+    "OldPrintedName": "NSFrameRect(_:)",
+    "NewPrintedName": "frame()",
+    "NewTypeName": "NSFrameRect",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSFrameRectWithWidth",
+    "OldPrintedName": "NSFrameRectWithWidth(_:_:)",
+    "NewPrintedName": "frame(withWidth:)",
+    "NewTypeName": "NSFrameRect",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSFrameRectWithWidthUsingOperation",
+    "OldPrintedName": "NSFrameRectWithWidthUsingOperation(_:_:_:)",
+    "NewPrintedName": "frame(withWidth:using:)",
+    "NewTypeName": "NSFrameRect",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSRectClip",
+    "OldPrintedName": "NSRectClip(_:)",
+    "NewPrintedName": "clip",
+    "NewTypeName": "NSRect",
+    "SelfIndex": 0
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSRectFillList",
+    "OldPrintedName": "NSRectFillList(_:_:)",
+    "NewPrintedName": "fill()",
+    "NewTypeName": "NSRect",
+    "SelfIndex": 0,
+    "RemovedIndex": 1
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSRectFillListUsingOperation",
+    "OldPrintedName": "NSRectFillListUsingOperation(_:_:_:)",
+    "NewPrintedName": "fill(using:)",
+    "NewTypeName": "NSRect",
+    "SelfIndex": 0,
+    "RemovedIndex": 1
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@F@NSRectClipList",
+    "OldPrintedName": "NSRectClipList(_:_:)",
+    "NewPrintedName": "clip()",
+    "NewTypeName": "NSRect",
+    "SelfIndex": 0,
+    "RemovedIndex": 1
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr":  "c:@F@NSAvailableWindowDepths",
+    "OldPrintedName": "NSAvailableWindowDepths()",
+    "NewPrintedName": "availableDepths",
+    "NewTypeName": "NSWindow.Depth"
+  },
+  {
+    "DiffItemKind": "SpecialCaseDiffItem",
+    "Usr": "c:@F@NSOpenGLSetOption",
+    "SpecialCaseId": "NSOpenGLSetOption"
+  },
+  {
+    "DiffItemKind": "SpecialCaseDiffItem",
+    "Usr": "c:@F@NSOpenGLGetOption",
+    "SpecialCaseId": "NSOpenGLGetOption"
+  },
+  {
+    "DiffItemKind": "SpecialCaseDiffItem",
+    "Usr": "c:@F@NSOpenGLGetVersion",
+    "SpecialCaseId": "NSOpenGLGetVersion"
+  },
+  {
+    "DiffItemKind": "SpecialCaseDiffItem",
+    "Usr": "s:12CoreGraphics7CGFloatV3absA2CFZ",
+    "SpecialCaseId": "StaticAbsToSwiftAbs"
+  },
+  {
+    "DiffItemKind": "SpecialCaseDiffItem",
+    "Usr": "s:Sf3absS2fFZ",
+    "SpecialCaseId": "StaticAbsToSwiftAbs"
+  },
+  {
+    "DiffItemKind": "SpecialCaseDiffItem",
+    "Usr": "s:s7Float80V3absA2BFZ",
+    "SpecialCaseId": "StaticAbsToSwiftAbs"
+  },
+  {
+    "DiffItemKind": "SpecialCaseDiffItem",
+    "Usr": "s:Sd3absS2dFZ",
+    "SpecialCaseId": "StaticAbsToSwiftAbs"
+  },
+  {
+    "DiffItemKind": "SpecialCaseDiffItem",
+    "Usr": "s:s15UnsignedIntegerPsE9toUIntMaxs6UInt64VyF",
+    "SpecialCaseId": "ToUIntMax"
+  },
+  {
+    "DiffItemKind": "SpecialCaseDiffItem",
+    "Usr": "s:s13BinaryIntegerPsE8toIntMaxs5Int64VyF",
+    "SpecialCaseId": "ToIntMax"
+  }
+]
diff --git a/lib/Migrator/tvos.json b/lib/Migrator/tvos.json
index 32960f8..12a9a88 100644
--- a/lib/Migrator/tvos.json
+++ b/lib/Migrator/tvos.json
@@ -1,2 +1,11448 @@
 [
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)ASIdentifierManager(cm)sharedManager",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AdSupport"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)SKUniform(im)initWithName:matrixFloat2x2:",
+    "LeftComment": "matrix_float2x2",
+    "RightUsr": "",
+    "RightComment": "matrix_float2x2",
+    "ModuleName": "SpriteKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)SKUniform(im)initWithName:matrixFloat3x3:",
+    "LeftComment": "matrix_float3x3",
+    "RightUsr": "",
+    "RightComment": "matrix_float3x3",
+    "ModuleName": "SpriteKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)SKUniform(im)initWithName:matrixFloat4x4:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "SpriteKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)setGlyphs:properties:characterIndexes:font:forGlyphRange:",
+    "LeftComment": "NSGlyphProperty",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.GlyphProperty",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)propertyForGlyphAtIndex:",
+    "LeftComment": "NSGlyphProperty",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.GlyphProperty",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)getGlyphsInRange:glyphs:properties:characterIndexes:bidiLevels:",
+    "LeftComment": "NSGlyphProperty",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.GlyphProperty",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "6:0",
+    "LeftUsr": "c:objc(cs)NSLayoutManager(im)showCGGlyphs:positions:count:font:matrix:attributes:inContext:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(pl)NSLayoutManagerDelegate(im)layoutManager:shouldGenerateGlyphs:properties:characterIndexes:font:forGlyphRange:",
+    "LeftComment": "NSGlyphProperty",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.GlyphProperty",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)NSLayoutManagerDelegate(im)layoutManager:shouldUseAction:forControlCharacterAtIndex:",
+    "LeftComment": "NSControlCharacterAction",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.ControlCharacterAction",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSLayoutManagerDelegate(im)layoutManager:shouldUseAction:forControlCharacterAtIndex:",
+    "LeftComment": "NSControlCharacterAction",
+    "RightUsr": "",
+    "RightComment": "NSLayoutManager.ControlCharacterAction",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithString:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)NSTextTab(im)initWithTextAlignment:location:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextTab.OptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)UIActivityItemSource(im)activityViewController:itemForActivityType:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)UIBarItem(im)setTitleTextAttributes:forState:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)UIFont(cm)systemFontOfSize:weight:",
+    "LeftComment": "CGFloat",
+    "RightUsr": "",
+    "RightComment": "UIFont.Weight",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)UIFont(cm)monospacedDigitSystemFontOfSize:weight:",
+    "LeftComment": "CGFloat",
+    "RightUsr": "",
+    "RightComment": "UIFont.Weight",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)UIFontDescriptor(im)objectForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "UIFontDescriptor.AttributeName",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)UIFontDescriptor(im)matchingFontDescriptorsWithMandatoryKeys:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "UIFontDescriptor.AttributeName",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)UIFontDescriptor(im)initWithFontAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "UIFontDescriptor.AttributeName",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)UIFontDescriptor(im)fontDescriptorByAddingAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "UIFontDescriptor.AttributeName",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)UITextInputStringTokenizer(im)initWithTextInput:",
+    "LeftComment": "UIResponder",
+    "RightUsr": "",
+    "RightComment": "UIResponder & UITextInput",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)UIView(im)systemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority:",
+    "LeftComment": "UILayoutPriority",
+    "RightUsr": "",
+    "RightComment": "UILayoutPriority",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)UIView(im)systemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority:",
+    "LeftComment": "UILayoutPriority",
+    "RightUsr": "",
+    "RightComment": "UILayoutPriority",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)UIView(im)contentHuggingPriorityForAxis:",
+    "LeftComment": "UILayoutPriority",
+    "RightUsr": "",
+    "RightComment": "UILayoutPriority",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)UIView(im)setContentHuggingPriority:forAxis:",
+    "LeftComment": "UILayoutPriority",
+    "RightUsr": "",
+    "RightComment": "UILayoutPriority",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)UIView(im)contentCompressionResistancePriorityForAxis:",
+    "LeftComment": "UILayoutPriority",
+    "RightUsr": "",
+    "RightComment": "UILayoutPriority",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)UIView(im)setContentCompressionResistancePriority:forAxis:",
+    "LeftComment": "UILayoutPriority",
+    "RightUsr": "",
+    "RightComment": "UILayoutPriority",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPSBinaryImageKernel(im)encodeToCommandBuffer:primaryTexture:inPlaceSecondaryTexture:fallbackCopyAllocator:",
+    "LeftComment": "encode(to:primaryTexture:inPlaceSecondaryTexture:fallbackCopyAllocator:)",
+    "RightUsr": "",
+    "RightComment": "encode(commandBuffer:primaryTexture:inPlaceSecondaryTexture:fallbackCopyAllocator:)",
+    "ModuleName": "MetalPerformanceShaders"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPSBinaryImageKernel(im)encodeToCommandBuffer:inPlacePrimaryTexture:secondaryTexture:fallbackCopyAllocator:",
+    "LeftComment": "encode(to:inPlacePrimaryTexture:secondaryTexture:fallbackCopyAllocator:)",
+    "RightUsr": "",
+    "RightComment": "encode(commandBuffer:inPlacePrimaryTexture:secondaryTexture:fallbackCopyAllocator:)",
+    "ModuleName": "MetalPerformanceShaders"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MPSBinaryImageKernel(im)encodeToCommandBuffer:primaryTexture:secondaryTexture:destinationTexture:",
+    "LeftComment": "encode(to:primaryTexture:secondaryTexture:destinationTexture:)",
+    "RightUsr": "",
+    "RightComment": "encode(commandBuffer:primaryTexture:secondaryTexture:destinationTexture:)",
+    "ModuleName": "MetalPerformanceShaders"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@MPSPurgeableState@MPSPurgeableStateAllocationDeferred",
+    "LeftComment": "allocationDeferred",
+    "RightUsr": "",
+    "RightComment": "deferred",
+    "ModuleName": "MetalPerformanceShaders"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FE8DispatchCSo10DispatchIOcFT4typeOES_S0_10StreamType4pathGSPVs4Int8_5oflagVs5Int324modeVs6UInt165queueCSo13DispatchQueue14cleanupHandlerFS3_T__S0_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Dispatch"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "s:FE8DispatchCSo13DispatchQueue11setSpecificurFT3keyGCS_19DispatchSpecificKeyx_5valuex_T_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Dispatch"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithNames:scaleFactor:bundle:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithNames:scaleFactor:bundle:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:completionHandler:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:0",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "MTKTextureLoader.Option",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:0:1",
+    "LeftUsr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:error:",
+    "LeftComment": "NSObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "MetalKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MDLAsset(im)initWithURL:vertexDescriptor:bufferAllocator:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)MDLMaterialProperty(im)initWithName:semantic:matrix4x4:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)MDLMesh(im)initCapsuleWithExtent:cylinderSegments:hemisphereSegments:inwardNormals:geometryType:allocator:",
+    "LeftComment": "Int32",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MDLTransform(im)initWithMatrix:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MDLTransform(im)initWithMatrix:resetsTransform:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)MDLTransform(im)setMatrix:forTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MDLTransform(im)rotationMatrixAtTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)localTransformAtTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(cm)globalTransformWithObject:atTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(im)localTransformAtTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MDLTransformComponent(cm)globalTransformWithObject:atTime:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "ModelIO"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)blackColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "black",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)whiteColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "white",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)grayColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "gray",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)redColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "red",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)greenColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "green",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)blueColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "blue",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)cyanColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "cyan",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)magentaColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "magenta",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)yellowColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "yellow",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CIColor(cm)clearColor",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "clear",
+    "ModuleName": "CoreImage"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EASession(im)initWithAccessory:forProtocol:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "ExternalAccessory"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CALayer(im)setNeedsDisplayInRect:",
+    "LeftComment": "setNeedsDisplayIn(_:)",
+    "RightUsr": "",
+    "RightComment": "setNeedsDisplay(_:)",
+    "ModuleName": "QuartzCore"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)CAMediaTimingFunction(im)getControlPointAtIndex:values:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "QuartzCore"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2:1:0",
+    "LeftUsr": "c:objc(cs)MCSession(im)nearbyConnectionDataForPeer:withCompletionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "MultipeerConnectivity"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)MCSessionDelegate(im)session:didFinishReceivingResourceWithName:fromPeer:atURL:withError:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "MultipeerConnectivity"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedGray",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedGray",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGColorSpaceCreateLab",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:@F@CGColorSpaceCreateLab",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:@F@CGColorSpaceCreateLab",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@F@CGFontCreateWithDataProvider",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "5",
+    "LeftUsr": "c:@F@CGFontCreatePostScriptSubset",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGFontCreatePostScriptEncoding",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EAGLContext(im)initWithAPI:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "OpenGLES"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EAGLContext(im)initWithAPI:sharegroup:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "OpenGLES"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)EAGLContext(im)initWithAPI:sharegroup:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "OpenGLES"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)EAGLContext(cm)setCurrentContext:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "OpenGLES"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EAGLContext(cm)currentContext",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "OpenGLES"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)EAGLContext(im)renderbufferStorage:fromDrawable:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "OpenGLES"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "ModernizeEnum",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@Ea@GKPhotoSizeSmall@GKPhotoSizeNormal",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "GKPhotoSize.normal",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "ModernizeEnum",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@Ea@GKPhotoSizeSmall@GKPhotoSizeSmall",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "GKPhotoSize.small",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)GKPlayer(im)loadPhotoForSize:withCompletionHandler:",
+    "LeftComment": "GKPhotoSize",
+    "RightUsr": "",
+    "RightComment": "GKPhotoSize",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)GKPlayer(im)loadPhotoForSize:withCompletionHandler:",
+    "LeftComment": "loadPhoto(forSize:withCompletionHandler:)",
+    "RightUsr": "",
+    "RightComment": "loadPhoto(for:withCompletionHandler:)",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "6:0:1:1",
+    "LeftUsr": "c:objc(cs)GKTurnBasedMatch(im)sendExchangeToParticipants:data:localizableMessageKey:arguments:timeout:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAsset(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAsset(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAsset(im)metadataForFormat:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataFormat",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)AVAsset(im)chapterMetadataGroupsWithTitleLocale:containingItemsWithCommonKeys:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataKey",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAsset(im)mediaSelectionGroupForMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)AVAssetExportSession(cm)determineCompatibilityOfExportPreset:withAsset:outputFileType:completionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:1:0:0",
+    "LeftUsr": "c:objc(cs)AVAssetExportSession(im)determineCompatibleFileTypesWithCompletionHandler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAssetResourceLoadingRequest(im)persistentContentKeyFromKeyVendorResponse:options:error:",
+    "LeftComment": "persistentContentKey(fromKeyVendorResponse:options:error:)",
+    "RightUsr": "",
+    "RightComment": "persistentContentKey(fromKeyVendorResponse:options:)",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetTrack(im)hasMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetTrack(im)metadataForFormat:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataFormat",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetTrack(im)associatedTracksOfType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVAssetTrack.AssociationType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVAssetWriter(cm)assetWriterWithURL:fileType:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVAssetWriter(im)initWithURL:fileType:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVAssetWriter(im)canApplyOutputSettings:forMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetWriterInput(im)initWithMediaType:outputSettings:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVAssetWriterInput(im)initWithMediaType:outputSettings:sourceFormatHint:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioChannelLayout(im)initWithLayoutTag:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioConverter(im)initFromFormat:toFormat:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithStreamDescription:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithStreamDescription:channelLayout:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initStandardFormatWithSampleRate:channels:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithCommonFormat:sampleRate:channels:interleaved:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithSettings:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioNode(im)nameForInputBus:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioNode(im)nameForOutputBus:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioPCMBuffer(im)initWithPCMFormat:frameCapacity:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioTime(im)extrapolateTimeFromAnchor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVComposition(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVComposition(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVContentKeyRequest(im)makeStreamingContentKeyRequestDataForApp:contentIdentifier:options:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVContentKeySession(cm)contentKeySessionWithKeySystem:storageDirectoryAtURL:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVContentKeySession(cm)pendingExpiredSessionReportsWithAppIdentifier:storageDirectoryAtURL:",
+    "LeftComment": "[AnyHashable : Any]",
+    "RightUsr": "",
+    "RightComment": "Data",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)AVContentKeySession(cm)removePendingExpiredSessionReports:withAppIdentifier:storageDirectoryAtURL:",
+    "LeftComment": "[AnyHashable : Any]",
+    "RightUsr": "",
+    "RightComment": "Data",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMediaSelectionOption(im)hasMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)metadataItemsFromArray:filteredByIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataIdentifier",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)identifierForKey:keySpace:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataIdentifier",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)identifierForKey:keySpace:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataKeySpace",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)keySpaceForIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataKeySpace",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)keySpaceForIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataIdentifier",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)keyForIdentifier:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataIdentifier",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)AVMetadataItem(cm)metadataItemsFromArray:withKey:keySpace:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMetadataKeySpace",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVMutableComposition(im)addMutableTrackWithMediaType:preferredTrackID:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMutableComposition(im)addMutableTrackWithMediaType:preferredTrackID:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMutableComposition(im)tracksWithMediaType:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVMutableComposition(im)tracksWithMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVMutableVideoComposition(cm)videoCompositionWithPropertiesOfAsset:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVOutputSettingsAssistant(cm)availableOutputSettingsPresets",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVOutputSettingsPreset",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVOutputSettingsAssistant(cm)outputSettingsAssistantWithPreset:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVOutputSettingsPreset",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVPlayer(im)setMediaSelectionCriteria:forMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)AVPlayer(im)mediaSelectionCriteriaForMediaCharacteristic:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVPlayerItem(im)seekToTime:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(cs)AVPlayerItem(im)seekToTime:toleranceBefore:toleranceAfter:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)AVPlayerItem(im)seekToDate:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(pl)AVPlayerItemMetadataOutputPushDelegate(im)metadataOutput:didOutputTimedMetadataGroups:fromPlayerItemTrack:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)AVPlayerMediaSelectionCriteria(im)initWithPreferredLanguages:preferredMediaCharacteristics:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVMediaCharacteristic",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)AVURLAsset(cm)audiovisualTypes",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "AVFileType",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVVideoComposition(cm)videoCompositionWithPropertiesOfAsset:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:1:0",
+    "LeftUsr": "c:objc(cs)SCNAnimationEvent(cm)animationEventWithKeyTime:block:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(py)geometrySources",
+    "LeftComment": "geometrySources",
+    "RightUsr": "",
+    "RightComment": "sources",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(im)geometrySourcesForSemantic:",
+    "LeftComment": "getGeometrySources(for:)",
+    "RightUsr": "",
+    "RightComment": "sources(for:)",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(py)geometryElements",
+    "LeftComment": "geometryElements",
+    "RightUsr": "",
+    "RightComment": "elements",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(py)geometryElementCount",
+    "LeftComment": "geometryElementCount",
+    "RightUsr": "",
+    "RightComment": "elementCount",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(im)geometryElementAtIndex:",
+    "LeftComment": "geometryElement(at:)",
+    "RightUsr": "",
+    "RightComment": "element(at:)",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FE8SceneKitVSC10SCNMatrix4cFV4simd8float4x4S0_",
+    "LeftComment": "float4x4",
+    "RightUsr": "",
+    "RightComment": "float4x4",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FE8SceneKitVSC10SCNMatrix4cFV4simd9double4x4S0_",
+    "LeftComment": "double4x4",
+    "RightUsr": "",
+    "RightComment": "double4x4",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)SCNAnimatable(im)addAnimation:forKey:",
+    "LeftComment": "CAAnimation",
+    "RightUsr": "",
+    "RightComment": "SCNAnimationProtocol",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSFileManager(im)createDirectoryAtURL:withIntermediateDirectories:attributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileAttributeKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSFileManager(im)createDirectoryAtPath:withIntermediateDirectories:attributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileAttributeKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSFileManager(im)createFileAtPath:contents:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileAttributeKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FE10FoundationCSo11FileManager13replaceItemAtFzTVS_3URL10withItemAtS1_14backupItemNameGSqSS_7optionsVS0_22ItemReplacementOptions_GSqCSo5NSURL_",
+    "LeftComment": "NSURL",
+    "RightUsr": "",
+    "RightComment": "URL",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSArray(cm)arrayWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attributesAtIndex:effectiveRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)dataFromRange:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentAttributeKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)fileWrapperFromRange:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentAttributeKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attribute:atIndex:effectiveRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attributesAtIndex:longestEffectiveRange:inRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attribute:atIndex:longestEffectiveRange:inRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithString:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:1:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)enumerateAttributesInRange:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)enumerateAttribute:inRange:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FE10FoundationCSo7NSCoder20decodeTopLevelObjectFzT6forKeySS_GSqPs9AnyObject__",
+    "LeftComment": "AnyObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSet(cm)setWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDecimalNumberHandler(cm)defaultDecimalNumberHandler",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSIndexPath(im)initWithIndexes:length:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:ZFE10FoundationCSo17NSKeyedUnarchiver31unarchiveTopLevelObjectWithDataFzCSo6NSDataGSqPs9AnyObject__",
+    "LeftComment": "AnyObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)initWithTagSchemes:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(cm)availableTagSchemesForLanguage:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:scheme:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:1:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:scheme:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag?",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)tagAtIndex:scheme:tokenRange:sentenceRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)tagAtIndex:scheme:tokenRange:sentenceRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSArray(cm)arrayWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)setAttributes:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithString:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)readFromURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)readFromData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)addAttribute:value:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)addAttributes:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)removeAttribute:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSOrderedSet(cm)orderedSetWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableOrderedSet(im)addObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSMutableOrderedSet(im)replaceObjectsInRange:withObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSet(cm)setWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSOrderedSet(cm)orderedSetWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSet(cm)setWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)linguisticTagsInRange:scheme:options:orthography:tokenRanges:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSString(im)linguisticTagsInRange:scheme:options:orthography:tokenRanges:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSString(im)enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5:1:0",
+    "LeftUsr": "c:objc(cs)NSString(im)enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag?",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawWithRect:options:attributes:context:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)boundingRectWithSize:options:attributes:context:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)sizeWithAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSString(im)sizeWithAttributes:",
+    "LeftComment": "size(attributes:)",
+    "RightUsr": "",
+    "RightComment": "size(withAttributes:)",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawAtPoint:withAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawInRect:withAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(cm)addressCheckingResultWithRange:components:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextCheckingKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(cm)transitInformationCheckingResultWithRange:components:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextCheckingKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(im)rangeAtIndex:",
+    "LeftComment": "rangeAt(_:)",
+    "RightUsr": "",
+    "RightComment": "range(at:)",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(im)resultByAdjustingRangesWithOffset:",
+    "LeftComment": "resultByAdjustingRangesWithOffset(_:)",
+    "RightUsr": "",
+    "RightComment": "adjustingRanges(offset:)",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSUUID(im)initWithUUIDBytes:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSUUID(im)getUUIDBytes:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSUbiquitousKeyValueStore(cm)defaultStore",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSProgress(im)initWithParent:userInfo:",
+    "LeftComment": "AnyHashable",
+    "RightUsr": "",
+    "RightComment": "ProgressUserInfoKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FE10FoundationVSC8_NSRangecFGVs5RangeSi_S0_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FE10FoundationVSC8_NSRangecFGVs5RangeSi_S0_",
+    "LeftComment": "Range<Int>",
+    "RightUsr": "",
+    "RightComment": "String",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSetcFT12charactersInGVs5RangeSc__S0_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSetcFT12charactersInGVs11ClosedRangeSc__S0_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFT12charactersInGVs5RangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFT12charactersInGVs11ClosedRangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFT12charactersInGVs5RangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFT12charactersInGVs11ClosedRangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFScT8insertedSb17memberAfterInsertSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFScT8insertedSb17memberAfterInsertSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6updateFT4withSc_GSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6updateFT4withSc_GSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFScGSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFScGSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet8containsFScSb",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FOV10Foundation8URLError4CodecFT8rawValueSi_GSqS1__",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameplayKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameplayKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AudioToolbox"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCTNSNotificationExpectation(im)initWithName:object:notificationCenter:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNotification.Name",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCTNSNotificationExpectation(im)initWithName:object:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNotification.Name",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCTNSNotificationExpectation(im)initWithName:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNotification.Name",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:",
+    "LeftComment": "XCTWaiterResult",
+    "RightUsr": "",
+    "RightComment": "XCTWaiter.Result",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:enforceOrder:",
+    "LeftComment": "XCTWaiterResult",
+    "RightUsr": "",
+    "RightComment": "XCTWaiter.Result",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTWaiter(cm)waitForExpectations:timeout:",
+    "LeftComment": "XCTWaiterResult",
+    "RightUsr": "",
+    "RightComment": "XCTWaiter.Result",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTWaiter(cm)waitForExpectations:timeout:enforceOrder:",
+    "LeftComment": "XCTWaiterResult",
+    "RightUsr": "",
+    "RightComment": "XCTWaiter.Result",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)XCTestCase(im)recordFailureWithDescription:inFile:atLine:expected:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestCase(cm)testInvocations",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "testInvocations",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestCase(cm)defaultPerformanceMetrics",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultPerformanceMetrics",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)XCTestCase(im)measureMetrics:automaticallyStartMeasuring:forBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "XCTPerformanceMetric",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestCase(cm)defaultTestSuite",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "defaultTestSuite",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCTestCase(im)expectationForNotification:object:handler:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSNotification.Name",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(cs)XCTestCaseRun(im)recordFailureInTest:withDescription:inFile:atLine:expected:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)XCTestObservation(im)testSuite:didFailWithDescription:inFile:atLine:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(pl)XCTestObservation(im)testCase:didFailWithDescription:inFile:atLine:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestObservationCenter(cm)sharedTestObservationCenter",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4",
+    "LeftUsr": "c:objc(cs)XCTestObserver(im)testCaseDidFail:withDescription:inFile:atLine:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3",
+    "LeftUsr": "c:objc(cs)XCTestRun(im)recordFailureWithDescription:inFile:atLine:expected:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCTestSuite(cm)defaultTestSuite",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCUIDevice(cm)sharedDevice",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIDevice(im)pressButton:",
+    "LeftComment": "XCUIDeviceButton",
+    "RightUsr": "",
+    "RightComment": "XCUIDevice.Button",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)descendantsMatchingType:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)childrenMatchingType:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCUIElement(im)_waitForExistenceWithTimeout:",
+    "LeftComment": "_waitForExistence(withTimeout:)",
+    "RightUsr": "",
+    "RightComment": "waitForExistence(timeout:)",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)elementAtIndex:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)elementBoundByIndex:",
+    "LeftComment": "UInt",
+    "RightUsr": "",
+    "RightComment": "Int",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)elementMatchingType:identifier:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)descendantsMatchingType:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)childrenMatchingType:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)matchingType:identifier:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIElementQuery(im)containingType:identifier:",
+    "LeftComment": "XCUIElementType",
+    "RightUsr": "",
+    "RightComment": "XCUIElement.Type",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)XCUIRemote(cm)sharedRemote",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "shared",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIRemote(im)pressButton:",
+    "LeftComment": "XCUIRemoteButton",
+    "RightUsr": "",
+    "RightComment": "XCUIRemote.Button",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)XCUIRemote(im)pressButton:forDuration:",
+    "LeftComment": "XCUIRemoteButton",
+    "RightUsr": "",
+    "RightComment": "XCUIRemote.Button",
+    "ModuleName": "XCTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreData"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreData"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@MTLAttributeFormat@MTLAttributeFormatUInt1010102Normalized",
+    "LeftComment": "uInt1010102Normalized",
+    "RightUsr": "",
+    "RightComment": "uint1010102Normalized",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLBuffer(im)newTextureWithDescriptor:offset:bytesPerRow:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandBuffer(im)blitCommandEncoder",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandBuffer(im)renderCommandEncoderWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandBuffer(im)computeCommandEncoder",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandBuffer(im)parallelRenderCommandEncoderWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandQueue(im)commandBuffer",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLCommandQueue(im)commandBufferWithUnretainedReferences",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBytes:length:atIndex:",
+    "LeftComment": "setBytes(_:length:at:)",
+    "RightUsr": "",
+    "RightComment": "setBytes(_:length:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBuffer:offset:atIndex:",
+    "LeftComment": "setBuffer(_:offset:at:)",
+    "RightUsr": "",
+    "RightComment": "setBuffer(_:offset:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBufferOffset:atIndex:",
+    "LeftComment": "setBufferOffset(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setBufferOffset(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setTexture:atIndex:",
+    "LeftComment": "setTexture(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setTexture(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setSamplerState:atIndex:",
+    "LeftComment": "setSamplerState(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setSamplerState(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setSamplerState:lodMinClamp:lodMaxClamp:atIndex:",
+    "LeftComment": "setSamplerState(_:lodMinClamp:lodMaxClamp:at:)",
+    "RightUsr": "",
+    "RightComment": "setSamplerState(_:lodMinClamp:lodMaxClamp:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLComputeCommandEncoder(im)setThreadgroupMemoryLength:atIndex:",
+    "LeftComment": "setThreadgroupMemoryLength(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setThreadgroupMemoryLength(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newCommandQueue",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newCommandQueueWithMaxCommandBufferCount:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newHeapWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newBufferWithLength:options:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newBufferWithBytes:length:options:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newBufferWithBytesNoCopy:length:options:deallocator:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newDepthStencilStateWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newTextureWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newSamplerStateWithDescriptor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newDefaultLibrary",
+    "LeftComment": "newDefaultLibrary()",
+    "RightUsr": "",
+    "RightComment": "makeDefaultLibrary()",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLDevice(im)newFence",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)MTLFunctionConstantValues(im)setConstantValue:type:atIndex:",
+    "LeftComment": "setConstantValue(_:type:at:)",
+    "RightUsr": "",
+    "RightComment": "setConstantValue(_:type:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLParallelRenderCommandEncoder(im)renderCommandEncoder",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLParallelRenderCommandEncoder(im)setColorStoreAction:atIndex:",
+    "LeftComment": "setColorStoreAction(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setColorStoreAction(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBytes:length:atIndex:",
+    "LeftComment": "setVertexBytes(_:length:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexBytes(_:length:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBuffer:offset:atIndex:",
+    "LeftComment": "setVertexBuffer(_:offset:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexBuffer(_:offset:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBufferOffset:atIndex:",
+    "LeftComment": "setVertexBufferOffset(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexBufferOffset(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexTexture:atIndex:",
+    "LeftComment": "setVertexTexture(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexTexture(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexSamplerState:atIndex:",
+    "LeftComment": "setVertexSamplerState(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexSamplerState(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexSamplerState:lodMinClamp:lodMaxClamp:atIndex:",
+    "LeftComment": "setVertexSamplerState(_:lodMinClamp:lodMaxClamp:at:)",
+    "RightUsr": "",
+    "RightComment": "setVertexSamplerState(_:lodMinClamp:lodMaxClamp:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBytes:length:atIndex:",
+    "LeftComment": "setFragmentBytes(_:length:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentBytes(_:length:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBuffer:offset:atIndex:",
+    "LeftComment": "setFragmentBuffer(_:offset:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentBuffer(_:offset:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBufferOffset:atIndex:",
+    "LeftComment": "setFragmentBufferOffset(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentBufferOffset(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentBuffers:offsets:withRange:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentTexture:atIndex:",
+    "LeftComment": "setFragmentTexture(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentTexture(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentSamplerState:atIndex:",
+    "LeftComment": "setFragmentSamplerState(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentSamplerState(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentSamplerState:lodMinClamp:lodMaxClamp:atIndex:",
+    "LeftComment": "setFragmentSamplerState(_:lodMinClamp:lodMaxClamp:at:)",
+    "RightUsr": "",
+    "RightComment": "setFragmentSamplerState(_:lodMinClamp:lodMaxClamp:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLRenderCommandEncoder(im)setColorStoreAction:atIndex:",
+    "LeftComment": "setColorStoreAction(_:at:)",
+    "RightUsr": "",
+    "RightComment": "setColorStoreAction(_:index:)",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLTexture(im)newTextureViewWithPixelFormat:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)MTLTexture(im)newTextureViewWithPixelFormat:textureType:levels:slices:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Metal"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@SKCloudServiceSetupOptionsAffiliateTokenKey",
+    "LeftComment": "affiliateTokenKey",
+    "RightUsr": "",
+    "RightComment": "affiliateToken",
+    "ModuleName": "StoreKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@SKCloudServiceSetupOptionsCampaignTokenKey",
+    "LeftComment": "campaignTokenKey",
+    "RightUsr": "",
+    "RightComment": "campaignToken",
+    "ModuleName": "StoreKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SKPaymentQueue(im)resumeDownloads:",
+    "LeftComment": "resume(_:)",
+    "RightUsr": "",
+    "RightComment": "resumeDownloads(_:)",
+    "ModuleName": "StoreKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Photos"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CKFetchShareMetadataOperation(im)initWithShareURLs:",
+    "LeftComment": "init(share:)",
+    "RightUsr": "",
+    "RightComment": "init(shareURLs:)",
+    "ModuleName": "CloudKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CKShare(im)initWithRootRecord:shareID:",
+    "LeftComment": "init(rootRecord:share:)",
+    "RightUsr": "",
+    "RightComment": "init(rootRecord:shareID:)",
+    "ModuleName": "CloudKit"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSTextLayoutOrientation",
+    "OldPrintedName": "NSTextLayoutOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "TextLayoutOrientation",
+    "NewTypeName": "NSLayoutManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSGlyphProperty",
+    "OldPrintedName": "NSGlyphProperty",
+    "OldTypeName": "",
+    "NewPrintedName": "GlyphProperty",
+    "NewTypeName": "NSLayoutManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@NSControlCharacterAction",
+    "OldPrintedName": "NSControlCharacterAction",
+    "OldTypeName": "",
+    "NewPrintedName": "ControlCharacterAction",
+    "NewTypeName": "NSLayoutManager"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSSecureCoding(cpy)supportsSecureCoding",
+    "OldPrintedName": "supportsSecureCoding",
+    "OldTypeName": "CKUserIdentityLookupInfo",
+    "NewPrintedName": "supportsSecureCoding",
+    "NewTypeName": "NSParagraphStyle"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTabColumnTerminatorsAttributeName",
+    "OldPrintedName": "NSTabColumnTerminatorsAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "columnTerminators",
+    "NewTypeName": "NSTextTab.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIAppearance(cm)appearance",
+    "OldPrintedName": "appearance()",
+    "OldTypeName": "UIView",
+    "NewPrintedName": "appearance()",
+    "NewTypeName": "UIAppearance"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIAppearance(cm)appearanceWhenContainedInInstancesOfClasses:",
+    "OldPrintedName": "appearance(whenContainedInInstancesOf:)",
+    "OldTypeName": "UIView",
+    "NewPrintedName": "appearance(whenContainedInInstancesOf:)",
+    "NewTypeName": "UIAppearance"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIAppearance(cm)appearanceForTraitCollection:",
+    "OldPrintedName": "appearance(for:)",
+    "OldTypeName": "UIView",
+    "NewPrintedName": "appearance(for:)",
+    "NewTypeName": "UIAppearance"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIAppearance(cm)appearanceForTraitCollection:whenContainedInInstancesOfClasses:",
+    "OldPrintedName": "appearance(for:whenContainedInInstancesOf:)",
+    "OldTypeName": "UIView",
+    "NewPrintedName": "appearance(for:whenContainedInInstancesOf:)",
+    "NewTypeName": "UIAppearance"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightUltraLight",
+    "OldPrintedName": "UIFontWeightUltraLight",
+    "OldTypeName": "",
+    "NewPrintedName": "ultraLight",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightThin",
+    "OldPrintedName": "UIFontWeightThin",
+    "OldTypeName": "",
+    "NewPrintedName": "thin",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightLight",
+    "OldPrintedName": "UIFontWeightLight",
+    "OldTypeName": "",
+    "NewPrintedName": "light",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightRegular",
+    "OldPrintedName": "UIFontWeightRegular",
+    "OldTypeName": "",
+    "NewPrintedName": "regular",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightMedium",
+    "OldPrintedName": "UIFontWeightMedium",
+    "OldTypeName": "",
+    "NewPrintedName": "medium",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightSemibold",
+    "OldPrintedName": "UIFontWeightSemibold",
+    "OldTypeName": "",
+    "NewPrintedName": "semibold",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightBold",
+    "OldPrintedName": "UIFontWeightBold",
+    "OldTypeName": "",
+    "NewPrintedName": "bold",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightHeavy",
+    "OldPrintedName": "UIFontWeightHeavy",
+    "OldTypeName": "",
+    "NewPrintedName": "heavy",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightBlack",
+    "OldPrintedName": "UIFontWeightBlack",
+    "OldTypeName": "",
+    "NewPrintedName": "black",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorFamilyAttribute",
+    "OldPrintedName": "UIFontDescriptorFamilyAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "family",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorNameAttribute",
+    "OldPrintedName": "UIFontDescriptorNameAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "name",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorFaceAttribute",
+    "OldPrintedName": "UIFontDescriptorFaceAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "face",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorSizeAttribute",
+    "OldPrintedName": "UIFontDescriptorSizeAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "size",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorVisibleNameAttribute",
+    "OldPrintedName": "UIFontDescriptorVisibleNameAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "visibleName",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorMatrixAttribute",
+    "OldPrintedName": "UIFontDescriptorMatrixAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "matrix",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorCharacterSetAttribute",
+    "OldPrintedName": "UIFontDescriptorCharacterSetAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "characterSet",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorCascadeListAttribute",
+    "OldPrintedName": "UIFontDescriptorCascadeListAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "cascadeList",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorTraitsAttribute",
+    "OldPrintedName": "UIFontDescriptorTraitsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "traits",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorFixedAdvanceAttribute",
+    "OldPrintedName": "UIFontDescriptorFixedAdvanceAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "fixedAdvance",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorFeatureSettingsAttribute",
+    "OldPrintedName": "UIFontDescriptorFeatureSettingsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "featureSettings",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorTextStyleAttribute",
+    "OldPrintedName": "UIFontDescriptorTextStyleAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "textStyle",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontSymbolicTrait",
+    "OldPrintedName": "UIFontSymbolicTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "symbolic",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightTrait",
+    "OldPrintedName": "UIFontWeightTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "weight",
+    "NewTypeName": "UIFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWidthTrait",
+    "OldPrintedName": "UIFontWidthTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "width",
+    "NewTypeName": "UIFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontSlantTrait",
+    "OldPrintedName": "UIFontSlantTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "slant",
+    "NewTypeName": "UIFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontFeatureTypeIdentifierKey",
+    "OldPrintedName": "UIFontFeatureTypeIdentifierKey",
+    "OldTypeName": "",
+    "NewPrintedName": "featureIdentifier",
+    "NewTypeName": "UIFontDescriptor.FeatureKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontFeatureSelectorIdentifierKey",
+    "OldPrintedName": "UIFontFeatureSelectorIdentifierKey",
+    "OldTypeName": "",
+    "NewPrintedName": "typeIdentifier",
+    "NewTypeName": "UIFontDescriptor.FeatureKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UILayoutPriorityRequired",
+    "OldPrintedName": "UILayoutPriorityRequired",
+    "OldTypeName": "",
+    "NewPrintedName": "required",
+    "NewTypeName": "UILayoutPriority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UILayoutPriorityDefaultHigh",
+    "OldPrintedName": "UILayoutPriorityDefaultHigh",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultHigh",
+    "NewTypeName": "UILayoutPriority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UILayoutPriorityDefaultLow",
+    "OldPrintedName": "UILayoutPriorityDefaultLow",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultLow",
+    "NewTypeName": "UILayoutPriority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UILayoutPriorityFittingSizeLevel",
+    "OldPrintedName": "UILayoutPriorityFittingSizeLevel",
+    "OldTypeName": "",
+    "NewPrintedName": "fittingSizeLevel",
+    "NewTypeName": "UILayoutPriority"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIPopoverBackgroundViewMethods(cm)arrowBase",
+    "OldPrintedName": "arrowBase()",
+    "OldTypeName": "UIPopoverBackgroundViewMethods",
+    "NewPrintedName": "arrowBase()",
+    "NewTypeName": "UIPopoverBackgroundView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIPopoverBackgroundViewMethods(cm)contentViewInsets",
+    "OldPrintedName": "contentViewInsets()",
+    "OldTypeName": "UIPopoverBackgroundViewMethods",
+    "NewPrintedName": "contentViewInsets()",
+    "NewTypeName": "UIPopoverBackgroundView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)UIPopoverBackgroundViewMethods(cm)arrowHeight",
+    "OldPrintedName": "arrowHeight()",
+    "OldTypeName": "UIPopoverBackgroundViewMethods",
+    "NewPrintedName": "arrowHeight()",
+    "NewTypeName": "UIPopoverBackgroundView"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKModelErrorDomain",
+    "OldPrintedName": "MTKModelErrorDomain",
+    "OldTypeName": "",
+    "NewPrintedName": "domain",
+    "NewTypeName": "MTKModelError"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKModelErrorKey",
+    "OldPrintedName": "MTKModelErrorKey",
+    "OldTypeName": "",
+    "NewPrintedName": "key",
+    "NewTypeName": "MTKModelError"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderErrorDomain",
+    "OldPrintedName": "MTKTextureLoaderErrorDomain",
+    "OldTypeName": "",
+    "NewPrintedName": "domain",
+    "NewTypeName": "MTKTextureLoader.Error"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderErrorKey",
+    "OldPrintedName": "MTKTextureLoaderErrorKey",
+    "OldTypeName": "",
+    "NewPrintedName": "key",
+    "NewTypeName": "MTKTextureLoader.Error"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionAllocateMipmaps",
+    "OldPrintedName": "MTKTextureLoaderOptionAllocateMipmaps",
+    "OldTypeName": "",
+    "NewPrintedName": "allocateMipmaps",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionGenerateMipmaps",
+    "OldPrintedName": "MTKTextureLoaderOptionGenerateMipmaps",
+    "OldTypeName": "",
+    "NewPrintedName": "generateMipmaps",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionSRGB",
+    "OldPrintedName": "MTKTextureLoaderOptionSRGB",
+    "OldTypeName": "",
+    "NewPrintedName": "SRGB",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionTextureUsage",
+    "OldPrintedName": "MTKTextureLoaderOptionTextureUsage",
+    "OldTypeName": "",
+    "NewPrintedName": "textureUsage",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionTextureCPUCacheMode",
+    "OldPrintedName": "MTKTextureLoaderOptionTextureCPUCacheMode",
+    "OldTypeName": "",
+    "NewPrintedName": "textureCPUCacheMode",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionTextureStorageMode",
+    "OldPrintedName": "MTKTextureLoaderOptionTextureStorageMode",
+    "OldTypeName": "",
+    "NewPrintedName": "textureStorageMode",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionCubeLayout",
+    "OldPrintedName": "MTKTextureLoaderOptionCubeLayout",
+    "OldTypeName": "",
+    "NewPrintedName": "cubeLayout",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOptionOrigin",
+    "OldPrintedName": "MTKTextureLoaderOptionOrigin",
+    "OldTypeName": "",
+    "NewPrintedName": "origin",
+    "NewTypeName": "MTKTextureLoader.Option"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderCubeLayoutVertical",
+    "OldPrintedName": "MTKTextureLoaderCubeLayoutVertical",
+    "OldTypeName": "",
+    "NewPrintedName": "vertical",
+    "NewTypeName": "MTKTextureLoader.CubeLayout"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOriginTopLeft",
+    "OldPrintedName": "MTKTextureLoaderOriginTopLeft",
+    "OldTypeName": "",
+    "NewPrintedName": "topLeft",
+    "NewTypeName": "MTKTextureLoader.Origin"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOriginBottomLeft",
+    "OldPrintedName": "MTKTextureLoaderOriginBottomLeft",
+    "OldTypeName": "",
+    "NewPrintedName": "bottomLeft",
+    "NewTypeName": "MTKTextureLoader.Origin"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@MTKTextureLoaderOriginFlippedVertically",
+    "OldPrintedName": "MTKTextureLoaderOriginFlippedVertically",
+    "OldTypeName": "",
+    "NewPrintedName": "flippedVertically",
+    "NewTypeName": "MTKTextureLoader.Origin"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@MTKTextureLoaderCallback",
+    "OldPrintedName": "MTKTextureLoaderCallback",
+    "OldTypeName": "",
+    "NewPrintedName": "Callback",
+    "NewTypeName": "MTKTextureLoader"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@T@MTKTextureLoaderArrayCallback",
+    "OldPrintedName": "MTKTextureLoaderArrayCallback",
+    "OldTypeName": "",
+    "NewPrintedName": "ArrayCallback",
+    "NewTypeName": "MTKTextureLoader"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isEqual:",
+    "OldPrintedName": "isEqual(_:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "isEqual(_:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)performSelector:",
+    "OldPrintedName": "perform(_:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "perform(_:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)performSelector:withObject:",
+    "OldPrintedName": "perform(_:with:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "perform(_:with:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)performSelector:withObject:withObject:",
+    "OldPrintedName": "perform(_:with:with:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "perform(_:with:with:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isProxy",
+    "OldPrintedName": "isProxy()",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "isProxy()",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isKindOfClass:",
+    "OldPrintedName": "isKind(of:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "isKind(of:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isMemberOfClass:",
+    "OldPrintedName": "isMember(of:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "isMember(of:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)respondsToSelector:",
+    "OldPrintedName": "responds(to:)",
+    "OldTypeName": "NSProxy",
+    "NewPrintedName": "responds(to:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)MDLTransformComponent(cm)globalTransformWithObject:atTime:",
+    "OldPrintedName": "globalTransform(with:atTime:)",
+    "OldTypeName": "MDLTransformComponent",
+    "NewPrintedName": "globalTransform(with:atTime:)",
+    "NewTypeName": "MDLTransform"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAssetImageGeneratorApertureModeCleanAperture",
+    "OldPrintedName": "AVAssetImageGeneratorApertureModeCleanAperture",
+    "OldTypeName": "",
+    "NewPrintedName": "cleanAperture",
+    "NewTypeName": "AVAssetImageGeneratorApertureMode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAssetImageGeneratorApertureModeProductionAperture",
+    "OldPrintedName": "AVAssetImageGeneratorApertureModeProductionAperture",
+    "OldTypeName": "",
+    "NewPrintedName": "productionAperture",
+    "NewTypeName": "AVAssetImageGeneratorApertureMode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAssetImageGeneratorApertureModeEncodedPixels",
+    "OldPrintedName": "AVAssetImageGeneratorApertureModeEncodedPixels",
+    "OldTypeName": "",
+    "NewPrintedName": "encodedPixels",
+    "NewTypeName": "AVAssetImageGeneratorApertureMode"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeAudioFallback",
+    "OldPrintedName": "AVTrackAssociationTypeAudioFallback",
+    "OldTypeName": "",
+    "NewPrintedName": "audioFallback",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeChapterList",
+    "OldPrintedName": "AVTrackAssociationTypeChapterList",
+    "OldTypeName": "",
+    "NewPrintedName": "chapterList",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeForcedSubtitlesOnly",
+    "OldPrintedName": "AVTrackAssociationTypeForcedSubtitlesOnly",
+    "OldTypeName": "",
+    "NewPrintedName": "forcedSubtitlesOnly",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeSelectionFollower",
+    "OldPrintedName": "AVTrackAssociationTypeSelectionFollower",
+    "OldTypeName": "",
+    "NewPrintedName": "selectionFollower",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeTimecode",
+    "OldPrintedName": "AVTrackAssociationTypeTimecode",
+    "OldTypeName": "",
+    "NewPrintedName": "timecode",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVTrackAssociationTypeMetadataReferent",
+    "OldPrintedName": "AVTrackAssociationTypeMetadataReferent",
+    "OldTypeName": "",
+    "NewPrintedName": "metadataReferent",
+    "NewTypeName": "AVAssetTrack.AssociationType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAudioTimePitchAlgorithmLowQualityZeroLatency",
+    "OldPrintedName": "AVAudioTimePitchAlgorithmLowQualityZeroLatency",
+    "OldTypeName": "",
+    "NewPrintedName": "lowQualityZeroLatency",
+    "NewTypeName": "AVAudioTimePitchAlgorithm"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAudioTimePitchAlgorithmTimeDomain",
+    "OldPrintedName": "AVAudioTimePitchAlgorithmTimeDomain",
+    "OldTypeName": "",
+    "NewPrintedName": "timeDomain",
+    "NewTypeName": "AVAudioTimePitchAlgorithm"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAudioTimePitchAlgorithmSpectral",
+    "OldPrintedName": "AVAudioTimePitchAlgorithmSpectral",
+    "OldTypeName": "",
+    "NewPrintedName": "spectral",
+    "NewTypeName": "AVAudioTimePitchAlgorithm"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVAudioTimePitchAlgorithmVarispeed",
+    "OldPrintedName": "AVAudioTimePitchAlgorithmVarispeed",
+    "OldTypeName": "",
+    "NewPrintedName": "varispeed",
+    "NewTypeName": "AVAudioTimePitchAlgorithm"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeQuickTimeMovie",
+    "OldPrintedName": "AVFileTypeQuickTimeMovie",
+    "OldTypeName": "",
+    "NewPrintedName": "mov",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeMPEG4",
+    "OldPrintedName": "AVFileTypeMPEG4",
+    "OldTypeName": "",
+    "NewPrintedName": "mp4",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAppleM4V",
+    "OldPrintedName": "AVFileTypeAppleM4V",
+    "OldTypeName": "",
+    "NewPrintedName": "m4v",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAppleM4A",
+    "OldPrintedName": "AVFileTypeAppleM4A",
+    "OldTypeName": "",
+    "NewPrintedName": "m4a",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileType3GPP",
+    "OldPrintedName": "AVFileType3GPP",
+    "OldTypeName": "",
+    "NewPrintedName": "mobile3GPP",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileType3GPP2",
+    "OldPrintedName": "AVFileType3GPP2",
+    "OldTypeName": "",
+    "NewPrintedName": "mobile3GPP2",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeCoreAudioFormat",
+    "OldPrintedName": "AVFileTypeCoreAudioFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "caf",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeWAVE",
+    "OldPrintedName": "AVFileTypeWAVE",
+    "OldTypeName": "",
+    "NewPrintedName": "wav",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAIFF",
+    "OldPrintedName": "AVFileTypeAIFF",
+    "OldTypeName": "",
+    "NewPrintedName": "aiff",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAIFC",
+    "OldPrintedName": "AVFileTypeAIFC",
+    "OldTypeName": "",
+    "NewPrintedName": "aifc",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAMR",
+    "OldPrintedName": "AVFileTypeAMR",
+    "OldTypeName": "",
+    "NewPrintedName": "amr",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeMPEGLayer3",
+    "OldPrintedName": "AVFileTypeMPEGLayer3",
+    "OldTypeName": "",
+    "NewPrintedName": "mp3",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeSunAU",
+    "OldPrintedName": "AVFileTypeSunAU",
+    "OldTypeName": "",
+    "NewPrintedName": "au",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeAC3",
+    "OldPrintedName": "AVFileTypeAC3",
+    "OldTypeName": "",
+    "NewPrintedName": "ac3",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVFileTypeEnhancedAC3",
+    "OldPrintedName": "AVFileTypeEnhancedAC3",
+    "OldTypeName": "",
+    "NewPrintedName": "eac3",
+    "NewTypeName": "AVFileType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVLayerVideoGravityResizeAspect",
+    "OldPrintedName": "AVLayerVideoGravityResizeAspect",
+    "OldTypeName": "",
+    "NewPrintedName": "resizeAspect",
+    "NewTypeName": "AVLayerVideoGravity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVLayerVideoGravityResizeAspectFill",
+    "OldPrintedName": "AVLayerVideoGravityResizeAspectFill",
+    "OldTypeName": "",
+    "NewPrintedName": "resizeAspectFill",
+    "NewTypeName": "AVLayerVideoGravity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVLayerVideoGravityResize",
+    "OldPrintedName": "AVLayerVideoGravityResize",
+    "OldTypeName": "",
+    "NewPrintedName": "resize",
+    "NewTypeName": "AVLayerVideoGravity"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicVisual",
+    "OldPrintedName": "AVMediaCharacteristicVisual",
+    "OldTypeName": "",
+    "NewPrintedName": "visual",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicAudible",
+    "OldPrintedName": "AVMediaCharacteristicAudible",
+    "OldTypeName": "",
+    "NewPrintedName": "audible",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicLegible",
+    "OldPrintedName": "AVMediaCharacteristicLegible",
+    "OldTypeName": "",
+    "NewPrintedName": "legible",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicFrameBased",
+    "OldPrintedName": "AVMediaCharacteristicFrameBased",
+    "OldTypeName": "",
+    "NewPrintedName": "frameBased",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicUsesWideGamutColorSpace",
+    "OldPrintedName": "AVMediaCharacteristicUsesWideGamutColorSpace",
+    "OldTypeName": "",
+    "NewPrintedName": "usesWideGamutColorSpace",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicIsMainProgramContent",
+    "OldPrintedName": "AVMediaCharacteristicIsMainProgramContent",
+    "OldTypeName": "",
+    "NewPrintedName": "isMainProgramContent",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicIsAuxiliaryContent",
+    "OldPrintedName": "AVMediaCharacteristicIsAuxiliaryContent",
+    "OldTypeName": "",
+    "NewPrintedName": "isAuxiliaryContent",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicContainsOnlyForcedSubtitles",
+    "OldPrintedName": "AVMediaCharacteristicContainsOnlyForcedSubtitles",
+    "OldTypeName": "",
+    "NewPrintedName": "containsOnlyForcedSubtitles",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicTranscribesSpokenDialogForAccessibility",
+    "OldPrintedName": "AVMediaCharacteristicTranscribesSpokenDialogForAccessibility",
+    "OldTypeName": "",
+    "NewPrintedName": "transcribesSpokenDialogForAccessibility",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicDescribesMusicAndSoundForAccessibility",
+    "OldPrintedName": "AVMediaCharacteristicDescribesMusicAndSoundForAccessibility",
+    "OldTypeName": "",
+    "NewPrintedName": "describesMusicAndSoundForAccessibility",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicEasyToRead",
+    "OldPrintedName": "AVMediaCharacteristicEasyToRead",
+    "OldTypeName": "",
+    "NewPrintedName": "easyToRead",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicDescribesVideoForAccessibility",
+    "OldPrintedName": "AVMediaCharacteristicDescribesVideoForAccessibility",
+    "OldTypeName": "",
+    "NewPrintedName": "describesVideoForAccessibility",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicLanguageTranslation",
+    "OldPrintedName": "AVMediaCharacteristicLanguageTranslation",
+    "OldTypeName": "",
+    "NewPrintedName": "languageTranslation",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicDubbedTranslation",
+    "OldPrintedName": "AVMediaCharacteristicDubbedTranslation",
+    "OldTypeName": "",
+    "NewPrintedName": "dubbedTranslation",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaCharacteristicVoiceOverTranslation",
+    "OldPrintedName": "AVMediaCharacteristicVoiceOverTranslation",
+    "OldTypeName": "",
+    "NewPrintedName": "voiceOverTranslation",
+    "NewTypeName": "AVMediaCharacteristic"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeVideo",
+    "OldPrintedName": "AVMediaTypeVideo",
+    "OldTypeName": "",
+    "NewPrintedName": "video",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeAudio",
+    "OldPrintedName": "AVMediaTypeAudio",
+    "OldTypeName": "",
+    "NewPrintedName": "audio",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeText",
+    "OldPrintedName": "AVMediaTypeText",
+    "OldTypeName": "",
+    "NewPrintedName": "text",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeClosedCaption",
+    "OldPrintedName": "AVMediaTypeClosedCaption",
+    "OldTypeName": "",
+    "NewPrintedName": "closedCaption",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeSubtitle",
+    "OldPrintedName": "AVMediaTypeSubtitle",
+    "OldTypeName": "",
+    "NewPrintedName": "subtitle",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeTimecode",
+    "OldPrintedName": "AVMediaTypeTimecode",
+    "OldTypeName": "",
+    "NewPrintedName": "timecode",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeMetadata",
+    "OldPrintedName": "AVMediaTypeMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeMuxed",
+    "OldPrintedName": "AVMediaTypeMuxed",
+    "OldTypeName": "",
+    "NewPrintedName": "muxed",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMediaTypeMetadataObject",
+    "OldPrintedName": "AVMediaTypeMetadataObject",
+    "OldTypeName": "",
+    "NewPrintedName": "metadataObject",
+    "NewTypeName": "AVMediaType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataExtraAttributeValueURIKey",
+    "OldPrintedName": "AVMetadataExtraAttributeValueURIKey",
+    "OldTypeName": "",
+    "NewPrintedName": "valueURI",
+    "NewTypeName": "AVMetadataExtraAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataExtraAttributeBaseURIKey",
+    "OldPrintedName": "AVMetadataExtraAttributeBaseURIKey",
+    "OldTypeName": "",
+    "NewPrintedName": "baseURI",
+    "NewTypeName": "AVMetadataExtraAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataExtraAttributeInfoKey",
+    "OldPrintedName": "AVMetadataExtraAttributeInfoKey",
+    "OldTypeName": "",
+    "NewPrintedName": "info",
+    "NewTypeName": "AVMetadataExtraAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatQuickTimeUserData",
+    "OldPrintedName": "AVMetadataFormatQuickTimeUserData",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserData",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatISOUserData",
+    "OldPrintedName": "AVMetadataFormatISOUserData",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserData",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatQuickTimeMetadata",
+    "OldPrintedName": "AVMetadataFormatQuickTimeMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadata",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatiTunesMetadata",
+    "OldPrintedName": "AVMetadataFormatiTunesMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadata",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatID3Metadata",
+    "OldPrintedName": "AVMetadataFormatID3Metadata",
+    "OldTypeName": "",
+    "NewPrintedName": "id3Metadata",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataFormatHLSMetadata",
+    "OldPrintedName": "AVMetadataFormatHLSMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "hlsMetadata",
+    "NewTypeName": "AVMetadataFormat"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierTitle",
+    "OldPrintedName": "AVMetadataCommonIdentifierTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierCreator",
+    "OldPrintedName": "AVMetadataCommonIdentifierCreator",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierCreator",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierSubject",
+    "OldPrintedName": "AVMetadataCommonIdentifierSubject",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierSubject",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierDescription",
+    "OldPrintedName": "AVMetadataCommonIdentifierDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierPublisher",
+    "OldPrintedName": "AVMetadataCommonIdentifierPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierContributor",
+    "OldPrintedName": "AVMetadataCommonIdentifierContributor",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierContributor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierCreationDate",
+    "OldPrintedName": "AVMetadataCommonIdentifierCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierCreationDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierLastModifiedDate",
+    "OldPrintedName": "AVMetadataCommonIdentifierLastModifiedDate",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierLastModifiedDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierType",
+    "OldPrintedName": "AVMetadataCommonIdentifierType",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierType",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierFormat",
+    "OldPrintedName": "AVMetadataCommonIdentifierFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierFormat",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierAssetIdentifier",
+    "OldPrintedName": "AVMetadataCommonIdentifierAssetIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierAssetIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierSource",
+    "OldPrintedName": "AVMetadataCommonIdentifierSource",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierSource",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierLanguage",
+    "OldPrintedName": "AVMetadataCommonIdentifierLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierLanguage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierRelation",
+    "OldPrintedName": "AVMetadataCommonIdentifierRelation",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierRelation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierLocation",
+    "OldPrintedName": "AVMetadataCommonIdentifierLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierLocation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierCopyrights",
+    "OldPrintedName": "AVMetadataCommonIdentifierCopyrights",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierCopyrights",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierAlbumName",
+    "OldPrintedName": "AVMetadataCommonIdentifierAlbumName",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierAlbumName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierAuthor",
+    "OldPrintedName": "AVMetadataCommonIdentifierAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierArtist",
+    "OldPrintedName": "AVMetadataCommonIdentifierArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierArtwork",
+    "OldPrintedName": "AVMetadataCommonIdentifierArtwork",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierArtwork",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierMake",
+    "OldPrintedName": "AVMetadataCommonIdentifierMake",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierMake",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierModel",
+    "OldPrintedName": "AVMetadataCommonIdentifierModel",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierModel",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonIdentifierSoftware",
+    "OldPrintedName": "AVMetadataCommonIdentifierSoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "commonIdentifierSoftware",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataAlbum",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataAlbum",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataArranger",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataArranger",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataArtist",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataAuthor",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataChapter",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataChapter",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataChapter",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataComment",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataComment",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataComment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataComposer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataComposer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataCopyright",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataCreationDate",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataCreationDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataDescription",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataDirector",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataDirector",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataDisclaimer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataDisclaimer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataDisclaimer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataEncodedBy",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataEncodedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataFullName",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataFullName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataFullName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataGenre",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataHostComputer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataHostComputer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataHostComputer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataInformation",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataInformation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataKeywords",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataKeywords",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeywords",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataMake",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataMake",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataMake",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataModel",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataModel",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataModel",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataOriginalArtist",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataOriginalArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataOriginalFormat",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataOriginalFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataOriginalFormat",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataOriginalSource",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataOriginalSource",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataOriginalSource",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataPerformers",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataPerformers",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataPerformers",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataProducer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataProducer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataPublisher",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataProduct",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataProduct",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataProduct",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataSoftware",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataSoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataSoftware",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataSpecialPlaybackRequirements",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataSpecialPlaybackRequirements",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataSpecialPlaybackRequirements",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataTrack",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataTrack",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataTrack",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataWarning",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataWarning",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataWarning",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataWriter",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataWriter",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataWriter",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataURLLink",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataURLLink",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataURLLink",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataLocationISO6709",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataLocationISO6709",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataLocationISO6709",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataTrackName",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataTrackName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataTrackName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataCredits",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataCredits",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataPhonogramRights",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataPhonogramRights",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeUserDataTaggedCharacteristic",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeUserDataTaggedCharacteristic",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataTaggedCharacteristic",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierISOUserDataCopyright",
+    "OldPrintedName": "AVMetadataIdentifierISOUserDataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierISOUserDataDate",
+    "OldPrintedName": "AVMetadataIdentifierISOUserDataDate",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierISOUserDataTaggedCharacteristic",
+    "OldPrintedName": "AVMetadataIdentifierISOUserDataTaggedCharacteristic",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataTaggedCharacteristic",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataCopyright",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataAuthor",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataPerformer",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataPerformer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataGenre",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataRecordingYear",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataRecordingYear",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataRecordingYear",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataLocation",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataLocation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataTitle",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataDescription",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataCollection",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataCollection",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataCollection",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataUserRating",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataUserRating",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataUserRating",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataThumbnail",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataThumbnail",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataThumbnail",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataAlbumAndTrack",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataAlbumAndTrack",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataAlbumAndTrack",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataKeywordList",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataKeywordList",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataKeywordList",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataMediaClassification",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataMediaClassification",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataMediaClassification",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifier3GPUserDataMediaRating",
+    "OldPrintedName": "AVMetadataIdentifier3GPUserDataMediaRating",
+    "OldTypeName": "",
+    "NewPrintedName": "identifier3GPUserDataMediaRating",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataAuthor",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataComment",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataComment",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataComment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCopyright",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCreationDate",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCreationDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDirector",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDirector",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDisplayName",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDisplayName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDisplayName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataInformation",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataInformation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataKeywords",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataKeywords",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeywords",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataProducer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataProducer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataPublisher",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataAlbum",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataAlbum",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataArtist",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataArtwork",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataArtwork",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataArtwork",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDescription",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataSoftware",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataSoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataSoftware",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataYear",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataYear",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataYear",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataGenre",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataiXML",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataiXML",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataiXML",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationISO6709",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationISO6709",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationISO6709",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataMake",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataMake",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataMake",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataModel",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataModel",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataModel",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataArranger",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataArranger",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataEncodedBy",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataEncodedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataOriginalArtist",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataOriginalArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataPerformer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataPerformer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataComposer",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataComposer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCredits",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCredits",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataPhonogramRights",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataPhonogramRights",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCameraIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCameraIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCameraIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCameraFrameReadoutTime",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCameraFrameReadoutTime",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCameraFrameReadoutTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataTitle",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataCollectionUser",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataCollectionUser",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataCollectionUser",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataRatingUser",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataRatingUser",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataRatingUser",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationName",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationBody",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationBody",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationBody",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationNote",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationNote",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationNote",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationRole",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationRole",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationRole",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataLocationDate",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataLocationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataLocationDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDirectionFacing",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDirectionFacing",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDirectionFacing",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDirectionMotion",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDirectionMotion",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDirectionMotion",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataPreferredAffineTransform",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataPreferredAffineTransform",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataPreferredAffineTransform",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataDetectedFace",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataDetectedFace",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataDetectedFace",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataVideoOrientation",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataVideoOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataVideoOrientation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierQuickTimeMetadataContentIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierQuickTimeMetadataContentIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataContentIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAlbum",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAlbum",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataArtist",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataUserComment",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataUserComment",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataUserComment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataCoverArt",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataCoverArt",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataCoverArt",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataCopyright",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataReleaseDate",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataReleaseDate",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataReleaseDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataEncodedBy",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataEncodedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPredefinedGenre",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPredefinedGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPredefinedGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataUserGenre",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataUserGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataUserGenre",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataSongName",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataSongName",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataSongName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataTrackSubTitle",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataTrackSubTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataTrackSubTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataEncodingTool",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataEncodingTool",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataEncodingTool",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataComposer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataComposer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAlbumArtist",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAlbumArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAlbumArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAccountKind",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAccountKind",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAccountKind",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAppleID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAppleID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAppleID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataArtistID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataArtistID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataArtistID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataSongID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataSongID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataSongID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataDiscCompilation",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataDiscCompilation",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataDiscCompilation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataDiscNumber",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataDiscNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataDiscNumber",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataGenreID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataGenreID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataGenreID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataGrouping",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataGrouping",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataGrouping",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPlaylistID",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPlaylistID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPlaylistID",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataContentRating",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataContentRating",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataContentRating",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataBeatsPerMin",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataBeatsPerMin",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataBeatsPerMin",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataTrackNumber",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataTrackNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataTrackNumber",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataArtDirector",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataArtDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataArtDirector",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataArranger",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataArranger",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAuthor",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAuthor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataLyrics",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataLyrics",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataLyrics",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataAcknowledgement",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataAcknowledgement",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataAcknowledgement",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataConductor",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataConductor",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataConductor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataDescription",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataDirector",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataDirector",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataEQ",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataEQ",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataEQ",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataLinerNotes",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataLinerNotes",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataLinerNotes",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataRecordCompany",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataRecordCompany",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataRecordCompany",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataOriginalArtist",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataOriginalArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPhonogramRights",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPhonogramRights",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataProducer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataProducer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPerformer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPerformer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataPublisher",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataSoundEngineer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataSoundEngineer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataSoundEngineer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataSoloist",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataSoloist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataSoloist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataCredits",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataCredits",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataThanks",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataThanks",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataThanks",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataOnlineExtras",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataOnlineExtras",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataOnlineExtras",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifieriTunesMetadataExecProducer",
+    "OldPrintedName": "AVMetadataIdentifieriTunesMetadataExecProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataExecProducer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAudioEncryption",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAudioEncryption",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAudioEncryption",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAttachedPicture",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAttachedPicture",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAttachedPicture",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAudioSeekPointIndex",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAudioSeekPointIndex",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAudioSeekPointIndex",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataComments",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataComments",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataComments",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCommercial",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCommercial",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCommercial",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCommerical",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCommerical",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCommerical",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEncryption",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEncryption",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEncryption",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEqualization",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEqualization",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEqualization",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEqualization2",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEqualization2",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEqualization2",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEventTimingCodes",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEventTimingCodes",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEventTimingCodes",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataGeneralEncapsulatedObject",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataGeneralEncapsulatedObject",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataGeneralEncapsulatedObject",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataGroupIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataGroupIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataGroupIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInvolvedPeopleList_v23",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInvolvedPeopleList_v23",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInvolvedPeopleList_v23",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLink",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLink",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLink",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMusicCDIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMusicCDIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMusicCDIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMPEGLocationLookupTable",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMPEGLocationLookupTable",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMPEGLocationLookupTable",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOwnership",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOwnership",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOwnership",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPrivate",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPrivate",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPrivate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPlayCounter",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPlayCounter",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPlayCounter",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPopularimeter",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPopularimeter",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPopularimeter",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPositionSynchronization",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPositionSynchronization",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPositionSynchronization",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRecommendedBufferSize",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRecommendedBufferSize",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRecommendedBufferSize",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRelativeVolumeAdjustment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment2",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment2",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRelativeVolumeAdjustment2",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataReverb",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataReverb",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataReverb",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSeek",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSeek",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSeek",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSignature",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSignature",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSignature",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSynchronizedLyric",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSynchronizedLyric",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSynchronizedLyric",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSynchronizedTempoCodes",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSynchronizedTempoCodes",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSynchronizedTempoCodes",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAlbumTitle",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAlbumTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAlbumTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataBeatsPerMinute",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataBeatsPerMinute",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataBeatsPerMinute",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataComposer",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataComposer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataContentType",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataContentType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataContentType",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCopyright",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCopyright",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataDate",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataDate",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataDate",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEncodingTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEncodingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEncodingTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPlaylistDelay",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPlaylistDelay",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPlaylistDelay",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalReleaseTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalReleaseTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalReleaseTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRecordingTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRecordingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRecordingTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataReleaseTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataReleaseTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataReleaseTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTaggingTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTaggingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTaggingTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEncodedBy",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEncodedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLyricist",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLyricist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLyricist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataFileType",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataFileType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataFileType",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTime",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTime",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInvolvedPeopleList_v24",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInvolvedPeopleList_v24",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInvolvedPeopleList_v24",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataContentGroupDescription",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataContentGroupDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataContentGroupDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTitleDescription",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTitleDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTitleDescription",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSubTitle",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSubTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSubTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInitialKey",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInitialKey",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInitialKey",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLanguage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLanguage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLength",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLength",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLength",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMusicianCreditsList",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMusicianCreditsList",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMusicianCreditsList",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMediaType",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMediaType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMediaType",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataMood",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataMood",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataMood",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalAlbumTitle",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalAlbumTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalAlbumTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalFilename",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalFilename",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalFilename",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalLyricist",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalLyricist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalLyricist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalArtist",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalArtist",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOriginalReleaseYear",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOriginalReleaseYear",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOriginalReleaseYear",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataFileOwner",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataFileOwner",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataFileOwner",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataLeadPerformer",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataLeadPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataLeadPerformer",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataBand",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataBand",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataBand",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataConductor",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataConductor",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataConductor",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataModifiedBy",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataModifiedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataModifiedBy",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPartOfASet",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPartOfASet",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPartOfASet",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataProducedNotice",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataProducedNotice",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataProducedNotice",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPublisher",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPublisher",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTrackNumber",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTrackNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTrackNumber",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataRecordingDates",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataRecordingDates",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataRecordingDates",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInternetRadioStationName",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInternetRadioStationName",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInternetRadioStationName",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInternetRadioStationOwner",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInternetRadioStationOwner",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInternetRadioStationOwner",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSize",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSize",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSize",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataAlbumSortOrder",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataAlbumSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataAlbumSortOrder",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPerformerSortOrder",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPerformerSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPerformerSortOrder",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTitleSortOrder",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTitleSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTitleSortOrder",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataInternationalStandardRecordingCode",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataInternationalStandardRecordingCode",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataInternationalStandardRecordingCode",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataEncodedWith",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataEncodedWith",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataEncodedWith",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataSetSubtitle",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataSetSubtitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataSetSubtitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataYear",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataYear",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataYear",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataUserText",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataUserText",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataUserText",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataUniqueFileIdentifier",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataUniqueFileIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataUniqueFileIdentifier",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataTermsOfUse",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataTermsOfUse",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataTermsOfUse",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataUnsynchronizedLyric",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataUnsynchronizedLyric",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataUnsynchronizedLyric",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCommercialInformation",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCommercialInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCommercialInformation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataCopyrightInformation",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataCopyrightInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataCopyrightInformation",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialAudioFileWebpage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialAudioFileWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialAudioFileWebpage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialArtistWebpage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialArtistWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialArtistWebpage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialAudioSourceWebpage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialAudioSourceWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialAudioSourceWebpage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialInternetRadioStationHomepage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialInternetRadioStationHomepage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialInternetRadioStationHomepage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataPayment",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataPayment",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataPayment",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataOfficialPublisherWebpage",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataOfficialPublisherWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataOfficialPublisherWebpage",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierID3MetadataUserURL",
+    "OldPrintedName": "AVMetadataIdentifierID3MetadataUserURL",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataUserURL",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierIcyMetadataStreamTitle",
+    "OldPrintedName": "AVMetadataIdentifierIcyMetadataStreamTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "icyMetadataStreamTitle",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIdentifierIcyMetadataStreamURL",
+    "OldPrintedName": "AVMetadataIdentifierIcyMetadataStreamURL",
+    "OldTypeName": "",
+    "NewPrintedName": "icyMetadataStreamURL",
+    "NewTypeName": "AVMetadataIdentifier"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyTitle",
+    "OldPrintedName": "AVMetadataCommonKeyTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyCreator",
+    "OldPrintedName": "AVMetadataCommonKeyCreator",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyCreator",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeySubject",
+    "OldPrintedName": "AVMetadataCommonKeySubject",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeySubject",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyDescription",
+    "OldPrintedName": "AVMetadataCommonKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyPublisher",
+    "OldPrintedName": "AVMetadataCommonKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyContributor",
+    "OldPrintedName": "AVMetadataCommonKeyContributor",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyContributor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyCreationDate",
+    "OldPrintedName": "AVMetadataCommonKeyCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyCreationDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyLastModifiedDate",
+    "OldPrintedName": "AVMetadataCommonKeyLastModifiedDate",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyLastModifiedDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyType",
+    "OldPrintedName": "AVMetadataCommonKeyType",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyType",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyFormat",
+    "OldPrintedName": "AVMetadataCommonKeyFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyFormat",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyIdentifier",
+    "OldPrintedName": "AVMetadataCommonKeyIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeySource",
+    "OldPrintedName": "AVMetadataCommonKeySource",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeySource",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyLanguage",
+    "OldPrintedName": "AVMetadataCommonKeyLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyLanguage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyRelation",
+    "OldPrintedName": "AVMetadataCommonKeyRelation",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyRelation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyLocation",
+    "OldPrintedName": "AVMetadataCommonKeyLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyLocation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyCopyrights",
+    "OldPrintedName": "AVMetadataCommonKeyCopyrights",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyCopyrights",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyAlbumName",
+    "OldPrintedName": "AVMetadataCommonKeyAlbumName",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyAlbumName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyAuthor",
+    "OldPrintedName": "AVMetadataCommonKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyArtist",
+    "OldPrintedName": "AVMetadataCommonKeyArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyArtwork",
+    "OldPrintedName": "AVMetadataCommonKeyArtwork",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyArtwork",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyMake",
+    "OldPrintedName": "AVMetadataCommonKeyMake",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyMake",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeyModel",
+    "OldPrintedName": "AVMetadataCommonKeyModel",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeyModel",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataCommonKeySoftware",
+    "OldPrintedName": "AVMetadataCommonKeySoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "commonKeySoftware",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyAlbum",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyAlbum",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyArranger",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyArranger",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyArtist",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyAuthor",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyChapter",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyChapter",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyChapter",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyComment",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyComment",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyComment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyComposer",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyComposer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyCopyright",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyCreationDate",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyCreationDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyDescription",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyDirector",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyDirector",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyDisclaimer",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyDisclaimer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyDisclaimer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyEncodedBy",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyEncodedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyFullName",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyFullName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyFullName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyGenre",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyHostComputer",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyHostComputer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyHostComputer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyInformation",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyInformation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyKeywords",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyKeywords",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyKeywords",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyMake",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyMake",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyMake",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyModel",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyModel",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyModel",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyOriginalArtist",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyOriginalArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyOriginalFormat",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyOriginalFormat",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyOriginalFormat",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyOriginalSource",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyOriginalSource",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyOriginalSource",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyPerformers",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyPerformers",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyPerformers",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyProducer",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyProducer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyPublisher",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyProduct",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyProduct",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyProduct",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeySoftware",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeySoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeySoftware",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeySpecialPlaybackRequirements",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeySpecialPlaybackRequirements",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeySpecialPlaybackRequirements",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyTrack",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyTrack",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyTrack",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyWarning",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyWarning",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyWarning",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyWriter",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyWriter",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyWriter",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyURLLink",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyURLLink",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyURLLink",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyLocationISO6709",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyLocationISO6709",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyLocationISO6709",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyTrackName",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyTrackName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyTrackName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyCredits",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyCredits",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyPhonogramRights",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyPhonogramRights",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeUserDataKeyTaggedCharacteristic",
+    "OldPrintedName": "AVMetadataQuickTimeUserDataKeyTaggedCharacteristic",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserDataKeyTaggedCharacteristic",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataISOUserDataKeyCopyright",
+    "OldPrintedName": "AVMetadataISOUserDataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataISOUserDataKeyTaggedCharacteristic",
+    "OldPrintedName": "AVMetadataISOUserDataKeyTaggedCharacteristic",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataKeyTaggedCharacteristic",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataISOUserDataKeyDate",
+    "OldPrintedName": "AVMetadataISOUserDataKeyDate",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserDataKeyDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyCopyright",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyAuthor",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyPerformer",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyPerformer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyGenre",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyRecordingYear",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyRecordingYear",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyRecordingYear",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyLocation",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyLocation",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyLocation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyTitle",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyDescription",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyCollection",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyCollection",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyCollection",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyUserRating",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyUserRating",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyUserRating",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyThumbnail",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyThumbnail",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyThumbnail",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyAlbumAndTrack",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyAlbumAndTrack",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyAlbumAndTrack",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyKeywordList",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyKeywordList",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyKeywordList",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyMediaClassification",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyMediaClassification",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyMediaClassification",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadata3GPUserDataKeyMediaRating",
+    "OldPrintedName": "AVMetadata3GPUserDataKeyMediaRating",
+    "OldTypeName": "",
+    "NewPrintedName": "metadata3GPUserDataKeyMediaRating",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyAuthor",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyComment",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyComment",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyComment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCopyright",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCreationDate",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCreationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCreationDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDirector",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDirector",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDisplayName",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDisplayName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDisplayName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyInformation",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyInformation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyKeywords",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyKeywords",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyKeywords",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyProducer",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyProducer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyPublisher",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyAlbum",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyAlbum",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyArtist",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyArtwork",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyArtwork",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyArtwork",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDescription",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeySoftware",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeySoftware",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeySoftware",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyYear",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyYear",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyYear",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyGenre",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyiXML",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyiXML",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyiXML",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationISO6709",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationISO6709",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationISO6709",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyMake",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyMake",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyMake",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyModel",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyModel",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyModel",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyArranger",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyArranger",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyEncodedBy",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyEncodedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyOriginalArtist",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyOriginalArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyPerformer",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyPerformer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyComposer",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyComposer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCredits",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCredits",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyPhonogramRights",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyPhonogramRights",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCameraIdentifier",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCameraIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCameraIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCameraFrameReadoutTime",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCameraFrameReadoutTime",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCameraFrameReadoutTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyTitle",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyCollectionUser",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyCollectionUser",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyCollectionUser",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyRatingUser",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyRatingUser",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyRatingUser",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationName",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationName",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationBody",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationBody",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationBody",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationNote",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationNote",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationNote",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationRole",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationRole",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationRole",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyLocationDate",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyLocationDate",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyLocationDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDirectionFacing",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDirectionFacing",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDirectionFacing",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyDirectionMotion",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyDirectionMotion",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyDirectionMotion",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataQuickTimeMetadataKeyContentIdentifier",
+    "OldPrintedName": "AVMetadataQuickTimeMetadataKeyContentIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadataKeyContentIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAlbum",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAlbum",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAlbum",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyArtist",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyUserComment",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyUserComment",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyUserComment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyCoverArt",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyCoverArt",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyCoverArt",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyCopyright",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyReleaseDate",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyReleaseDate",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyReleaseDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyEncodedBy",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyEncodedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPredefinedGenre",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPredefinedGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPredefinedGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyUserGenre",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyUserGenre",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyUserGenre",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeySongName",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeySongName",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeySongName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyTrackSubTitle",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyTrackSubTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyTrackSubTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyEncodingTool",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyEncodingTool",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyEncodingTool",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyComposer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyComposer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAlbumArtist",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAlbumArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAlbumArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAccountKind",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAccountKind",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAccountKind",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAppleID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAppleID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAppleID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyArtistID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyArtistID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyArtistID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeySongID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeySongID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeySongID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyDiscCompilation",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyDiscCompilation",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyDiscCompilation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyDiscNumber",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyDiscNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyDiscNumber",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyGenreID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyGenreID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyGenreID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyGrouping",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyGrouping",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyGrouping",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPlaylistID",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPlaylistID",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPlaylistID",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyContentRating",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyContentRating",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyContentRating",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyBeatsPerMin",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyBeatsPerMin",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyBeatsPerMin",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyTrackNumber",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyTrackNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyTrackNumber",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyArtDirector",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyArtDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyArtDirector",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyArranger",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyArranger",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyArranger",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAuthor",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAuthor",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAuthor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyLyrics",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyLyrics",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyLyrics",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyAcknowledgement",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyAcknowledgement",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyAcknowledgement",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyConductor",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyConductor",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyConductor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyDescription",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyDirector",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyDirector",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyDirector",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyEQ",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyEQ",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyEQ",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyLinerNotes",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyLinerNotes",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyLinerNotes",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyRecordCompany",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyRecordCompany",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyRecordCompany",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyOriginalArtist",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyOriginalArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPhonogramRights",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPhonogramRights",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPhonogramRights",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyProducer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyProducer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPerformer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPerformer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyPublisher",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeySoundEngineer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeySoundEngineer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeySoundEngineer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeySoloist",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeySoloist",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeySoloist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyCredits",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyCredits",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyCredits",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyThanks",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyThanks",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyThanks",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyOnlineExtras",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyOnlineExtras",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyOnlineExtras",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataiTunesMetadataKeyExecProducer",
+    "OldPrintedName": "AVMetadataiTunesMetadataKeyExecProducer",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunesMetadataKeyExecProducer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAudioEncryption",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAudioEncryption",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAudioEncryption",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAttachedPicture",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAttachedPicture",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAttachedPicture",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAudioSeekPointIndex",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAudioSeekPointIndex",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAudioSeekPointIndex",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyComments",
+    "OldPrintedName": "AVMetadataID3MetadataKeyComments",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyComments",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCommercial",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCommercial",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCommercial",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCommerical",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCommerical",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCommerical",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEncryption",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEncryption",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEncryption",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEqualization",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEqualization",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEqualization",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEqualization2",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEqualization2",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEqualization2",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEventTimingCodes",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEventTimingCodes",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEventTimingCodes",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyGeneralEncapsulatedObject",
+    "OldPrintedName": "AVMetadataID3MetadataKeyGeneralEncapsulatedObject",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyGeneralEncapsulatedObject",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyGroupIdentifier",
+    "OldPrintedName": "AVMetadataID3MetadataKeyGroupIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyGroupIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInvolvedPeopleList_v23",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInvolvedPeopleList_v23",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInvolvedPeopleList_v23",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLink",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLink",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLink",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMusicCDIdentifier",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMusicCDIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMusicCDIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMPEGLocationLookupTable",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMPEGLocationLookupTable",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMPEGLocationLookupTable",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOwnership",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOwnership",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOwnership",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPrivate",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPrivate",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPrivate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPlayCounter",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPlayCounter",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPlayCounter",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPopularimeter",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPopularimeter",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPopularimeter",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPositionSynchronization",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPositionSynchronization",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPositionSynchronization",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRecommendedBufferSize",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRecommendedBufferSize",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRecommendedBufferSize",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRelativeVolumeAdjustment",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRelativeVolumeAdjustment",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRelativeVolumeAdjustment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRelativeVolumeAdjustment2",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRelativeVolumeAdjustment2",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRelativeVolumeAdjustment2",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyReverb",
+    "OldPrintedName": "AVMetadataID3MetadataKeyReverb",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyReverb",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySeek",
+    "OldPrintedName": "AVMetadataID3MetadataKeySeek",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySeek",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySignature",
+    "OldPrintedName": "AVMetadataID3MetadataKeySignature",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySignature",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySynchronizedLyric",
+    "OldPrintedName": "AVMetadataID3MetadataKeySynchronizedLyric",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySynchronizedLyric",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySynchronizedTempoCodes",
+    "OldPrintedName": "AVMetadataID3MetadataKeySynchronizedTempoCodes",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySynchronizedTempoCodes",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAlbumTitle",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAlbumTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAlbumTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyBeatsPerMinute",
+    "OldPrintedName": "AVMetadataID3MetadataKeyBeatsPerMinute",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyBeatsPerMinute",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyComposer",
+    "OldPrintedName": "AVMetadataID3MetadataKeyComposer",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyComposer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyContentType",
+    "OldPrintedName": "AVMetadataID3MetadataKeyContentType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyContentType",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCopyright",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCopyright",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCopyright",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyDate",
+    "OldPrintedName": "AVMetadataID3MetadataKeyDate",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyDate",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEncodingTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEncodingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEncodingTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPlaylistDelay",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPlaylistDelay",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPlaylistDelay",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalReleaseTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalReleaseTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalReleaseTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRecordingTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRecordingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRecordingTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyReleaseTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyReleaseTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyReleaseTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTaggingTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTaggingTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTaggingTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEncodedBy",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEncodedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEncodedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLyricist",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLyricist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLyricist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyFileType",
+    "OldPrintedName": "AVMetadataID3MetadataKeyFileType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyFileType",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTime",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTime",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTime",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInvolvedPeopleList_v24",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInvolvedPeopleList_v24",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInvolvedPeopleList_v24",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyContentGroupDescription",
+    "OldPrintedName": "AVMetadataID3MetadataKeyContentGroupDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyContentGroupDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTitleDescription",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTitleDescription",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTitleDescription",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySubTitle",
+    "OldPrintedName": "AVMetadataID3MetadataKeySubTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySubTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInitialKey",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInitialKey",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInitialKey",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLanguage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLanguage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLength",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLength",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLength",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMusicianCreditsList",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMusicianCreditsList",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMusicianCreditsList",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMediaType",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMediaType",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMediaType",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyMood",
+    "OldPrintedName": "AVMetadataID3MetadataKeyMood",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyMood",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalAlbumTitle",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalAlbumTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalAlbumTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalFilename",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalFilename",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalFilename",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalLyricist",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalLyricist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalLyricist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalArtist",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalArtist",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalArtist",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOriginalReleaseYear",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOriginalReleaseYear",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOriginalReleaseYear",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyFileOwner",
+    "OldPrintedName": "AVMetadataID3MetadataKeyFileOwner",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyFileOwner",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyLeadPerformer",
+    "OldPrintedName": "AVMetadataID3MetadataKeyLeadPerformer",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyLeadPerformer",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyBand",
+    "OldPrintedName": "AVMetadataID3MetadataKeyBand",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyBand",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyConductor",
+    "OldPrintedName": "AVMetadataID3MetadataKeyConductor",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyConductor",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyModifiedBy",
+    "OldPrintedName": "AVMetadataID3MetadataKeyModifiedBy",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyModifiedBy",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPartOfASet",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPartOfASet",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPartOfASet",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyProducedNotice",
+    "OldPrintedName": "AVMetadataID3MetadataKeyProducedNotice",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyProducedNotice",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPublisher",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPublisher",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPublisher",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTrackNumber",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTrackNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTrackNumber",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyRecordingDates",
+    "OldPrintedName": "AVMetadataID3MetadataKeyRecordingDates",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyRecordingDates",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInternetRadioStationName",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInternetRadioStationName",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInternetRadioStationName",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInternetRadioStationOwner",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInternetRadioStationOwner",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInternetRadioStationOwner",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySize",
+    "OldPrintedName": "AVMetadataID3MetadataKeySize",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySize",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyAlbumSortOrder",
+    "OldPrintedName": "AVMetadataID3MetadataKeyAlbumSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyAlbumSortOrder",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPerformerSortOrder",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPerformerSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPerformerSortOrder",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTitleSortOrder",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTitleSortOrder",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTitleSortOrder",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyInternationalStandardRecordingCode",
+    "OldPrintedName": "AVMetadataID3MetadataKeyInternationalStandardRecordingCode",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyInternationalStandardRecordingCode",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyEncodedWith",
+    "OldPrintedName": "AVMetadataID3MetadataKeyEncodedWith",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyEncodedWith",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeySetSubtitle",
+    "OldPrintedName": "AVMetadataID3MetadataKeySetSubtitle",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeySetSubtitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyYear",
+    "OldPrintedName": "AVMetadataID3MetadataKeyYear",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyYear",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyUserText",
+    "OldPrintedName": "AVMetadataID3MetadataKeyUserText",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyUserText",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyUniqueFileIdentifier",
+    "OldPrintedName": "AVMetadataID3MetadataKeyUniqueFileIdentifier",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyUniqueFileIdentifier",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyTermsOfUse",
+    "OldPrintedName": "AVMetadataID3MetadataKeyTermsOfUse",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyTermsOfUse",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyUnsynchronizedLyric",
+    "OldPrintedName": "AVMetadataID3MetadataKeyUnsynchronizedLyric",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyUnsynchronizedLyric",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCommercialInformation",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCommercialInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCommercialInformation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyCopyrightInformation",
+    "OldPrintedName": "AVMetadataID3MetadataKeyCopyrightInformation",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyCopyrightInformation",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialAudioFileWebpage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialAudioFileWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialAudioFileWebpage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialArtistWebpage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialArtistWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialArtistWebpage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialAudioSourceWebpage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialAudioSourceWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialAudioSourceWebpage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialInternetRadioStationHomepage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialInternetRadioStationHomepage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialInternetRadioStationHomepage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyPayment",
+    "OldPrintedName": "AVMetadataID3MetadataKeyPayment",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyPayment",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyOfficialPublisherWebpage",
+    "OldPrintedName": "AVMetadataID3MetadataKeyOfficialPublisherWebpage",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyOfficialPublisherWebpage",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataID3MetadataKeyUserURL",
+    "OldPrintedName": "AVMetadataID3MetadataKeyUserURL",
+    "OldTypeName": "",
+    "NewPrintedName": "id3MetadataKeyUserURL",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIcyMetadataKeyStreamTitle",
+    "OldPrintedName": "AVMetadataIcyMetadataKeyStreamTitle",
+    "OldTypeName": "",
+    "NewPrintedName": "icyMetadataKeyStreamTitle",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataIcyMetadataKeyStreamURL",
+    "OldPrintedName": "AVMetadataIcyMetadataKeyStreamURL",
+    "OldTypeName": "",
+    "NewPrintedName": "icyMetadataKeyStreamURL",
+    "NewTypeName": "AVMetadataKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceCommon",
+    "OldPrintedName": "AVMetadataKeySpaceCommon",
+    "OldTypeName": "",
+    "NewPrintedName": "common",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceQuickTimeUserData",
+    "OldPrintedName": "AVMetadataKeySpaceQuickTimeUserData",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeUserData",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceISOUserData",
+    "OldPrintedName": "AVMetadataKeySpaceISOUserData",
+    "OldTypeName": "",
+    "NewPrintedName": "isoUserData",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceQuickTimeMetadata",
+    "OldPrintedName": "AVMetadataKeySpaceQuickTimeMetadata",
+    "OldTypeName": "",
+    "NewPrintedName": "quickTimeMetadata",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceiTunes",
+    "OldPrintedName": "AVMetadataKeySpaceiTunes",
+    "OldTypeName": "",
+    "NewPrintedName": "iTunes",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceID3",
+    "OldPrintedName": "AVMetadataKeySpaceID3",
+    "OldTypeName": "",
+    "NewPrintedName": "id3",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceIcy",
+    "OldPrintedName": "AVMetadataKeySpaceIcy",
+    "OldTypeName": "",
+    "NewPrintedName": "icy",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVMetadataKeySpaceHLSDateRange",
+    "OldPrintedName": "AVMetadataKeySpaceHLSDateRange",
+    "OldTypeName": "",
+    "NewPrintedName": "hlsDateRange",
+    "NewTypeName": "AVMetadataKeySpace"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset640x480",
+    "OldPrintedName": "AVOutputSettingsPreset640x480",
+    "OldTypeName": "",
+    "NewPrintedName": "preset640x480",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset960x540",
+    "OldPrintedName": "AVOutputSettingsPreset960x540",
+    "OldTypeName": "",
+    "NewPrintedName": "preset960x540",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset1280x720",
+    "OldPrintedName": "AVOutputSettingsPreset1280x720",
+    "OldTypeName": "",
+    "NewPrintedName": "preset1280x720",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset1920x1080",
+    "OldPrintedName": "AVOutputSettingsPreset1920x1080",
+    "OldTypeName": "",
+    "NewPrintedName": "preset1920x1080",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVOutputSettingsPreset3840x2160",
+    "OldPrintedName": "AVOutputSettingsPreset3840x2160",
+    "OldTypeName": "",
+    "NewPrintedName": "preset3840x2160",
+    "NewTypeName": "AVOutputSettingsPreset"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerWaitingToMinimizeStallsReason",
+    "OldPrintedName": "AVPlayerWaitingToMinimizeStallsReason",
+    "OldTypeName": "",
+    "NewPrintedName": "toMinimizeStalls",
+    "NewTypeName": "AVPlayer.WaitingReason"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerWaitingWhileEvaluatingBufferingRateReason",
+    "OldPrintedName": "AVPlayerWaitingWhileEvaluatingBufferingRateReason",
+    "OldTypeName": "",
+    "NewPrintedName": "evaluatingBufferingRate",
+    "NewTypeName": "AVPlayer.WaitingReason"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerWaitingWithNoItemToPlayReason",
+    "OldPrintedName": "AVPlayerWaitingWithNoItemToPlayReason",
+    "OldTypeName": "",
+    "NewPrintedName": "noItemToPlay",
+    "NewTypeName": "AVPlayer.WaitingReason"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerItemLegibleOutputTextStylingResolutionDefault",
+    "OldPrintedName": "AVPlayerItemLegibleOutputTextStylingResolutionDefault",
+    "OldTypeName": "",
+    "NewPrintedName": "default",
+    "NewTypeName": "AVPlayerItemLegibleOutputTextStylingResolution"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@AVPlayerItemLegibleOutputTextStylingResolutionSourceAndRulesOnly",
+    "OldPrintedName": "AVPlayerItemLegibleOutputTextStylingResolutionSourceAndRulesOnly",
+    "OldTypeName": "",
+    "NewPrintedName": "sourceAndRulesOnly",
+    "NewTypeName": "AVPlayerItemLegibleOutputTextStylingResolution"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@HMSignificantEventSunrise",
+    "OldPrintedName": "HMSignificantEventSunrise",
+    "OldTypeName": "",
+    "NewPrintedName": "sunrise",
+    "NewTypeName": "HMSignificantEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@HMSignificantEventSunset",
+    "OldPrintedName": "HMSignificantEventSunset",
+    "OldTypeName": "",
+    "NewPrintedName": "sunset",
+    "NewTypeName": "HMSignificantEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextEffectLetterpressStyle",
+    "OldPrintedName": "NSTextEffectLetterpressStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "letterpressStyle",
+    "NewTypeName": "NSAttributedString.TextEffectStyle"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPlainTextDocumentType",
+    "OldPrintedName": "NSPlainTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "plain",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRTFTextDocumentType",
+    "OldPrintedName": "NSRTFTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "rtf",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRTFDTextDocumentType",
+    "OldPrintedName": "NSRTFDTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "rtfd",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSHTMLTextDocumentType",
+    "OldPrintedName": "NSHTMLTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "html",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextLayoutSectionOrientation",
+    "OldPrintedName": "NSTextLayoutSectionOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "orientation",
+    "NewTypeName": "NSAttributedString.TextLayoutSectionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextLayoutSectionRange",
+    "OldPrintedName": "NSTextLayoutSectionRange",
+    "OldTypeName": "",
+    "NewPrintedName": "range",
+    "NewTypeName": "NSAttributedString.TextLayoutSectionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDocumentTypeDocumentAttribute",
+    "OldPrintedName": "NSDocumentTypeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "documentType",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCharacterEncodingDocumentAttribute",
+    "OldPrintedName": "NSCharacterEncodingDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "characterEncoding",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDefaultAttributesDocumentAttribute",
+    "OldPrintedName": "NSDefaultAttributesDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultAttributes",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPaperSizeDocumentAttribute",
+    "OldPrintedName": "NSPaperSizeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "paperSize",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPaperMarginDocumentAttribute",
+    "OldPrintedName": "NSPaperMarginDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "paperMargin",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewSizeDocumentAttribute",
+    "OldPrintedName": "NSViewSizeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "viewSize",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewZoomDocumentAttribute",
+    "OldPrintedName": "NSViewZoomDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "viewZoom",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewModeDocumentAttribute",
+    "OldPrintedName": "NSViewModeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "viewMode",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSReadOnlyDocumentAttribute",
+    "OldPrintedName": "NSReadOnlyDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "readOnly",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBackgroundColorDocumentAttribute",
+    "OldPrintedName": "NSBackgroundColorDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "backgroundColor",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSHyphenationFactorDocumentAttribute",
+    "OldPrintedName": "NSHyphenationFactorDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "hyphenationFactor",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDefaultTabIntervalDocumentAttribute",
+    "OldPrintedName": "NSDefaultTabIntervalDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultTabInterval",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextLayoutSectionsAttribute",
+    "OldPrintedName": "NSTextLayoutSectionsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "textLayoutSections",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontAttributeName",
+    "OldPrintedName": "NSFontAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "font",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSParagraphStyleAttributeName",
+    "OldPrintedName": "NSParagraphStyleAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "paragraphStyle",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSForegroundColorAttributeName",
+    "OldPrintedName": "NSForegroundColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "foregroundColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBackgroundColorAttributeName",
+    "OldPrintedName": "NSBackgroundColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "backgroundColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLigatureAttributeName",
+    "OldPrintedName": "NSLigatureAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "ligature",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSKernAttributeName",
+    "OldPrintedName": "NSKernAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "kern",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrikethroughStyleAttributeName",
+    "OldPrintedName": "NSStrikethroughStyleAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strikethroughStyle",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSUnderlineStyleAttributeName",
+    "OldPrintedName": "NSUnderlineStyleAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "underlineStyle",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrokeColorAttributeName",
+    "OldPrintedName": "NSStrokeColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strokeColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrokeWidthAttributeName",
+    "OldPrintedName": "NSStrokeWidthAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strokeWidth",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSShadowAttributeName",
+    "OldPrintedName": "NSShadowAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "shadow",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextEffectAttributeName",
+    "OldPrintedName": "NSTextEffectAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "textEffect",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAttachmentAttributeName",
+    "OldPrintedName": "NSAttachmentAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "attachment",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinkAttributeName",
+    "OldPrintedName": "NSLinkAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "link",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBaselineOffsetAttributeName",
+    "OldPrintedName": "NSBaselineOffsetAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "baselineOffset",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSUnderlineColorAttributeName",
+    "OldPrintedName": "NSUnderlineColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "underlineColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrikethroughColorAttributeName",
+    "OldPrintedName": "NSStrikethroughColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strikethroughColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSObliquenessAttributeName",
+    "OldPrintedName": "NSObliquenessAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "obliqueness",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSExpansionAttributeName",
+    "OldPrintedName": "NSExpansionAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "expansion",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWritingDirectionAttributeName",
+    "OldPrintedName": "NSWritingDirectionAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "writingDirection",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVerticalGlyphFormAttributeName",
+    "OldPrintedName": "NSVerticalGlyphFormAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "verticalGlyphForm",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagWord",
+    "OldPrintedName": "NSLinguisticTagWord",
+    "OldTypeName": "",
+    "NewPrintedName": "word",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPunctuation",
+    "OldPrintedName": "NSLinguisticTagPunctuation",
+    "OldTypeName": "",
+    "NewPrintedName": "punctuation",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagWhitespace",
+    "OldPrintedName": "NSLinguisticTagWhitespace",
+    "OldTypeName": "",
+    "NewPrintedName": "whitespace",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOther",
+    "OldPrintedName": "NSLinguisticTagOther",
+    "OldTypeName": "",
+    "NewPrintedName": "other",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagNoun",
+    "OldPrintedName": "NSLinguisticTagNoun",
+    "OldTypeName": "",
+    "NewPrintedName": "noun",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagVerb",
+    "OldPrintedName": "NSLinguisticTagVerb",
+    "OldTypeName": "",
+    "NewPrintedName": "verb",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagAdjective",
+    "OldPrintedName": "NSLinguisticTagAdjective",
+    "OldTypeName": "",
+    "NewPrintedName": "adjective",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagAdverb",
+    "OldPrintedName": "NSLinguisticTagAdverb",
+    "OldTypeName": "",
+    "NewPrintedName": "adverb",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPronoun",
+    "OldPrintedName": "NSLinguisticTagPronoun",
+    "OldTypeName": "",
+    "NewPrintedName": "pronoun",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagDeterminer",
+    "OldPrintedName": "NSLinguisticTagDeterminer",
+    "OldTypeName": "",
+    "NewPrintedName": "determiner",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagParticle",
+    "OldPrintedName": "NSLinguisticTagParticle",
+    "OldTypeName": "",
+    "NewPrintedName": "particle",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPreposition",
+    "OldPrintedName": "NSLinguisticTagPreposition",
+    "OldTypeName": "",
+    "NewPrintedName": "preposition",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagNumber",
+    "OldPrintedName": "NSLinguisticTagNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "number",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagConjunction",
+    "OldPrintedName": "NSLinguisticTagConjunction",
+    "OldTypeName": "",
+    "NewPrintedName": "conjunction",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagInterjection",
+    "OldPrintedName": "NSLinguisticTagInterjection",
+    "OldTypeName": "",
+    "NewPrintedName": "interjection",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagClassifier",
+    "OldPrintedName": "NSLinguisticTagClassifier",
+    "OldTypeName": "",
+    "NewPrintedName": "classifier",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagIdiom",
+    "OldPrintedName": "NSLinguisticTagIdiom",
+    "OldTypeName": "",
+    "NewPrintedName": "idiom",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOtherWord",
+    "OldPrintedName": "NSLinguisticTagOtherWord",
+    "OldTypeName": "",
+    "NewPrintedName": "otherWord",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSentenceTerminator",
+    "OldPrintedName": "NSLinguisticTagSentenceTerminator",
+    "OldTypeName": "",
+    "NewPrintedName": "sentenceTerminator",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOpenQuote",
+    "OldPrintedName": "NSLinguisticTagOpenQuote",
+    "OldTypeName": "",
+    "NewPrintedName": "openQuote",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagCloseQuote",
+    "OldPrintedName": "NSLinguisticTagCloseQuote",
+    "OldTypeName": "",
+    "NewPrintedName": "closeQuote",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOpenParenthesis",
+    "OldPrintedName": "NSLinguisticTagOpenParenthesis",
+    "OldTypeName": "",
+    "NewPrintedName": "openParenthesis",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagCloseParenthesis",
+    "OldPrintedName": "NSLinguisticTagCloseParenthesis",
+    "OldTypeName": "",
+    "NewPrintedName": "closeParenthesis",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagWordJoiner",
+    "OldPrintedName": "NSLinguisticTagWordJoiner",
+    "OldTypeName": "",
+    "NewPrintedName": "wordJoiner",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagDash",
+    "OldPrintedName": "NSLinguisticTagDash",
+    "OldTypeName": "",
+    "NewPrintedName": "dash",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOtherPunctuation",
+    "OldPrintedName": "NSLinguisticTagOtherPunctuation",
+    "OldTypeName": "",
+    "NewPrintedName": "otherPunctuation",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagParagraphBreak",
+    "OldPrintedName": "NSLinguisticTagParagraphBreak",
+    "OldTypeName": "",
+    "NewPrintedName": "paragraphBreak",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOtherWhitespace",
+    "OldPrintedName": "NSLinguisticTagOtherWhitespace",
+    "OldTypeName": "",
+    "NewPrintedName": "otherWhitespace",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPersonalName",
+    "OldPrintedName": "NSLinguisticTagPersonalName",
+    "OldTypeName": "",
+    "NewPrintedName": "personalName",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPlaceName",
+    "OldPrintedName": "NSLinguisticTagPlaceName",
+    "OldTypeName": "",
+    "NewPrintedName": "placeName",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOrganizationName",
+    "OldPrintedName": "NSLinguisticTagOrganizationName",
+    "OldTypeName": "",
+    "NewPrintedName": "organizationName",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeTokenType",
+    "OldPrintedName": "NSLinguisticTagSchemeTokenType",
+    "OldTypeName": "",
+    "NewPrintedName": "tokenType",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeLexicalClass",
+    "OldPrintedName": "NSLinguisticTagSchemeLexicalClass",
+    "OldTypeName": "",
+    "NewPrintedName": "lexicalClass",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeNameType",
+    "OldPrintedName": "NSLinguisticTagSchemeNameType",
+    "OldTypeName": "",
+    "NewPrintedName": "nameType",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeNameTypeOrLexicalClass",
+    "OldPrintedName": "NSLinguisticTagSchemeNameTypeOrLexicalClass",
+    "OldTypeName": "",
+    "NewPrintedName": "nameTypeOrLexicalClass",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeLemma",
+    "OldPrintedName": "NSLinguisticTagSchemeLemma",
+    "OldTypeName": "",
+    "NewPrintedName": "lemma",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeLanguage",
+    "OldPrintedName": "NSLinguisticTagSchemeLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "language",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeScript",
+    "OldPrintedName": "NSLinguisticTagSchemeScript",
+    "OldTypeName": "",
+    "NewPrintedName": "script",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@GKPlayerDidChangeNotificationName",
+    "OldPrintedName": "GKPlayerDidChangeNotificationName",
+    "OldTypeName": "",
+    "NewPrintedName": "GKPlayerDidChangeNotificationName",
+    "NewTypeName": "NSNotification.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@GKPlayerAuthenticationDidChangeNotificationName",
+    "OldPrintedName": "GKPlayerAuthenticationDidChangeNotificationName",
+    "OldTypeName": "",
+    "NewPrintedName": "GKPlayerAuthenticationDidChangeNotificationName",
+    "NewTypeName": "NSNotification.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingNameKey",
+    "OldPrintedName": "NSTextCheckingNameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "name",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingJobTitleKey",
+    "OldPrintedName": "NSTextCheckingJobTitleKey",
+    "OldTypeName": "",
+    "NewPrintedName": "jobTitle",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingOrganizationKey",
+    "OldPrintedName": "NSTextCheckingOrganizationKey",
+    "OldTypeName": "",
+    "NewPrintedName": "organization",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingStreetKey",
+    "OldPrintedName": "NSTextCheckingStreetKey",
+    "OldTypeName": "",
+    "NewPrintedName": "street",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingCityKey",
+    "OldPrintedName": "NSTextCheckingCityKey",
+    "OldTypeName": "",
+    "NewPrintedName": "city",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingStateKey",
+    "OldPrintedName": "NSTextCheckingStateKey",
+    "OldTypeName": "",
+    "NewPrintedName": "state",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingZIPKey",
+    "OldPrintedName": "NSTextCheckingZIPKey",
+    "OldTypeName": "",
+    "NewPrintedName": "zip",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingCountryKey",
+    "OldPrintedName": "NSTextCheckingCountryKey",
+    "OldTypeName": "",
+    "NewPrintedName": "country",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingPhoneKey",
+    "OldPrintedName": "NSTextCheckingPhoneKey",
+    "OldTypeName": "",
+    "NewPrintedName": "phone",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingAirlineKey",
+    "OldPrintedName": "NSTextCheckingAirlineKey",
+    "OldTypeName": "",
+    "NewPrintedName": "airline",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingFlightKey",
+    "OldPrintedName": "NSTextCheckingFlightKey",
+    "OldTypeName": "",
+    "NewPrintedName": "flight",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCTPerformanceMetric_WallClockTime",
+    "OldPrintedName": "XCTPerformanceMetric_WallClockTime",
+    "OldTypeName": "",
+    "NewPrintedName": "wallClockTime",
+    "NewTypeName": "XCTPerformanceMetric"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCTWaiterResult",
+    "OldPrintedName": "XCTWaiterResult",
+    "OldTypeName": "",
+    "NewPrintedName": "Result",
+    "NewTypeName": "XCTWaiter"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCTestErrorCode",
+    "OldPrintedName": "XCTestErrorCode",
+    "OldTypeName": "",
+    "NewPrintedName": "Code",
+    "NewTypeName": "XCTestError"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIDeviceButton",
+    "OldPrintedName": "XCUIDeviceButton",
+    "OldTypeName": "",
+    "NewPrintedName": "Button",
+    "NewTypeName": "XCUIDevice"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIElementType",
+    "OldPrintedName": "XCUIElementType",
+    "OldTypeName": "",
+    "NewPrintedName": "Type",
+    "NewTypeName": "XCUIElement"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIUserInterfaceSizeClass",
+    "OldPrintedName": "XCUIUserInterfaceSizeClass",
+    "OldTypeName": "",
+    "NewPrintedName": "SizeClass",
+    "NewTypeName": "XCUIElement"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags",
+    "OldPrintedName": "XCUIKeyModifierFlags",
+    "OldTypeName": "",
+    "NewPrintedName": "KeyModifierFlags",
+    "NewTypeName": "XCUIElement"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierCapsLock",
+    "OldPrintedName": "capsLock",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "capsLock",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierShift",
+    "OldPrintedName": "shift",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "shift",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierControl",
+    "OldPrintedName": "control",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "control",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierOption",
+    "OldPrintedName": "option",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "option",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierCommand",
+    "OldPrintedName": "command",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "command",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierAlphaShift",
+    "OldPrintedName": "alphaShift",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "alphaShift",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIKeyModifierFlags@XCUIKeyModifierAlternate",
+    "OldPrintedName": "alternate",
+    "OldTypeName": "XCUIKeyModifierFlags",
+    "NewPrintedName": "alternate",
+    "NewTypeName": "XCUIElement.KeyModifierFlags"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyDelete",
+    "OldPrintedName": "XCUIKeyboardKeyDelete",
+    "OldTypeName": "",
+    "NewPrintedName": "delete",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyReturn",
+    "OldPrintedName": "XCUIKeyboardKeyReturn",
+    "OldTypeName": "",
+    "NewPrintedName": "return",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyEnter",
+    "OldPrintedName": "XCUIKeyboardKeyEnter",
+    "OldTypeName": "",
+    "NewPrintedName": "enter",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyTab",
+    "OldPrintedName": "XCUIKeyboardKeyTab",
+    "OldTypeName": "",
+    "NewPrintedName": "tab",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeySpace",
+    "OldPrintedName": "XCUIKeyboardKeySpace",
+    "OldTypeName": "",
+    "NewPrintedName": "space",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyEscape",
+    "OldPrintedName": "XCUIKeyboardKeyEscape",
+    "OldTypeName": "",
+    "NewPrintedName": "escape",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyUpArrow",
+    "OldPrintedName": "XCUIKeyboardKeyUpArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "upArrow",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyDownArrow",
+    "OldPrintedName": "XCUIKeyboardKeyDownArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "downArrow",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyLeftArrow",
+    "OldPrintedName": "XCUIKeyboardKeyLeftArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "leftArrow",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightArrow",
+    "OldPrintedName": "XCUIKeyboardKeyRightArrow",
+    "OldTypeName": "",
+    "NewPrintedName": "rightArrow",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF1",
+    "OldPrintedName": "XCUIKeyboardKeyF1",
+    "OldTypeName": "",
+    "NewPrintedName": "F1",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF2",
+    "OldPrintedName": "XCUIKeyboardKeyF2",
+    "OldTypeName": "",
+    "NewPrintedName": "F2",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF3",
+    "OldPrintedName": "XCUIKeyboardKeyF3",
+    "OldTypeName": "",
+    "NewPrintedName": "F3",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF4",
+    "OldPrintedName": "XCUIKeyboardKeyF4",
+    "OldTypeName": "",
+    "NewPrintedName": "F4",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF5",
+    "OldPrintedName": "XCUIKeyboardKeyF5",
+    "OldTypeName": "",
+    "NewPrintedName": "F5",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF6",
+    "OldPrintedName": "XCUIKeyboardKeyF6",
+    "OldTypeName": "",
+    "NewPrintedName": "F6",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF7",
+    "OldPrintedName": "XCUIKeyboardKeyF7",
+    "OldTypeName": "",
+    "NewPrintedName": "F7",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF8",
+    "OldPrintedName": "XCUIKeyboardKeyF8",
+    "OldTypeName": "",
+    "NewPrintedName": "F8",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF9",
+    "OldPrintedName": "XCUIKeyboardKeyF9",
+    "OldTypeName": "",
+    "NewPrintedName": "F9",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF10",
+    "OldPrintedName": "XCUIKeyboardKeyF10",
+    "OldTypeName": "",
+    "NewPrintedName": "F10",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF11",
+    "OldPrintedName": "XCUIKeyboardKeyF11",
+    "OldTypeName": "",
+    "NewPrintedName": "F11",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF12",
+    "OldPrintedName": "XCUIKeyboardKeyF12",
+    "OldTypeName": "",
+    "NewPrintedName": "F12",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF13",
+    "OldPrintedName": "XCUIKeyboardKeyF13",
+    "OldTypeName": "",
+    "NewPrintedName": "F13",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF14",
+    "OldPrintedName": "XCUIKeyboardKeyF14",
+    "OldTypeName": "",
+    "NewPrintedName": "F14",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF15",
+    "OldPrintedName": "XCUIKeyboardKeyF15",
+    "OldTypeName": "",
+    "NewPrintedName": "F15",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF16",
+    "OldPrintedName": "XCUIKeyboardKeyF16",
+    "OldTypeName": "",
+    "NewPrintedName": "F16",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF17",
+    "OldPrintedName": "XCUIKeyboardKeyF17",
+    "OldTypeName": "",
+    "NewPrintedName": "F17",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF18",
+    "OldPrintedName": "XCUIKeyboardKeyF18",
+    "OldTypeName": "",
+    "NewPrintedName": "F18",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyF19",
+    "OldPrintedName": "XCUIKeyboardKeyF19",
+    "OldTypeName": "",
+    "NewPrintedName": "F19",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyForwardDelete",
+    "OldPrintedName": "XCUIKeyboardKeyForwardDelete",
+    "OldTypeName": "",
+    "NewPrintedName": "forwardDelete",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyHome",
+    "OldPrintedName": "XCUIKeyboardKeyHome",
+    "OldTypeName": "",
+    "NewPrintedName": "home",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyEnd",
+    "OldPrintedName": "XCUIKeyboardKeyEnd",
+    "OldTypeName": "",
+    "NewPrintedName": "end",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyPageUp",
+    "OldPrintedName": "XCUIKeyboardKeyPageUp",
+    "OldTypeName": "",
+    "NewPrintedName": "pageUp",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyPageDown",
+    "OldPrintedName": "XCUIKeyboardKeyPageDown",
+    "OldTypeName": "",
+    "NewPrintedName": "pageDown",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyClear",
+    "OldPrintedName": "XCUIKeyboardKeyClear",
+    "OldTypeName": "",
+    "NewPrintedName": "clear",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyHelp",
+    "OldPrintedName": "XCUIKeyboardKeyHelp",
+    "OldTypeName": "",
+    "NewPrintedName": "help",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyCapsLock",
+    "OldPrintedName": "XCUIKeyboardKeyCapsLock",
+    "OldTypeName": "",
+    "NewPrintedName": "capsLock",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyShift",
+    "OldPrintedName": "XCUIKeyboardKeyShift",
+    "OldTypeName": "",
+    "NewPrintedName": "shift",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyControl",
+    "OldPrintedName": "XCUIKeyboardKeyControl",
+    "OldTypeName": "",
+    "NewPrintedName": "control",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyOption",
+    "OldPrintedName": "XCUIKeyboardKeyOption",
+    "OldTypeName": "",
+    "NewPrintedName": "option",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyCommand",
+    "OldPrintedName": "XCUIKeyboardKeyCommand",
+    "OldTypeName": "",
+    "NewPrintedName": "command",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightShift",
+    "OldPrintedName": "XCUIKeyboardKeyRightShift",
+    "OldTypeName": "",
+    "NewPrintedName": "rightShift",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightControl",
+    "OldPrintedName": "XCUIKeyboardKeyRightControl",
+    "OldTypeName": "",
+    "NewPrintedName": "rightControl",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightOption",
+    "OldPrintedName": "XCUIKeyboardKeyRightOption",
+    "OldTypeName": "",
+    "NewPrintedName": "rightOption",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeyRightCommand",
+    "OldPrintedName": "XCUIKeyboardKeyRightCommand",
+    "OldTypeName": "",
+    "NewPrintedName": "rightCommand",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@XCUIKeyboardKeySecondaryFn",
+    "OldPrintedName": "XCUIKeyboardKeySecondaryFn",
+    "OldTypeName": "",
+    "NewPrintedName": "secondaryFn",
+    "NewTypeName": "XCUIKeyboardKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@XCUIRemoteButton",
+    "OldPrintedName": "XCUIRemoteButton",
+    "OldTypeName": "",
+    "NewPrintedName": "Button",
+    "NewTypeName": "XCUIRemote"
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(pl)UIDataSourceTranslating(im)performUsingPresentationValues:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(pl)UIDataSourceTranslating(im)performUsingPresentationValues:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(pl)UIDataSourceTranslating(im)performUsingPresentationValues:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:@F@CGPathApplyWithBlock",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSAttributedString(im)enumerateAttributesInRange:options:usingBlock:",
+    "Index": 3
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSAttributedString(im)enumerateAttribute:inRange:options:usingBlock:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateReadingItemAtURL:options:error:byAccessor:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateWritingItemAtURL:options:error:byAccessor:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateReadingItemAtURL:options:writingItemAtURL:options:error:byAccessor:",
+    "Index": 6
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateWritingItemAtURL:options:writingItemAtURL:options:error:byAccessor:",
+    "Index": 6
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)prepareForReadingItemsAtURLs:options:writingItemsAtURLs:options:error:byAccessor:",
+    "Index": 6
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:unit:scheme:options:usingBlock:",
+    "Index": 5
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:scheme:options:usingBlock:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSLinguisticTagger(cm)enumerateTagsForString:range:unit:scheme:options:orthography:usingBlock:",
+    "Index": 7
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSString(im)enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:",
+    "Index": 5
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(pl)NSXPCProxyCreating(im)synchronousRemoteObjectProxyWithErrorHandler:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)XCTestCase(im)measureBlock:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)XCTestCase(im)measureMetrics:automaticallyStartMeasuring:forBlock:",
+    "Index": 3
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIAccessibilityContainerDataTable(im)accessibilityHeaderElementsForRow:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)UIAccessibilityContainerDataTable(im)accessibilityHeaderElementsForColumn:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledFontForFont:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledFontForFont:maximumPointSize:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledFontForFont:compatibleWithTraitCollection:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledFontForFont:maximumPointSize:compatibleWithTraitCollection:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledValueForValue:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledValueForValue:compatibleWithTraitCollection:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSCNNBinaryKernel(im)encodeToCommandBuffer:primaryImage:secondaryImage:destinationImage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSCNNBinaryKernel(im)encodeToCommandBuffer:primaryImage:secondaryImage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSImage(im)readBytes:dataLayout:imageIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSImage(im)writeBytes:dataLayout:imageIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MPSNNGraph(im)encodeToCommandBuffer:sourceImages:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:8Dispatch0A4DataV9copyBytesys29UnsafeMutableRawBufferPointerV2to_Si5counttF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:8Dispatch0A4DataV9copyBytesys29UnsafeMutableRawBufferPointerV2to_s14CountableRangeVySiG4fromtF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithContentsOfURL:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTexturesWithContentsOfURLs:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithData:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithCGImage:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithMDLTexture:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTKTextureLoader(im)newTextureWithName:scaleFactor:bundle:options:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)fileManager:shouldProceedAfterError:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)fileManager:shouldProceedAfterError:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)fileManager:willProcessPath:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSObject(im)fileManager:willProcessPath:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)copyFloatArrayInto:maxCount:atTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)copyDoubleArrayInto:maxCount:atTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)resetWithFloatArray:count:atTimes:count:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)resetWithDoubleArray:count:atTimes:count:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)copyFloatArrayInto:maxCount:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLAnimatedScalarArray(im)copyDoubleArrayInto:maxCount:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MDLTexture(im)writeToURL:level:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:forTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MDLTransformComponent(im)setLocalTransform:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CIContext(im)startTaskToRender:toDestination:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CIContext(im)startTaskToClear:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAsset(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAsset(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAudioNode(im)nameForInputBus:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAudioNode(im)nameForOutputBus:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVComposition(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVComposition(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMetadataItem(cm)metadataItemsFromArray:filteredByIdentifier:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMutableComposition(im)tracksWithMediaType:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVMutableComposition(im)tracksWithMediaCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVPlayerItem(im)seekToTime:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVPlayerItem(im)seekToDate:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)HMEventTrigger(cm)predicateForEvaluatingTriggerOccurringBeforeSignificantEvent:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)HMEventTrigger(cm)predicateForEvaluatingTriggerOccurringAfterSignificantEvent:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)SCNAnimatable(im)removeAnimationForKey:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)SCNAnimatable(im)removeAnimationForKey:blendOutDuration:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)SCNAnimatable(im)removeAnimationForKey:fadeOutDuration:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNCameraController(im)dollyZoomToTarget:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)convertVector:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)convertVector:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertPosition:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertPosition:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertVector:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertVector:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertTransform:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertTransform:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdLookAt:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)lookAt:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSFileManager(im)createDirectoryAtPath:attributes:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSAttributedString(im)attributesAtIndex:effectiveRange:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSAttributedString(im)attribute:atIndex:effectiveRange:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSLinguisticTagger(cm)availableTagSchemesForLanguage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSMutableAttributedString(im)readFromURL:options:documentAttributes:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSMutableAttributedString(im)readFromData:options:documentAttributes:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSString(im)getCString:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSString(im)getCString:maxLength:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSString(cm)stringWithContentsOfFile:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSString(cm)stringWithContentsOfURL:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSString(cm)stringWithCString:length:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSString(cm)stringWithCString:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSTextCheckingResult(im)rangeAtIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSTextCheckingResult(im)rangeWithName:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSURLSessionTaskDelegate(im)URLSession:taskIsWaitingForConnectivity:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6insertys5RangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6insertys11ClosedRangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6removeys5RangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6removeys11ClosedRangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6insertSb8inserted_s7UnicodeO6ScalarV17memberAfterInserttAIF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6removes7UnicodeO6ScalarVSgAHF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation19PropertyListDecoderC6decodexxm_AA4DataV4fromtKs9DecodableRzlF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation19PropertyListDecoderC6decodexxm_AA4DataV4fromSo0bC13SerializationC0bC6FormatOz6formattKs9DecodableRzlF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCTWaiter(im)waitForExpectations:timeout:enforceOrder:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCTWaiter(cm)waitForExpectations:timeout:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCTWaiter(cm)waitForExpectations:timeout:enforceOrder:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCUIElementQuery(im)elementAtIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCUIElementQuery(im)elementBoundByIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCUIRemote(im)pressButton:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)XCUIRemote(im)pressButton:forDuration:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)fetchHistoryAfterDate:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)fetchHistoryAfterToken:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)fetchHistoryAfterTransaction:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)deleteHistoryBeforeDate:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)deleteHistoryBeforeToken:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)deleteHistoryBeforeTransaction:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLArgumentEncoder(im)setArgumentBuffer:offset:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)newCaptureScopeWithDevice:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)newCaptureScopeWithCommandQueue:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)startCaptureWithDevice:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)startCaptureWithCommandQueue:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)MTLCaptureManager(im)startCaptureWithScope:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLComputeCommandEncoder(im)setSamplerState:atIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLDevice(im)newTextureWithDescriptor:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLFunction(im)newArgumentEncoderWithBufferIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLFunction(im)newArgumentEncoderWithBufferIndex:reflection:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLRenderCommandEncoder(im)setVertexSamplerState:atIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLRenderCommandEncoder(im)setFragmentSamplerState:atIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)MTLTexture(im)newTextureViewWithPixelFormat:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCVPixelBuffer:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCVPixelBuffer:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCGImage:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCGImage:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCIImage:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onCIImage:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onImageURL:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onImageURL:orientation:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onImageData:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)VNSequenceRequestHandler(im)performRequests:onImageData:orientation:error:"
+  }
 ]
\ No newline at end of file
diff --git a/lib/Migrator/watchos.json b/lib/Migrator/watchos.json
index 32960f8..5b69e9b 100644
--- a/lib/Migrator/watchos.json
+++ b/lib/Migrator/watchos.json
@@ -1,2 +1,2957 @@
 [
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "6:0:1:1",
+    "LeftUsr": "c:objc(cs)GKTurnBasedMatch(im)sendExchangeToParticipants:data:localizableMessageKey:arguments:timeout:completionHandler:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "GameKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)INImage(cm)imageWithURL:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Intents"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)INPersonHandle(im)initWithValue:type:label:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Intents"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)INPersonHandle(im)initWithValue:type:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Intents"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0",
+    "LeftUsr": "c:objc(cs)NSTextTab(im)initWithTextAlignment:location:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextTab.OptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)UIFont(cm)systemFontOfSize:weight:",
+    "LeftComment": "CGFloat",
+    "RightUsr": "",
+    "RightComment": "UIFont.Weight",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)UIFont(cm)monospacedDigitSystemFontOfSize:weight:",
+    "LeftComment": "CGFloat",
+    "RightUsr": "",
+    "RightComment": "UIFont.Weight",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)UIFontDescriptor(im)objectForKey:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "UIFontDescriptor.AttributeName",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)UIFontDescriptor(im)matchingFontDescriptorsWithMandatoryKeys:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "UIFontDescriptor.AttributeName",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)UIFontDescriptor(im)initWithFontAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "UIFontDescriptor.AttributeName",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)UIFontDescriptor(im)fontDescriptorByAddingAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "UIFontDescriptor.AttributeName",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CKFetchShareMetadataOperation(im)initWithShareURLs:",
+    "LeftComment": "init(share:)",
+    "RightUsr": "",
+    "RightComment": "init(shareURLs:)",
+    "ModuleName": "CloudKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)CKShare(im)initWithRootRecord:shareID:",
+    "LeftComment": "init(rootRecord:share:)",
+    "RightUsr": "",
+    "RightComment": "init(rootRecord:shareID:)",
+    "ModuleName": "CloudKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EKEventStore(im)sourceWithIdentifier:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "EventKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EKEventStore(im)defaultCalendarForNewReminders",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "EventKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)EKEventStore(im)calendarItemWithIdentifier:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "EventKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioChannelLayout(im)initWithLayoutTag:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioConverter(im)initFromFormat:toFormat:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithStreamDescription:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithStreamDescription:channelLayout:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initStandardFormatWithSampleRate:channels:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithCommonFormat:sampleRate:channels:interleaved:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioFormat(im)initWithSettings:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioNode(im)nameForInputBus:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioNode(im)nameForOutputBus:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioPCMBuffer(im)initWithPCMFormat:frameCapacity:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)AVAudioTime(im)extrapolateTimeFromAnchor:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@E@AVMusicSequenceLoadOptions@AVMusicSequenceLoadSMF_ChannelsToTracks",
+    "LeftComment": "smf_ChannelsToTracks",
+    "RightUsr": "",
+    "RightComment": "smfChannelsToTracks",
+    "ModuleName": "AVFoundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FE8DispatchCSo10DispatchIOcFT4typeOES_S0_10StreamType4pathGSPVs4Int8_5oflagVs5Int324modeVs6UInt165queueCSo13DispatchQueue14cleanupHandlerFS3_T__S0_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Dispatch"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "s:FE8DispatchCSo13DispatchQueue11setSpecificurFT3keyGCS_19DispatchSpecificKeyx_5valuex_T_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Dispatch"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(py)geometrySources",
+    "LeftComment": "geometrySources",
+    "RightUsr": "",
+    "RightComment": "sources",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(im)geometrySourcesForSemantic:",
+    "LeftComment": "getGeometrySources(for:)",
+    "RightUsr": "",
+    "RightComment": "sources(for:)",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(py)geometryElements",
+    "LeftComment": "geometryElements",
+    "RightUsr": "",
+    "RightComment": "elements",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Var",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(py)geometryElementCount",
+    "LeftComment": "geometryElementCount",
+    "RightUsr": "",
+    "RightComment": "elementCount",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)SCNGeometry(im)geometryElementAtIndex:",
+    "LeftComment": "geometryElement(at:)",
+    "RightUsr": "",
+    "RightComment": "element(at:)",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FE8SceneKitVSC10SCNMatrix4cFV4simd8float4x4S0_",
+    "LeftComment": "float4x4",
+    "RightUsr": "",
+    "RightComment": "float4x4",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FE8SceneKitVSC10SCNMatrix4cFV4simd9double4x4S0_",
+    "LeftComment": "double4x4",
+    "RightUsr": "",
+    "RightComment": "double4x4",
+    "ModuleName": "SceneKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSFileManager(im)createDirectoryAtURL:withIntermediateDirectories:attributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileAttributeKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSFileManager(im)createDirectoryAtPath:withIntermediateDirectories:attributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileAttributeKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSFileManager(im)createFileAtPath:contents:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "FileAttributeKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FE10FoundationCSo11FileManager13replaceItemAtFzTVS_3URL10withItemAtS1_14backupItemNameGSqSS_7optionsVS0_22ItemReplacementOptions_GSqCSo5NSURL_",
+    "LeftComment": "NSURL",
+    "RightUsr": "",
+    "RightComment": "URL",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSArray(cm)arrayWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attributesAtIndex:effectiveRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)dataFromRange:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentAttributeKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)fileWrapperFromRange:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentAttributeKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attribute:atIndex:effectiveRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attributesAtIndex:longestEffectiveRange:inRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)attribute:atIndex:longestEffectiveRange:inRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithString:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:1:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)enumerateAttributesInRange:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)enumerateAttribute:inRange:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FE10FoundationCSo7NSCoder20decodeTopLevelObjectFzT6forKeySS_GSqPs9AnyObject__",
+    "LeftComment": "AnyObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSet(cm)setWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSDecimalNumberHandler(cm)defaultDecimalNumberHandler",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSIndexPath(im)initWithIndexes:length:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:ZFE10FoundationCSo17NSKeyedUnarchiver31unarchiveTopLevelObjectWithDataFzCSo6NSDataGSqPs9AnyObject__",
+    "LeftComment": "AnyObject",
+    "RightUsr": "",
+    "RightComment": "Any",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)initWithTagSchemes:options:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(cm)availableTagSchemesForLanguage:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:scheme:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "4:1:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:scheme:options:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag?",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)tagAtIndex:scheme:tokenRange:sentenceRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSLinguisticTagger(im)tagAtIndex:scheme:tokenRange:sentenceRange:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSArray(cm)arrayWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)setAttributes:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSAttributedString(im)initWithString:attributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)readFromURL:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)readFromData:options:documentAttributes:error:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedString.DocumentReadingOptionKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)addAttribute:value:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)addAttributes:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableAttributedString(im)removeAttribute:range:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSOrderedSet(cm)orderedSetWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSMutableOrderedSet(im)addObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSMutableOrderedSet(im)replaceObjectsInRange:withObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSet(cm)setWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSOrderedSet(cm)orderedSetWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSSet(cm)setWithObjects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)linguisticTagsInRange:scheme:options:orthography:tokenRanges:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSString(im)linguisticTagsInRange:scheme:options:orthography:tokenRanges:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)NSString(im)enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTagScheme",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "5:1:0",
+    "LeftUsr": "c:objc(cs)NSString(im)enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSLinguisticTag?",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawWithRect:options:attributes:context:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "3:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)boundingRectWithSize:options:attributes:context:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)sizeWithAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSString(im)sizeWithAttributes:",
+    "LeftComment": "size(attributes:)",
+    "RightUsr": "",
+    "RightComment": "size(withAttributes:)",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawAtPoint:withAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSString(im)drawInRect:withAttributes:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSAttributedStringKey",
+    "ModuleName": "UIKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(cm)addressCheckingResultWithRange:components:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextCheckingKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(cm)transitInformationCheckingResultWithRange:components:",
+    "LeftComment": "String",
+    "RightUsr": "",
+    "RightComment": "NSTextCheckingKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(im)rangeAtIndex:",
+    "LeftComment": "rangeAt(_:)",
+    "RightUsr": "",
+    "RightComment": "range(at:)",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)NSTextCheckingResult(im)resultByAdjustingRangesWithOffset:",
+    "LeftComment": "resultByAdjustingRangesWithOffset(_:)",
+    "RightUsr": "",
+    "RightComment": "adjustingRanges(offset:)",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSUUID(im)initWithUUIDBytes:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(cs)NSUUID(im)getUUIDBytes:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2:0:0",
+    "LeftUsr": "c:objc(cs)NSProgress(im)initWithParent:userInfo:",
+    "LeftComment": "AnyHashable",
+    "RightUsr": "",
+    "RightComment": "ProgressUserInfoKey",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FE10FoundationVSC8_NSRangecFGVs5RangeSi_S0_",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FE10FoundationVSC8_NSRangecFGVs5RangeSi_S0_",
+    "LeftComment": "Range<Int>",
+    "RightUsr": "",
+    "RightComment": "String",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSetcFT12charactersInGVs5RangeSc__S0_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSetcFT12charactersInGVs11ClosedRangeSc__S0_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFT12charactersInGVs5RangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFT12charactersInGVs11ClosedRangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFT12charactersInGVs5RangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFT12charactersInGVs11ClosedRangeSc__T_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFScT8insertedSb17memberAfterInsertSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6insertFScT8insertedSb17memberAfterInsertSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6updateFT4withSc_GSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6updateFT4withSc_GSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0:0",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFScGSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet6removeFScGSqSc_",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "s:FV10Foundation12CharacterSet8containsFScSb",
+    "LeftComment": "UnicodeScalar",
+    "RightUsr": "",
+    "RightComment": "Unicode.Scalar",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "s:FOV10Foundation8URLError4CodecFT8rawValueSi_GSqS1__",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "Foundation"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreMotion"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreData"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(pl)NSFastEnumeration(im)countByEnumeratingWithState:objects:count:",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreData"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1:0:0",
+    "LeftUsr": "c:objc(cs)WKInterfacePicker(im)setCoordinatedAnimations:",
+    "LeftComment": "WKInterfaceObject",
+    "RightUsr": "",
+    "RightComment": "WKInterfaceObject & WKImageAnimatable",
+    "ModuleName": "WatchKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)WCSession(cm)defaultSession",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "default",
+    "ModuleName": "WatchConnectivity"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedGray",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedGray",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "4",
+    "LeftUsr": "c:@F@CGColorSpaceCreateCalibratedRGB",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGColorSpaceCreateLab",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "2",
+    "LeftUsr": "c:@F@CGColorSpaceCreateLab",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "ImplicitOptionalToOptional",
+    "ChildIndex": "3",
+    "LeftUsr": "c:@F@CGColorSpaceCreateLab",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@F@CGFontCreateWithDataProvider",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "5",
+    "LeftUsr": "c:@F@CGFontCreatePostScriptSubset",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "UnwrapOptional",
+    "ChildIndex": "1",
+    "LeftUsr": "c:@F@CGFontCreatePostScriptEncoding",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "CoreGraphics"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)SKUniform(im)initWithName:matrixFloat2x2:",
+    "LeftComment": "matrix_float2x2",
+    "RightUsr": "",
+    "RightComment": "matrix_float2x2",
+    "ModuleName": "SpriteKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)SKUniform(im)initWithName:matrixFloat3x3:",
+    "LeftComment": "matrix_float3x3",
+    "RightUsr": "",
+    "RightComment": "matrix_float3x3",
+    "ModuleName": "SpriteKit"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Constructor",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "2",
+    "LeftUsr": "c:objc(cs)SKUniform(im)initWithName:matrixFloat4x4:",
+    "LeftComment": "matrix_float4x4",
+    "RightUsr": "",
+    "RightComment": "matrix_float4x4",
+    "ModuleName": "SpriteKit"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSSecureCoding(cpy)supportsSecureCoding",
+    "OldPrintedName": "supportsSecureCoding",
+    "OldTypeName": "HKWorkoutSession",
+    "NewPrintedName": "supportsSecureCoding",
+    "NewTypeName": "CKFetchRecordZoneChangesOptions"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTabColumnTerminatorsAttributeName",
+    "OldPrintedName": "NSTabColumnTerminatorsAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "columnTerminators",
+    "NewTypeName": "NSTextTab.OptionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightUltraLight",
+    "OldPrintedName": "UIFontWeightUltraLight",
+    "OldTypeName": "",
+    "NewPrintedName": "ultraLight",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightThin",
+    "OldPrintedName": "UIFontWeightThin",
+    "OldTypeName": "",
+    "NewPrintedName": "thin",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightLight",
+    "OldPrintedName": "UIFontWeightLight",
+    "OldTypeName": "",
+    "NewPrintedName": "light",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightRegular",
+    "OldPrintedName": "UIFontWeightRegular",
+    "OldTypeName": "",
+    "NewPrintedName": "regular",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightMedium",
+    "OldPrintedName": "UIFontWeightMedium",
+    "OldTypeName": "",
+    "NewPrintedName": "medium",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightSemibold",
+    "OldPrintedName": "UIFontWeightSemibold",
+    "OldTypeName": "",
+    "NewPrintedName": "semibold",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightBold",
+    "OldPrintedName": "UIFontWeightBold",
+    "OldTypeName": "",
+    "NewPrintedName": "bold",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightHeavy",
+    "OldPrintedName": "UIFontWeightHeavy",
+    "OldTypeName": "",
+    "NewPrintedName": "heavy",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightBlack",
+    "OldPrintedName": "UIFontWeightBlack",
+    "OldTypeName": "",
+    "NewPrintedName": "black",
+    "NewTypeName": "UIFont.Weight"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorFamilyAttribute",
+    "OldPrintedName": "UIFontDescriptorFamilyAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "family",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorNameAttribute",
+    "OldPrintedName": "UIFontDescriptorNameAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "name",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorFaceAttribute",
+    "OldPrintedName": "UIFontDescriptorFaceAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "face",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorSizeAttribute",
+    "OldPrintedName": "UIFontDescriptorSizeAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "size",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorVisibleNameAttribute",
+    "OldPrintedName": "UIFontDescriptorVisibleNameAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "visibleName",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorMatrixAttribute",
+    "OldPrintedName": "UIFontDescriptorMatrixAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "matrix",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorCharacterSetAttribute",
+    "OldPrintedName": "UIFontDescriptorCharacterSetAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "characterSet",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorCascadeListAttribute",
+    "OldPrintedName": "UIFontDescriptorCascadeListAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "cascadeList",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorTraitsAttribute",
+    "OldPrintedName": "UIFontDescriptorTraitsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "traits",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorFixedAdvanceAttribute",
+    "OldPrintedName": "UIFontDescriptorFixedAdvanceAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "fixedAdvance",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorFeatureSettingsAttribute",
+    "OldPrintedName": "UIFontDescriptorFeatureSettingsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "featureSettings",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontDescriptorTextStyleAttribute",
+    "OldPrintedName": "UIFontDescriptorTextStyleAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "textStyle",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontSymbolicTrait",
+    "OldPrintedName": "UIFontSymbolicTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "symbolic",
+    "NewTypeName": "UIFontDescriptor.AttributeName"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWeightTrait",
+    "OldPrintedName": "UIFontWeightTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "weight",
+    "NewTypeName": "UIFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontWidthTrait",
+    "OldPrintedName": "UIFontWidthTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "width",
+    "NewTypeName": "UIFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontSlantTrait",
+    "OldPrintedName": "UIFontSlantTrait",
+    "OldTypeName": "",
+    "NewPrintedName": "slant",
+    "NewTypeName": "UIFontDescriptor.TraitKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontFeatureTypeIdentifierKey",
+    "OldPrintedName": "UIFontFeatureTypeIdentifierKey",
+    "OldTypeName": "",
+    "NewPrintedName": "featureIdentifier",
+    "NewTypeName": "UIFontDescriptor.FeatureKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@UIFontFeatureSelectorIdentifierKey",
+    "OldPrintedName": "UIFontFeatureSelectorIdentifierKey",
+    "OldTypeName": "",
+    "NewPrintedName": "typeIdentifier",
+    "NewTypeName": "UIFontDescriptor.FeatureKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@HMSignificantEventSunrise",
+    "OldPrintedName": "HMSignificantEventSunrise",
+    "OldTypeName": "",
+    "NewPrintedName": "sunrise",
+    "NewTypeName": "HMSignificantEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@HMSignificantEventSunset",
+    "OldPrintedName": "HMSignificantEventSunset",
+    "OldTypeName": "",
+    "NewPrintedName": "sunset",
+    "NewTypeName": "HMSignificantEvent"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextEffectLetterpressStyle",
+    "OldPrintedName": "NSTextEffectLetterpressStyle",
+    "OldTypeName": "",
+    "NewPrintedName": "letterpressStyle",
+    "NewTypeName": "NSAttributedString.TextEffectStyle"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPlainTextDocumentType",
+    "OldPrintedName": "NSPlainTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "plain",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRTFTextDocumentType",
+    "OldPrintedName": "NSRTFTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "rtf",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSRTFDTextDocumentType",
+    "OldPrintedName": "NSRTFDTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "rtfd",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSHTMLTextDocumentType",
+    "OldPrintedName": "NSHTMLTextDocumentType",
+    "OldTypeName": "",
+    "NewPrintedName": "html",
+    "NewTypeName": "NSAttributedString.DocumentType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextLayoutSectionOrientation",
+    "OldPrintedName": "NSTextLayoutSectionOrientation",
+    "OldTypeName": "",
+    "NewPrintedName": "orientation",
+    "NewTypeName": "NSAttributedString.TextLayoutSectionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextLayoutSectionRange",
+    "OldPrintedName": "NSTextLayoutSectionRange",
+    "OldTypeName": "",
+    "NewPrintedName": "range",
+    "NewTypeName": "NSAttributedString.TextLayoutSectionKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDocumentTypeDocumentAttribute",
+    "OldPrintedName": "NSDocumentTypeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "documentType",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSCharacterEncodingDocumentAttribute",
+    "OldPrintedName": "NSCharacterEncodingDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "characterEncoding",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDefaultAttributesDocumentAttribute",
+    "OldPrintedName": "NSDefaultAttributesDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultAttributes",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPaperSizeDocumentAttribute",
+    "OldPrintedName": "NSPaperSizeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "paperSize",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSPaperMarginDocumentAttribute",
+    "OldPrintedName": "NSPaperMarginDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "paperMargin",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewSizeDocumentAttribute",
+    "OldPrintedName": "NSViewSizeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "viewSize",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewZoomDocumentAttribute",
+    "OldPrintedName": "NSViewZoomDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "viewZoom",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSViewModeDocumentAttribute",
+    "OldPrintedName": "NSViewModeDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "viewMode",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSReadOnlyDocumentAttribute",
+    "OldPrintedName": "NSReadOnlyDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "readOnly",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBackgroundColorDocumentAttribute",
+    "OldPrintedName": "NSBackgroundColorDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "backgroundColor",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSHyphenationFactorDocumentAttribute",
+    "OldPrintedName": "NSHyphenationFactorDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "hyphenationFactor",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSDefaultTabIntervalDocumentAttribute",
+    "OldPrintedName": "NSDefaultTabIntervalDocumentAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "defaultTabInterval",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextLayoutSectionsAttribute",
+    "OldPrintedName": "NSTextLayoutSectionsAttribute",
+    "OldTypeName": "",
+    "NewPrintedName": "textLayoutSections",
+    "NewTypeName": "NSAttributedString.DocumentAttributeKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSFontAttributeName",
+    "OldPrintedName": "NSFontAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "font",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSParagraphStyleAttributeName",
+    "OldPrintedName": "NSParagraphStyleAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "paragraphStyle",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSForegroundColorAttributeName",
+    "OldPrintedName": "NSForegroundColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "foregroundColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBackgroundColorAttributeName",
+    "OldPrintedName": "NSBackgroundColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "backgroundColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLigatureAttributeName",
+    "OldPrintedName": "NSLigatureAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "ligature",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSKernAttributeName",
+    "OldPrintedName": "NSKernAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "kern",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrikethroughStyleAttributeName",
+    "OldPrintedName": "NSStrikethroughStyleAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strikethroughStyle",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSUnderlineStyleAttributeName",
+    "OldPrintedName": "NSUnderlineStyleAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "underlineStyle",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrokeColorAttributeName",
+    "OldPrintedName": "NSStrokeColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strokeColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrokeWidthAttributeName",
+    "OldPrintedName": "NSStrokeWidthAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strokeWidth",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSShadowAttributeName",
+    "OldPrintedName": "NSShadowAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "shadow",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextEffectAttributeName",
+    "OldPrintedName": "NSTextEffectAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "textEffect",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSAttachmentAttributeName",
+    "OldPrintedName": "NSAttachmentAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "attachment",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinkAttributeName",
+    "OldPrintedName": "NSLinkAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "link",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSBaselineOffsetAttributeName",
+    "OldPrintedName": "NSBaselineOffsetAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "baselineOffset",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSUnderlineColorAttributeName",
+    "OldPrintedName": "NSUnderlineColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "underlineColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSStrikethroughColorAttributeName",
+    "OldPrintedName": "NSStrikethroughColorAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "strikethroughColor",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSObliquenessAttributeName",
+    "OldPrintedName": "NSObliquenessAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "obliqueness",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSExpansionAttributeName",
+    "OldPrintedName": "NSExpansionAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "expansion",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSWritingDirectionAttributeName",
+    "OldPrintedName": "NSWritingDirectionAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "writingDirection",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSVerticalGlyphFormAttributeName",
+    "OldPrintedName": "NSVerticalGlyphFormAttributeName",
+    "OldTypeName": "",
+    "NewPrintedName": "verticalGlyphForm",
+    "NewTypeName": "NSAttributedStringKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagWord",
+    "OldPrintedName": "NSLinguisticTagWord",
+    "OldTypeName": "",
+    "NewPrintedName": "word",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPunctuation",
+    "OldPrintedName": "NSLinguisticTagPunctuation",
+    "OldTypeName": "",
+    "NewPrintedName": "punctuation",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagWhitespace",
+    "OldPrintedName": "NSLinguisticTagWhitespace",
+    "OldTypeName": "",
+    "NewPrintedName": "whitespace",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOther",
+    "OldPrintedName": "NSLinguisticTagOther",
+    "OldTypeName": "",
+    "NewPrintedName": "other",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagNoun",
+    "OldPrintedName": "NSLinguisticTagNoun",
+    "OldTypeName": "",
+    "NewPrintedName": "noun",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagVerb",
+    "OldPrintedName": "NSLinguisticTagVerb",
+    "OldTypeName": "",
+    "NewPrintedName": "verb",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagAdjective",
+    "OldPrintedName": "NSLinguisticTagAdjective",
+    "OldTypeName": "",
+    "NewPrintedName": "adjective",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagAdverb",
+    "OldPrintedName": "NSLinguisticTagAdverb",
+    "OldTypeName": "",
+    "NewPrintedName": "adverb",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPronoun",
+    "OldPrintedName": "NSLinguisticTagPronoun",
+    "OldTypeName": "",
+    "NewPrintedName": "pronoun",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagDeterminer",
+    "OldPrintedName": "NSLinguisticTagDeterminer",
+    "OldTypeName": "",
+    "NewPrintedName": "determiner",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagParticle",
+    "OldPrintedName": "NSLinguisticTagParticle",
+    "OldTypeName": "",
+    "NewPrintedName": "particle",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPreposition",
+    "OldPrintedName": "NSLinguisticTagPreposition",
+    "OldTypeName": "",
+    "NewPrintedName": "preposition",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagNumber",
+    "OldPrintedName": "NSLinguisticTagNumber",
+    "OldTypeName": "",
+    "NewPrintedName": "number",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagConjunction",
+    "OldPrintedName": "NSLinguisticTagConjunction",
+    "OldTypeName": "",
+    "NewPrintedName": "conjunction",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagInterjection",
+    "OldPrintedName": "NSLinguisticTagInterjection",
+    "OldTypeName": "",
+    "NewPrintedName": "interjection",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagClassifier",
+    "OldPrintedName": "NSLinguisticTagClassifier",
+    "OldTypeName": "",
+    "NewPrintedName": "classifier",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagIdiom",
+    "OldPrintedName": "NSLinguisticTagIdiom",
+    "OldTypeName": "",
+    "NewPrintedName": "idiom",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOtherWord",
+    "OldPrintedName": "NSLinguisticTagOtherWord",
+    "OldTypeName": "",
+    "NewPrintedName": "otherWord",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSentenceTerminator",
+    "OldPrintedName": "NSLinguisticTagSentenceTerminator",
+    "OldTypeName": "",
+    "NewPrintedName": "sentenceTerminator",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOpenQuote",
+    "OldPrintedName": "NSLinguisticTagOpenQuote",
+    "OldTypeName": "",
+    "NewPrintedName": "openQuote",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagCloseQuote",
+    "OldPrintedName": "NSLinguisticTagCloseQuote",
+    "OldTypeName": "",
+    "NewPrintedName": "closeQuote",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOpenParenthesis",
+    "OldPrintedName": "NSLinguisticTagOpenParenthesis",
+    "OldTypeName": "",
+    "NewPrintedName": "openParenthesis",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagCloseParenthesis",
+    "OldPrintedName": "NSLinguisticTagCloseParenthesis",
+    "OldTypeName": "",
+    "NewPrintedName": "closeParenthesis",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagWordJoiner",
+    "OldPrintedName": "NSLinguisticTagWordJoiner",
+    "OldTypeName": "",
+    "NewPrintedName": "wordJoiner",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagDash",
+    "OldPrintedName": "NSLinguisticTagDash",
+    "OldTypeName": "",
+    "NewPrintedName": "dash",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOtherPunctuation",
+    "OldPrintedName": "NSLinguisticTagOtherPunctuation",
+    "OldTypeName": "",
+    "NewPrintedName": "otherPunctuation",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagParagraphBreak",
+    "OldPrintedName": "NSLinguisticTagParagraphBreak",
+    "OldTypeName": "",
+    "NewPrintedName": "paragraphBreak",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOtherWhitespace",
+    "OldPrintedName": "NSLinguisticTagOtherWhitespace",
+    "OldTypeName": "",
+    "NewPrintedName": "otherWhitespace",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPersonalName",
+    "OldPrintedName": "NSLinguisticTagPersonalName",
+    "OldTypeName": "",
+    "NewPrintedName": "personalName",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagPlaceName",
+    "OldPrintedName": "NSLinguisticTagPlaceName",
+    "OldTypeName": "",
+    "NewPrintedName": "placeName",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagOrganizationName",
+    "OldPrintedName": "NSLinguisticTagOrganizationName",
+    "OldTypeName": "",
+    "NewPrintedName": "organizationName",
+    "NewTypeName": "NSLinguisticTag"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeTokenType",
+    "OldPrintedName": "NSLinguisticTagSchemeTokenType",
+    "OldTypeName": "",
+    "NewPrintedName": "tokenType",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeLexicalClass",
+    "OldPrintedName": "NSLinguisticTagSchemeLexicalClass",
+    "OldTypeName": "",
+    "NewPrintedName": "lexicalClass",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeNameType",
+    "OldPrintedName": "NSLinguisticTagSchemeNameType",
+    "OldTypeName": "",
+    "NewPrintedName": "nameType",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeNameTypeOrLexicalClass",
+    "OldPrintedName": "NSLinguisticTagSchemeNameTypeOrLexicalClass",
+    "OldTypeName": "",
+    "NewPrintedName": "nameTypeOrLexicalClass",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeLemma",
+    "OldPrintedName": "NSLinguisticTagSchemeLemma",
+    "OldTypeName": "",
+    "NewPrintedName": "lemma",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeLanguage",
+    "OldPrintedName": "NSLinguisticTagSchemeLanguage",
+    "OldTypeName": "",
+    "NewPrintedName": "language",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSLinguisticTagSchemeScript",
+    "OldPrintedName": "NSLinguisticTagSchemeScript",
+    "OldTypeName": "",
+    "NewPrintedName": "script",
+    "NewTypeName": "NSLinguisticTagScheme"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@GKPlayerDidChangeNotificationName",
+    "OldPrintedName": "GKPlayerDidChangeNotificationName",
+    "OldTypeName": "",
+    "NewPrintedName": "GKPlayerDidChangeNotificationName",
+    "NewTypeName": "NSNotification.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@GKPlayerAuthenticationDidChangeNotificationName",
+    "OldPrintedName": "GKPlayerAuthenticationDidChangeNotificationName",
+    "OldTypeName": "",
+    "NewPrintedName": "GKPlayerAuthenticationDidChangeNotificationName",
+    "NewTypeName": "NSNotification.Name"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isEqual:",
+    "OldPrintedName": "isEqual(_:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "isEqual(_:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)performSelector:",
+    "OldPrintedName": "perform(_:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "perform(_:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)performSelector:withObject:",
+    "OldPrintedName": "perform(_:with:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "perform(_:with:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)performSelector:withObject:withObject:",
+    "OldPrintedName": "perform(_:with:with:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "perform(_:with:with:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isProxy",
+    "OldPrintedName": "isProxy()",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "isProxy()",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isKindOfClass:",
+    "OldPrintedName": "isKind(of:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "isKind(of:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)isMemberOfClass:",
+    "OldPrintedName": "isMember(of:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "isMember(of:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)conformsToProtocol:",
+    "OldPrintedName": "conforms(to:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "conforms(to:)",
+    "NewTypeName": "NSProxy"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingNameKey",
+    "OldPrintedName": "NSTextCheckingNameKey",
+    "OldTypeName": "",
+    "NewPrintedName": "name",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingJobTitleKey",
+    "OldPrintedName": "NSTextCheckingJobTitleKey",
+    "OldTypeName": "",
+    "NewPrintedName": "jobTitle",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingOrganizationKey",
+    "OldPrintedName": "NSTextCheckingOrganizationKey",
+    "OldTypeName": "",
+    "NewPrintedName": "organization",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingStreetKey",
+    "OldPrintedName": "NSTextCheckingStreetKey",
+    "OldTypeName": "",
+    "NewPrintedName": "street",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingCityKey",
+    "OldPrintedName": "NSTextCheckingCityKey",
+    "OldTypeName": "",
+    "NewPrintedName": "city",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingStateKey",
+    "OldPrintedName": "NSTextCheckingStateKey",
+    "OldTypeName": "",
+    "NewPrintedName": "state",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingZIPKey",
+    "OldPrintedName": "NSTextCheckingZIPKey",
+    "OldTypeName": "",
+    "NewPrintedName": "zip",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingCountryKey",
+    "OldPrintedName": "NSTextCheckingCountryKey",
+    "OldTypeName": "",
+    "NewPrintedName": "country",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingPhoneKey",
+    "OldPrintedName": "NSTextCheckingPhoneKey",
+    "OldTypeName": "",
+    "NewPrintedName": "phone",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingAirlineKey",
+    "OldPrintedName": "NSTextCheckingAirlineKey",
+    "OldTypeName": "",
+    "NewPrintedName": "airline",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@NSTextCheckingFlightKey",
+    "OldPrintedName": "NSTextCheckingFlightKey",
+    "OldTypeName": "",
+    "NewPrintedName": "flight",
+    "NewTypeName": "NSTextCheckingKey"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)NSObject(im)respondsToSelector:",
+    "OldPrintedName": "responds(to:)",
+    "OldTypeName": "NSObjectProtocol",
+    "NewPrintedName": "responds(to:)",
+    "NewTypeName": "NSObject"
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSAttributedString(im)enumerateAttributesInRange:options:usingBlock:",
+    "Index": 3
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSAttributedString(im)enumerateAttribute:inRange:options:usingBlock:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateReadingItemAtURL:options:error:byAccessor:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateWritingItemAtURL:options:error:byAccessor:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateReadingItemAtURL:options:writingItemAtURL:options:error:byAccessor:",
+    "Index": 6
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)coordinateWritingItemAtURL:options:writingItemAtURL:options:error:byAccessor:",
+    "Index": 6
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSFileCoordinator(im)prepareForReadingItemsAtURLs:options:writingItemsAtURLs:options:error:byAccessor:",
+    "Index": 6
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:unit:scheme:options:usingBlock:",
+    "Index": 5
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSLinguisticTagger(im)enumerateTagsInRange:scheme:options:usingBlock:",
+    "Index": 4
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSLinguisticTagger(cm)enumerateTagsForString:range:unit:scheme:options:orthography:usingBlock:",
+    "Index": 7
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(cs)NSString(im)enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:",
+    "Index": 5
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:objc(pl)NSXPCProxyCreating(im)synchronousRemoteObjectProxyWithErrorHandler:",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "NoEscapeFuncParam",
+    "Usr": "c:@F@CGPathApplyWithBlock",
+    "Index": 1
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledFontForFont:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)UIFontMetrics(im)scaledFontForFont:maximumPointSize:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAudioNode(im)nameForInputBus:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAudioNode(im)nameForOutputBus:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAudioRecorder(im)recordAtTime:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAudioRecorder(im)recordForDuration:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)AVAudioRecorder(im)recordAtTime:forDuration:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)AVAudioRecorderDelegate(im)audioRecorderEndInterruption:withOptions:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)AVAudioRecorderDelegate(im)audioRecorderEndInterruption:withFlags:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)AVAudioRecorderDelegate(im)audioRecorderEndInterruption:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:8Dispatch0A4DataV9copyBytesys29UnsafeMutableRawBufferPointerV2to_Si5counttF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:8Dispatch0A4DataV9copyBytesys29UnsafeMutableRawBufferPointerV2to_s14CountableRangeVySiG4fromtF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)HMEventTrigger(cm)predicateForEvaluatingTriggerOccurringBeforeSignificantEvent:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)HMEventTrigger(cm)predicateForEvaluatingTriggerOccurringAfterSignificantEvent:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)SCNAnimatable(im)removeAnimationForKey:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)SCNAnimatable(im)removeAnimationForKey:blendOutDuration:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)SCNAnimatable(im)removeAnimationForKey:fadeOutDuration:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNCameraController(im)dollyZoomToTarget:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)convertVector:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)convertVector:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertPosition:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertPosition:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertVector:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertVector:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertTransform:toNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdConvertTransform:fromNode:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)simdLookAt:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)SCNNode(im)lookAt:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSAttributedString(im)attributesAtIndex:effectiveRange:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSAttributedString(im)attribute:atIndex:effectiveRange:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSLinguisticTagger(cm)availableTagSchemesForLanguage:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSMutableAttributedString(im)readFromURL:options:documentAttributes:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSMutableAttributedString(im)readFromData:options:documentAttributes:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSTextCheckingResult(im)rangeAtIndex:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSTextCheckingResult(im)rangeWithName:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)NSURLSessionTaskDelegate(im)URLSession:taskIsWaitingForConnectivity:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6insertys5RangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6insertys11ClosedRangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6removeys5RangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6removeys11ClosedRangeVys7UnicodeO6ScalarVG12charactersIn_tF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6insertSb8inserted_s7UnicodeO6ScalarV17memberAfterInserttAIF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation12CharacterSetV6removes7UnicodeO6ScalarVSgAHF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation19PropertyListDecoderC6decodexxm_AA4DataV4fromtKs9DecodableRzlF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "s:10Foundation19PropertyListDecoderC6decodexxm_AA4DataV4fromSo0bC13SerializationC0bC6FormatOz6formattKs9DecodableRzlF"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CLGeocoder(im)geocodePostalAddress:completionHandler:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)fetchHistoryAfterDate:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)fetchHistoryAfterToken:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)fetchHistoryAfterTransaction:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)deleteHistoryBeforeDate:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)deleteHistoryBeforeToken:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)NSPersistentHistoryChangeRequest(cm)deleteHistoryBeforeTransaction:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBCentralManagerDelegate(im)centralManager:willRestoreState:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBCentralManagerDelegate(im)centralManager:didConnectPeripheral:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CBPeripheral(im)readValueForCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CBPeripheral(im)writeValue:forCharacteristic:type:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CBPeripheral(im)readValueForDescriptor:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(cs)CBPeripheral(im)writeValue:forDescriptor:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBPeripheralDelegate(im)peripheral:didModifyServices:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBPeripheralDelegate(im)peripheral:didDiscoverServices:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBPeripheralDelegate(im)peripheral:didUpdateValueForCharacteristic:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBPeripheralDelegate(im)peripheral:didWriteValueForCharacteristic:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBPeripheralDelegate(im)peripheral:didUpdateValueForDescriptor:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBPeripheralDelegate(im)peripheral:didWriteValueForDescriptor:error:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBPeripheralManagerDelegate(im)peripheralManager:willRestoreState:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBPeripheralManagerDelegate(im)peripheralManager:central:didSubscribeToCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBPeripheralManagerDelegate(im)peripheralManager:central:didUnsubscribeFromCharacteristic:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBPeripheralManagerDelegate(im)peripheralManager:didReceiveReadRequest:"
+  },
+  {
+    "DiffItemKind": "OverloadedFuncInfo",
+    "Usr": "c:objc(pl)CBPeripheralManagerDelegate(im)peripheralManager:didReceiveWriteRequests:"
+  }
 ]
\ No newline at end of file
diff --git a/lib/Option/SanitizerOptions.cpp b/lib/Option/SanitizerOptions.cpp
index ad4fbb5..7f4abc7 100644
--- a/lib/Option/SanitizerOptions.cpp
+++ b/lib/Option/SanitizerOptions.cpp
@@ -19,7 +19,12 @@
 #include "swift/Basic/Platform.h"
 #include "swift/AST/DiagnosticEngine.h"
 #include "swift/AST/DiagnosticsFrontend.h"
+#include "llvm/ADT/Optional.h"
+#include "llvm/ADT/STLExtras.h"
+#include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/StringSwitch.h"
+#include "llvm/ADT/Triple.h"
+
 using namespace swift;
 
 static StringRef toStringRef(const SanitizerKind kind) {
@@ -95,9 +100,17 @@
   return opts;
 }
 
+static bool isTSanSupported(
+    const llvm::Triple &Triple,
+    llvm::function_ref<bool(llvm::StringRef)> sanitizerRuntimeLibExists) {
+
+  return Triple.isArch64Bit() && sanitizerRuntimeLibExists("tsan");
+}
+
 SanitizerKind swift::parseSanitizerArgValues(const llvm::opt::Arg *A,
-                                      const llvm::Triple &Triple,
-                                      DiagnosticEngine &Diags) {
+    const llvm::Triple &Triple,
+    DiagnosticEngine &Diags,
+    llvm::function_ref<bool(llvm::StringRef)> sanitizerRuntimeLibExists) {
   SanitizerKind kind = SanitizerKind::None;
 
   // Find the sanitizer kind.
@@ -137,11 +150,8 @@
       (A->getOption().getPrefixedName() + toStringRef(kind)).toStringRef(b),
       Triple.getTriple());
   }
-  // Thread Sanitizer only works on OS X and the simulators. It's only supported
-  // on 64 bit architectures.
-  if (kind == SanitizerKind::Thread &&
-      (!(Triple.isMacOSX() || tripleIsAnySimulator(Triple)) ||
-       !Triple.isArch64Bit())) {
+  if (kind == SanitizerKind::Thread
+      && !isTSanSupported(Triple, sanitizerRuntimeLibExists)) {
     SmallString<128> b;
     Diags.diagnose(SourceLoc(), diag::error_unsupported_opt_for_target,
       (A->getOption().getPrefixedName() + toStringRef(kind)).toStringRef(b),
diff --git a/lib/Parse/Lexer.cpp b/lib/Parse/Lexer.cpp
index 28ce770..9170c23 100644
--- a/lib/Parse/Lexer.cpp
+++ b/lib/Parse/Lexer.cpp
@@ -650,7 +650,6 @@
 
   // Map the character sequence onto
   tok Kind = llvm::StringSwitch<tok>(StringRef(CurPtr, tmpPtr-CurPtr))
-#define KEYWORD(kw)
 #define POUND_KEYWORD(id) \
   .Case(#id, tok::pound_##id)
 #include "swift/Syntax/TokenKinds.def"
@@ -1245,6 +1244,9 @@
                                                      DiagnosticEngine *Diags,
                                                      bool MultilineString) {
   llvm::SmallVector<char, 4> OpenDelimiters;
+  llvm::SmallVector<bool, 4> AllowNewline;
+  AllowNewline.push_back(MultilineString);
+
   auto inStringLiteral = [&]() {
     return !OpenDelimiters.empty() &&
            (OpenDelimiters.back() == '"' || OpenDelimiters.back() == '\'');
@@ -1263,27 +1265,46 @@
     // interpolated ones are no exception - unless multiline literals.
     case '\n':
     case '\r':
-      if (MultilineString)
+      if (AllowNewline.back())
         continue;
       // Will be diagnosed as an unterminated string literal.
       return CurPtr-1;
 
     case '"':
-    case '\'':
-      if (inStringLiteral()) {
-        // Is it the closing quote?
+    case '\'': {
+      if (!AllowNewline.back() && inStringLiteral()) {
         if (OpenDelimiters.back() == CurPtr[-1]) {
+          // Closing single line string literal.
           OpenDelimiters.pop_back();
+          AllowNewline.pop_back();
         }
-        // Otherwise it's an ordinary character; treat it normally.
-      } else {
-        OpenDelimiters.push_back(CurPtr[-1]);
+        // Otherwise, it's just a quote in string literal. e.g. "foo's".
+        continue;
       }
-      if (*CurPtr == '"' && *(CurPtr + 1) == '"' && *(CurPtr - 1) == '"') {
-        MultilineString = true;
+
+      bool isMultilineQuote = (
+          *CurPtr == '"' && *(CurPtr + 1) == '"' && *(CurPtr - 1) == '"');
+      if (isMultilineQuote)
         CurPtr += 2;
+
+      if (!inStringLiteral()) {
+        // Open string literal
+        OpenDelimiters.push_back(CurPtr[-1]);
+        AllowNewline.push_back(isMultilineQuote);
+        continue;
       }
+
+      // We are in multiline string literal.
+      assert(AllowNewline.back() && "other cases must be handled above");
+      if (isMultilineQuote) {
+        // Close multiline string literal.
+        OpenDelimiters.pop_back();
+        AllowNewline.pop_back();
+      }
+
+      // Otherwise, it's just a normal character in multiline string.
       continue;
+    }
     case '\\':
       if (inStringLiteral()) {
         char escapedChar = *CurPtr++;
diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp
index 5bab4bf..e6d0287 100644
--- a/lib/Parse/ParseDecl.cpp
+++ b/lib/Parse/ParseDecl.cpp
@@ -569,6 +569,7 @@
 
   case DAK_RawDocComment:
   case DAK_ObjCBridged:
+  case DAK_ObjCRuntimeName:
   case DAK_SynthesizedProtocol:
     llvm_unreachable("virtual attributes should not be parsed "
                      "by attribute parsing code");
@@ -743,8 +744,7 @@
   }
 
   case DAK_CDecl:
-  case DAK_SILGenName:
-  case DAK_NSKeyedArchiverClassName: {
+  case DAK_SILGenName: {
     if (!consumeIf(tok::l_paren)) {
       diagnose(Loc, diag::attr_expected_lparen, AttrName,
                DeclAttribute::isDeclModifier(DK));
@@ -787,10 +787,6 @@
       else if (DK == DAK_CDecl)
         Attributes.add(new (Context) CDeclAttr(AsmName.getValue(), AtLoc,
                                                AttrRange, /*Implicit=*/false));
-      else if (DK == DAK_NSKeyedArchiverClassName)
-        Attributes.add(new (Context) NSKeyedArchiverClassNameAttr(
-                                               AsmName.getValue(), AtLoc,
-                                               AttrRange, /*Implicit=*/false));
       else
         llvm_unreachable("out of sync with switch");
     }
@@ -1485,6 +1481,38 @@
     return false;
   }
 
+  // FIXME: Remove this after Swift 4.
+  if (DK == DAK_Count && Tok.getText() == "NSKeyedArchiverClassName") {
+    auto activeDiag = diagnose(Tok,diag::attr_nskeyedarchiverclassname_removed);
+    activeDiag.fixItReplace(Tok.getLoc(), "objc");
+    consumeToken();
+    SourceLoc lParenLoc;
+    if (consumeIf(tok::l_paren, lParenLoc)) {
+      if (Tok.is(tok::string_literal)) {
+        activeDiag.fixItRemoveChars(Tok.getLoc(),
+                                    Tok.getLoc().getAdvancedLoc(1));
+        SourceLoc endLoc = Tok.getLoc().getAdvancedLoc(Tok.getLength());
+        activeDiag.fixItRemoveChars(endLoc.getAdvancedLoc(-1), endLoc);
+      }
+      skipUntil(tok::r_paren);
+      SourceLoc rParenLoc;
+      parseMatchingToken(tok::r_paren, rParenLoc,
+                         diag::attr_warn_unused_result_expected_rparen,
+                         lParenLoc);
+    }
+    return false;
+  }
+
+  // FIXME: Remove this after Swift 4.
+  if (DK == DAK_Count &&
+      Tok.getText() == "NSKeyedArchiverEncodeNonGenericSubclassesOnly") {
+    diagnose(Tok,
+             diag::attr_nskeyedarchiverencodenongenericsubclassesonly_removed)
+      .fixItRemove(SourceRange(AtLoc, Tok.getLoc()));
+    consumeToken();
+    return false;
+  }
+
   if (DK != DAK_Count && !DeclAttribute::shouldBeRejectedByParser(DK))
     return parseNewDeclAttribute(Attributes, AtLoc, DK);
 
@@ -2100,13 +2128,40 @@
   }
 
   if (Tok.is(tok::pound_if)) {
-    auto IfConfigResult = parseDeclIfConfig(Flags);
+    auto IfConfigResult = parseIfConfig(
+      [&](SmallVectorImpl<ASTNode> &Decls, bool IsActive) {
+        Optional<Scope> scope;
+        if (!IsActive)
+          scope.emplace(this, getScopeInfo().getCurrentScope()->getKind(),
+                        /*inactiveConfigBlock=*/true);
+
+        ParserStatus Status;
+        bool PreviousHadSemi = true;
+        while (Tok.isNot(tok::pound_else, tok::pound_endif, tok::pound_elseif,
+                         tok::eof)) {
+          if (Tok.is(tok::r_brace)) {
+            diagnose(Tok.getLoc(),
+                      diag::unexpected_rbrace_in_conditional_compilation_block);
+            // If we see '}', following declarations don't look like belong to
+            // the current decl context; skip them.
+            skipUntilConditionalBlockClose();
+            break;
+          }
+          Status |= parseDeclItem(PreviousHadSemi, Flags,
+                                  [&](Decl *D) {Decls.emplace_back(D);});
+        }
+      });
+
     if (auto ICD = IfConfigResult.getPtrOrNull()) {
       // The IfConfigDecl is ahead of its members in source order.
       Handler(ICD);
       // Copy the active members into the entries list.
-      for (auto activeMember : ICD->getActiveMembers()) {
-        Handler(activeMember);
+      for (auto activeMember : ICD->getActiveClauseElements()) {
+        auto *D = activeMember.get<Decl*>();
+        if (isa<IfConfigDecl>(D))
+          // Don't hoist nested '#if'.
+          continue;
+        Handler(D);
       }
     }
     return IfConfigResult;
diff --git a/lib/Parse/ParseExpr.cpp b/lib/Parse/ParseExpr.cpp
index 6d1c225..82667b1 100644
--- a/lib/Parse/ParseExpr.cpp
+++ b/lib/Parse/ParseExpr.cpp
@@ -2133,6 +2133,40 @@
                                              TyLoc, ExpansionTyR);
 }
 
+// Extract names of the tuple elements and preserve the structure
+// of the tuple (with any nested tuples inside) to be able to use
+// it in the fix-it without any type information provided by user.
+static void printTupleNames(const TypeRepr *typeRepr, llvm::raw_ostream &OS) {
+  if (!typeRepr)
+    return;
+  
+  auto tupleRepr = dyn_cast<TupleTypeRepr>(typeRepr);
+  if (!tupleRepr)
+    return;
+  
+  OS << "(";
+  unsigned elementIndex = 0;
+  interleave(tupleRepr->getElements(),
+             [&](const TypeRepr *element) {
+               if (isa<TupleTypeRepr>(element)) {
+                 printTupleNames(element, OS);
+               } else {
+                 auto name = tupleRepr->getElementName(elementIndex);
+                 // If there is no label from the element
+                 // it means that it's malformed and we can
+                 // use the type instead.
+                 if (name.empty())
+                   element->print(OS);
+                 else
+                   OS << name;
+               }
+               
+               ++elementIndex;
+             },
+             [&] { OS << ", "; });
+  OS << ")";
+}
+
 bool Parser::
 parseClosureSignatureIfPresent(SmallVectorImpl<CaptureListEntry> &captureList,
                                ParameterList *&params, SourceLoc &throwsLoc,
@@ -2417,46 +2451,6 @@
     return false;
   };
 
-  // Extract names of the tuple elements and preserve the structure
-  // of the tuple (with any nested tuples inside) to be able to use
-  // it in the fix-it without any type information provided by user.
-  std::function<StringRef(const TypeRepr *)> getTupleNames =
-      [&](const TypeRepr *typeRepr) -> StringRef {
-    if (!typeRepr)
-      return "";
-
-    auto tupleRepr = dyn_cast<TupleTypeRepr>(typeRepr);
-    if (!tupleRepr)
-      return "";
-
-    SmallString<32> names;
-    llvm::raw_svector_ostream OS(names);
-
-    OS << "(";
-    unsigned elementIndex = 0;
-    interleave(tupleRepr->getElements(),
-               [&](const TypeRepr *element) {
-                 if (isa<TupleTypeRepr>(element)) {
-                   OS << getTupleNames(element);
-                 } else {
-                   auto name = tupleRepr->getElementName(elementIndex);
-                   // If there is no label from the element
-                   // it means that it's malformed and we can
-                   // use the type instead.
-                   if (name.empty())
-                     element->print(OS);
-                   else
-                     OS << name;
-                 }
-
-                 ++elementIndex;
-               },
-               [&] { OS << ", "; });
-    OS << ")";
-
-    return OS.str();
-  };
-
   for (unsigned i = 0, e = params->size(); i != e; ++i) {
     auto *param = params->get(i);
     if (!isTupleDestructuring(param))
@@ -2472,8 +2466,9 @@
     if (isMultiLine)
       OS << '\n' << indent;
 
-    OS << "let " << getTupleNames(typeLoc.getTypeRepr()) << " = " << argName
-       << (isMultiLine ? "\n" + indent : "; ");
+    OS << "let ";
+    printTupleNames(typeLoc.getTypeRepr(), OS);
+    OS << " = " << argName << (isMultiLine ? "\n" + indent : "; ");
 
     diagnose(param->getStartLoc(), diag::anon_closure_tuple_param_destructuring)
         .fixItReplace(param->getSourceRange(), argName)
diff --git a/lib/Parse/ParseIfConfig.cpp b/lib/Parse/ParseIfConfig.cpp
index 878f5b3..2f13a7b 100644
--- a/lib/Parse/ParseIfConfig.cpp
+++ b/lib/Parse/ParseIfConfig.cpp
@@ -321,6 +321,8 @@
                    diag::unsupported_platform_runtime_condition_argument);
         return nullptr;
       }
+
+      // Just a warning for other unsupported arguments.
       StringRef DiagName;
       switch (*Kind) {
       case PlatformConditionKind::OS:
@@ -338,7 +340,6 @@
       for (auto suggestion : suggestions)
         D.diagnose(Loc, diag::note_typo_candidate, suggestion)
           .fixItReplace(Arg->getSourceRange(), suggestion);
-      return nullptr;
     }
 
     return E;
@@ -549,21 +550,20 @@
 
 } // end anonymous namespace
 
-/// Parse and populate a list of #if/#elseif/#else/#endif clauses.
+/// Parse and populate a #if ... #endif directive.
 /// Delegate callback function to parse elements in the blocks.
-template <typename ElemTy, unsigned N>
-static ParserStatus parseIfConfig(
-    Parser &P, SmallVectorImpl<IfConfigClause<ElemTy>> &Clauses,
-    SourceLoc &EndLoc, bool HadMissingEnd,
-    llvm::function_ref<void(SmallVectorImpl<ElemTy> &, bool)> parseElements) {
+ParserResult<IfConfigDecl> Parser::parseIfConfig(
+    llvm::function_ref<void(SmallVectorImpl<ASTNode> &, bool)> parseElements) {
+
+  SmallVector<IfConfigClause, 4> Clauses;
   Parser::StructureMarkerRAII ParsingDecl(
-      P, P.Tok.getLoc(), Parser::StructureMarkerKind::IfConfig);
+      *this, Tok.getLoc(), Parser::StructureMarkerKind::IfConfig);
 
   bool foundActive = false;
   bool isVersionCondition = false;
   while (1) {
-    bool isElse = P.Tok.is(tok::pound_else);
-    SourceLoc ClauseLoc = P.consumeToken();
+    bool isElse = Tok.is(tok::pound_else);
+    SourceLoc ClauseLoc = consumeToken();
     Expr *Condition = nullptr;
     bool isActive = false;
 
@@ -571,110 +571,56 @@
     if (isElse) {
       isActive = !foundActive;
     } else {
-      llvm::SaveAndRestore<bool> S(P.InPoundIfEnvironment, true);
-      ParserResult<Expr> Result = P.parseExprSequence(diag::expected_expr,
+      llvm::SaveAndRestore<bool> S(InPoundIfEnvironment, true);
+      ParserResult<Expr> Result = parseExprSequence(diag::expected_expr,
                                                       /*isBasic*/true,
                                                       /*isForDirective*/true);
       if (Result.isNull())
         return makeParserError();
       Condition = Result.get();
-      if (validateIfConfigCondition(Condition, P.Context, P.Diags)) {
+      if (validateIfConfigCondition(Condition, Context, Diags)) {
         // Error in the condition;
         isActive = false;
         isVersionCondition = false;
       } else if (!foundActive) {
         // Evaludate the condition only if we haven't found any active one.
-        isActive = evaluateIfConfigCondition(Condition, P.Context);
+        isActive = evaluateIfConfigCondition(Condition, Context);
         isVersionCondition = isVersionIfConfigCondition(Condition);
       }
     }
 
     foundActive |= isActive;
 
-    if (!P.Tok.isAtStartOfLine() && P.Tok.isNot(tok::eof)) {
-      P.diagnose(P.Tok.getLoc(),
-                 diag::extra_tokens_conditional_compilation_directive);
+    if (!Tok.isAtStartOfLine() && Tok.isNot(tok::eof)) {
+      diagnose(Tok.getLoc(),
+               diag::extra_tokens_conditional_compilation_directive);
     }
 
     // Parse elements
-    SmallVector<ElemTy, N> Elements;
+    SmallVector<ASTNode, 16> Elements;
     if (isActive || !isVersionCondition) {
       parseElements(Elements, isActive);
     } else {
-      DiagnosticTransaction DT(P.Diags);
-      P.skipUntilConditionalBlockClose();
+      DiagnosticTransaction DT(Diags);
+      skipUntilConditionalBlockClose();
       DT.abort();
     }
 
-    Clauses.push_back(IfConfigClause<ElemTy>(ClauseLoc, Condition,
-                                             P.Context.AllocateCopy(Elements),
-                                             isActive));
+    Clauses.emplace_back(ClauseLoc, Condition,
+                         Context.AllocateCopy(Elements), isActive);
 
-    if (P.Tok.isNot(tok::pound_elseif, tok::pound_else))
+    if (Tok.isNot(tok::pound_elseif, tok::pound_else))
       break;
 
     if (isElse)
-      P.diagnose(P.Tok, diag::expected_close_after_else_directive);
+      diagnose(Tok, diag::expected_close_after_else_directive);
   }
 
-  HadMissingEnd = P.parseEndIfDirective(EndLoc);
-  return makeParserSuccess();
-}
-
-/// Parse #if ... #endif in declarations position.
-ParserResult<IfConfigDecl> Parser::parseDeclIfConfig(ParseDeclOptions Flags) {
-  SmallVector<IfConfigClause<Decl *>, 4> Clauses;
   SourceLoc EndLoc;
-  bool HadMissingEnd = false;
-  auto Status = parseIfConfig<Decl *, 8>(
-      *this, Clauses, EndLoc, HadMissingEnd,
-      [&](SmallVectorImpl<Decl *> &Decls, bool IsActive) {
-    Optional<Scope> scope;
-    if (!IsActive)
-      scope.emplace(this, getScopeInfo().getCurrentScope()->getKind(),
-                    /*inactiveConfigBlock=*/true);
+  bool HadMissingEnd = parseEndIfDirective(EndLoc);
 
-    ParserStatus Status;
-    bool PreviousHadSemi = true;
-    while (Tok.isNot(tok::pound_else, tok::pound_endif, tok::pound_elseif,
-                      tok::eof)) {
-      if (Tok.is(tok::r_brace)) {
-        diagnose(Tok.getLoc(),
-                  diag::unexpected_rbrace_in_conditional_compilation_block);
-        // If we see '}', following declarations don't look like belong to
-        // the current decl context; skip them.
-        skipUntilConditionalBlockClose();
-        break;
-      }
-      Status |= parseDeclItem(PreviousHadSemi, Flags,
-                              [&](Decl *D) {Decls.push_back(D);});
-    }
-  });
-  if (Status.isError())
-    return makeParserErrorResult<IfConfigDecl>();
-
-  IfConfigDecl *ICD = new (Context) IfConfigDecl(CurDeclContext,
-                                                 Context.AllocateCopy(Clauses),
-                                                 EndLoc, HadMissingEnd);
-  return makeParserResult(ICD);
-}
-
-/// Parse #if ... #endif in statements position.
-ParserResult<Stmt> Parser::parseStmtIfConfig(BraceItemListKind Kind) {
-  SmallVector<IfConfigClause<ASTNode>, 4> Clauses;
-  SourceLoc EndLoc;
-  bool HadMissingEnd = false;
-  auto Status = parseIfConfig<ASTNode, 16>(
-      *this, Clauses, EndLoc, HadMissingEnd,
-      [&](SmallVectorImpl<ASTNode> &Elements, bool IsActive) {
-    parseBraceItems(Elements, Kind, IsActive
-                      ? BraceItemListKind::ActiveConditionalBlock
-                      : BraceItemListKind::InactiveConditionalBlock);
-  });
-  if (Status.isError())
-    return makeParserErrorResult<Stmt>();
-
-  auto *ICS = new (Context) IfConfigStmt(Context.AllocateCopy(Clauses),
+  auto *ICD = new (Context) IfConfigDecl(CurDeclContext,
+                                         Context.AllocateCopy(Clauses),
                                          EndLoc, HadMissingEnd);
-  return makeParserResult(ICS);
+  return makeParserResult(ICD);
 }
diff --git a/lib/Parse/ParseStmt.cpp b/lib/Parse/ParseStmt.cpp
index cd13134..1591ef3 100644
--- a/lib/Parse/ParseStmt.cpp
+++ b/lib/Parse/ParseStmt.cpp
@@ -293,11 +293,12 @@
         Entries.push_back(D);
       TmpDecls.clear();
     } else if (Tok.is(tok::pound_if)) {
-      SourceLoc StartLoc = Tok.getLoc();
-      
-      // We'll want to parse the #if block, but not wrap it in a top-level
-      // code declaration immediately.
-      auto IfConfigResult = parseStmtIfConfig(Kind);
+      auto IfConfigResult = parseIfConfig(
+        [&](SmallVectorImpl<ASTNode> &Elements, bool IsActive) {
+          parseBraceItems(Elements, Kind, IsActive
+                            ? BraceItemListKind::ActiveConditionalBlock
+                            : BraceItemListKind::InactiveConditionalBlock);
+        });
       
       if (IfConfigResult.isParseError()) {
         NeedParseErrorRecovery = true;
@@ -311,19 +312,14 @@
         continue;
       }
 
-      // Add the #if block itself as a TLCD if necessary
-      if (Kind == BraceItemListKind::TopLevelCode) {
-        auto *TLCD = new (Context) TopLevelCodeDecl(CurDeclContext);
-        auto Brace = BraceStmt::create(Context, StartLoc,
-                                       {Result}, PreviousLoc);
-        TLCD->setBody(Brace);
-        Entries.push_back(TLCD);
-      } else {
-        Entries.push_back(Result);
-      }
+      // Add the #if block itself
+      Entries.push_back(Result);
 
-      IfConfigStmt *ICS = cast<IfConfigStmt>(Result.get<Stmt*>());
-      for (auto &Entry : ICS->getActiveClauseElements()) {
+      IfConfigDecl *ICD = cast<IfConfigDecl>(Result.get<Decl*>());
+      for (auto &Entry : ICD->getActiveClauseElements()) {
+        if (Entry.is<Decl*>() && isa<IfConfigDecl>(Entry.get<Decl*>()))
+          // Don't hoist nested '#if'.
+          continue;
         Entries.push_back(Entry);
         if (Entry.is<Decl*>()) {
           Entry.get<Decl*>()->setEscapedFromIfConfig(true);
diff --git a/lib/PrintAsObjC/PrintAsObjC.cpp b/lib/PrintAsObjC/PrintAsObjC.cpp
index a3f1e79..b29b2fb 100644
--- a/lib/PrintAsObjC/PrintAsObjC.cpp
+++ b/lib/PrintAsObjC/PrintAsObjC.cpp
@@ -1366,7 +1366,8 @@
     if (alias->hasClangNode()) {
       if (auto *clangTypeDecl =
             dyn_cast<clang::TypeDecl>(alias->getClangDecl())) {
-        os << clangTypeDecl->getName();
+        maybePrintTagKeyword(alias);
+        os << getNameForObjC(alias);
 
         if (isClangPointerType(clangTypeDecl))
           printNullability(optionalKind);
@@ -1392,7 +1393,7 @@
     visitPart(alias->getUnderlyingTypeLoc().getType(), optionalKind);
   }
 
-  void maybePrintTagKeyword(const NominalTypeDecl *NTD) {
+  void maybePrintTagKeyword(const TypeDecl *NTD) {
     if (isa<EnumDecl>(NTD) && !NTD->hasClangNode()) {
       os << "enum ";
       return;
@@ -2712,6 +2713,7 @@
         "# pragma clang diagnostic ignored \"-Wpragma-clang-attribute\"\n"
         "#endif\n"
         "#pragma clang diagnostic ignored \"-Wunknown-pragmas\"\n"
+        "#pragma clang diagnostic ignored \"-Wnullability\"\n"
         "\n"
         "SWIFT_MODULE_NAMESPACE_PUSH(\"" << M.getNameStr() << "\")\n"
       << os.str()
diff --git a/lib/SIL/DynamicCasts.cpp b/lib/SIL/DynamicCasts.cpp
index 2bf4152..e956100 100644
--- a/lib/SIL/DynamicCasts.cpp
+++ b/lib/SIL/DynamicCasts.cpp
@@ -390,6 +390,22 @@
             sourceMetatype.isAnyExistentialType())
       return DynamicCastFeasibility::WillSucceed;
 
+    // If the source and target are the same existential type, but the source is
+    // P.Protocol and the dest is P.Type, then we need to consider whether the
+    // protocol is self-conforming.
+    // The only cases where a protocol self-conforms are objc protocols, but
+    // we're going to expect P.Type to hold a class object. And this case
+    // doesn't matter since for a self-conforming protocol type there can't be
+    // any type-level methods.
+    // Thus we consider this kind of cast to always fail. The only exception
+    // from this rule is when the target is Any.Type, because *.Protocol
+    // can always be casted to Any.Type.
+    if (source->isAnyExistentialType() && isa<MetatypeType>(sourceMetatype) &&
+        isa<ExistentialMetatypeType>(targetMetatype)) {
+      return target->isAny() ? DynamicCastFeasibility::WillSucceed
+                             : DynamicCastFeasibility::WillFail;
+    }
+
     if (targetMetatype.isAnyExistentialType() &&
         (isa<ProtocolType>(target) || isa<ProtocolCompositionType>(target))) {
       auto Feasibility = classifyDynamicCastToProtocol(source,
diff --git a/lib/SIL/SILBuilder.cpp b/lib/SIL/SILBuilder.cpp
index 21986ec..499e852 100644
--- a/lib/SIL/SILBuilder.cpp
+++ b/lib/SIL/SILBuilder.cpp
@@ -364,7 +364,7 @@
     if (metatypeInst->use_empty() &&
         metatypeInst->getParent() == getInsertionBB()) {
       auto origLoc = metatypeInst->getLoc();
-      metatypeInst->removeFromParent();
+      metatypeInst->eraseFromParent();
       return createMetatype(origLoc, Ty);
     }
   }
@@ -382,7 +382,7 @@
     if (metatypeInst->use_empty() &&
         metatypeInst->getParent() == getInsertionBB()) {
       auto origLoc = metatypeInst->getLoc();
-      metatypeInst->removeFromParent();
+      metatypeInst->eraseFromParent();
       return createMetatype(origLoc, Ty);
     }
   }
diff --git a/lib/SIL/SILFunctionType.cpp b/lib/SIL/SILFunctionType.cpp
index bd24aa3..82814e2 100644
--- a/lib/SIL/SILFunctionType.cpp
+++ b/lib/SIL/SILFunctionType.cpp
@@ -547,9 +547,10 @@
       // the tuple type is materializable -- if it doesn't contain an
       // l-value type -- then it's a valid target for substitution and
       // we should not expand it.
-      if (isa<TupleType>(substType) &&
+      CanTupleType substTupleTy = dyn_cast<TupleType>(substType);
+      if (substTupleTy &&
           (!origType.isTypeParameter() ||
-           !substType->isMaterializable())) {
+           substTupleTy->hasInOutElement())) {
         auto substTuple = cast<TupleType>(substType);
         assert(origType.isTypeParameter() ||
                origType.getNumTupleElements() == substTuple->getNumElements());
diff --git a/lib/SIL/SILInstruction.cpp b/lib/SIL/SILInstruction.cpp
index 8b07449..b672650 100644
--- a/lib/SIL/SILInstruction.cpp
+++ b/lib/SIL/SILInstruction.cpp
@@ -109,13 +109,6 @@
   return getFunction()->getModule();
 }
 
-/// removeFromParent - This method unlinks 'self' from the containing basic
-/// block, but does not delete it.
-///
-void SILInstruction::removeFromParent() {
-  getParent()->remove(this);
-}
-
 /// eraseFromParent - This method unlinks 'self' from the containing basic
 /// block and deletes it.
 ///
@@ -124,6 +117,11 @@
   getParent()->erase(this);
 }
 
+void SILInstruction::moveFront(SILBasicBlock *Block) {
+  getParent()->remove(this);
+  Block->push_front(this);
+}
+
 /// Unlink this instruction from its current basic block and insert it into
 /// the basic block that Later lives in, right before Later.
 void SILInstruction::moveBefore(SILInstruction *Later) {
@@ -170,18 +168,12 @@
   }
 }
 
-void SILInstruction::replaceAllUsesWithUndef() {
-  SILModule &Mod = getModule();
-  while (!use_empty()) {
-    Operand *Op = *use_begin();
-    Op->set(SILUndef::get(Op->get()->getType(), Mod));
-  }
-}
-
 namespace {
-  class InstructionDestroyer : public SILVisitor<InstructionDestroyer> {
-  public:
-#define VALUE(CLASS, PARENT) void visit##CLASS(CLASS *I) { I->~CLASS(); }
+class InstructionDestroyer
+    : public SILInstructionVisitor<InstructionDestroyer> {
+public:
+#define INST(CLASS, PARENT, TEXTUALNAME, MEMBEHAVIOR, MAYRELEASE)              \
+  void visit##CLASS(CLASS *I) { I->~CLASS(); }
 #include "swift/SIL/SILNodes.def"
   };
 } // end anonymous namespace
diff --git a/lib/SIL/SILModule.cpp b/lib/SIL/SILModule.cpp
index a960977..477ef5b 100644
--- a/lib/SIL/SILModule.cpp
+++ b/lib/SIL/SILModule.cpp
@@ -83,12 +83,10 @@
 };
 
 SILModule::SILModule(ModuleDecl *SwiftModule, SILOptions &Options,
-                     const DeclContext *associatedDC, bool wholeModule,
-                     bool wholeModuleSerialized)
+                     const DeclContext *associatedDC, bool wholeModule)
     : TheSwiftModule(SwiftModule), AssociatedDeclContext(associatedDC),
       Stage(SILStage::Raw), Callback(new SILModule::SerializationCallback()),
-      wholeModule(wholeModule), WholeModuleSerialized(wholeModuleSerialized),
-      Options(Options), Types(*this) {}
+      wholeModule(wholeModule), Options(Options), Types(*this) {}
 
 SILModule::~SILModule() {
   // Decrement ref count for each SILGlobalVariable with static initializers.
diff --git a/lib/SIL/SILOpenedArchetypesTracker.cpp b/lib/SIL/SILOpenedArchetypesTracker.cpp
index d94795b..76db598 100644
--- a/lib/SIL/SILOpenedArchetypesTracker.cpp
+++ b/lib/SIL/SILOpenedArchetypesTracker.cpp
@@ -10,6 +10,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "swift/SIL/SILBuilder.h"
 #include "swift/SIL/SILOpenedArchetypesTracker.h"
 
 using namespace swift;
@@ -17,11 +18,15 @@
 void SILOpenedArchetypesTracker::addOpenedArchetypeDef(CanArchetypeType archetype,
                                                        SILValue Def) {
   auto OldDef = getOpenedArchetypeDef(archetype);
-  if (OldDef && isa<GlobalAddrInst>(OldDef)) {
-    // It is a forward definition created during deserialization.
-    // Replace it with the real definition now.
-    OldDef->replaceAllUsesWith(Def);
-    OldDef = SILValue();
+  if (OldDef) {
+    if (auto *OldI = dyn_cast<GlobalAddrInst>(OldDef)) {
+      // It is a forward definition created during deserialization.
+      // Replace it with the real definition now.
+      OldDef->replaceAllUsesWith(Def);
+      // Remove the placeholder instruction.
+      OldI->eraseFromParent();
+      OldDef = SILValue();
+    }
   }
   assert(!OldDef &&
          "There can be only one definition of an opened archetype");
@@ -56,11 +61,22 @@
     if (getOpenedArchetypeDef(archetypeTy))
       return;
 
-    auto &SILMod = this->getFunction().getModule();
+    auto *CurF = const_cast<SILFunction *>(&this->getFunction());
+    auto &SILMod = CurF->getModule();
     // Create a placeholder representing a forward definition.
-    auto Placeholder = new (SILMod)
-        GlobalAddrInst(SILDebugLocation(),
-                       SILMod.Types.getLoweredType(archetypeTy));
+    // Add the placeholder at the beginning of the entry block.
+    SILValue Placeholder;
+    if (!CurF->getEntryBlock()->empty()) {
+      SILBuilder B(CurF->getEntryBlock()->begin());
+      Placeholder =
+          B.createGlobalAddr(ArtificialUnreachableLocation(),
+                             SILMod.Types.getLoweredType(archetypeTy));
+    } else {
+      SILBuilder B(CurF->getEntryBlock());
+      Placeholder =
+          B.createGlobalAddr(ArtificialUnreachableLocation(),
+                             SILMod.Types.getLoweredType(archetypeTy));
+    }
     // Make it available to SILBuilder, so that instructions using this
     // archetype can be constructed.
     addOpenedArchetypeDef(archetypeTy, Placeholder);
@@ -159,7 +175,8 @@
   // First perform a quick check.
   for (auto &Op : OpenedArchetypeOperands) {
     auto Def = Op.get();
-    if (getOpenedArchetypeOf(cast<SILInstruction>(Def)) == archetypeTy)
+    if (isa<SILInstruction>(Def) &&
+        getOpenedArchetypeOf(cast<SILInstruction>(Def)) == archetypeTy)
       return Def;
   }
   // Then use a regular lookup.
diff --git a/lib/SIL/SILValue.cpp b/lib/SIL/SILValue.cpp
index 96febcc..bce6e85 100644
--- a/lib/SIL/SILValue.cpp
+++ b/lib/SIL/SILValue.cpp
@@ -45,6 +45,18 @@
   }
 }
 
+void ValueBase::replaceAllUsesWithUndef() {
+  SILModule *Mod = getModule();
+  if (!Mod) {
+    llvm_unreachable("replaceAllUsesWithUndef can only be used on ValueBase "
+                     "that have access to the parent module.");
+  }
+  while (!use_empty()) {
+    Operand *Op = *use_begin();
+    Op->set(SILUndef::get(Op->get()->getType(), Mod));
+  }
+}
+
 SILBasicBlock *ValueBase::getParentBlock() const {
   auto *NonConstThis = const_cast<ValueBase *>(this);
   if (auto *Inst = dyn_cast<SILInstruction>(NonConstThis))
diff --git a/lib/SIL/SILVerifier.cpp b/lib/SIL/SILVerifier.cpp
index 6aa8f10..4556a3d 100644
--- a/lib/SIL/SILVerifier.cpp
+++ b/lib/SIL/SILVerifier.cpp
@@ -122,10 +122,6 @@
     return F.getModule().getOptions().EnableSILOwnership;
   }
 
-  bool areCOWExistentialsEnabled() const {
-    return F.getModule().getOptions().UseCOWExistentials;
-  }
-
   void _require(bool condition, const Twine &complaint,
                 const std::function<void()> &extraContext = nullptr) {
     if (condition) return;
@@ -2323,9 +2319,6 @@
             "Archetype opened by open_existential_addr should be registered in "
             "SILFunction");
 
-    if (!areCOWExistentialsEnabled())
-      return;
-
     // Check all the uses. Consuming or mutating uses must have mutable access
     // to the opened value.
     auto allowedAccessKind = OEI->getAccessKind();
diff --git a/lib/SIL/TypeLowering.cpp b/lib/SIL/TypeLowering.cpp
index 7ee89fb..759b52a 100644
--- a/lib/SIL/TypeLowering.cpp
+++ b/lib/SIL/TypeLowering.cpp
@@ -122,10 +122,20 @@
                            !getTypeLowering(var->getType()).isAddressOnly()))
         return CaptureKind::Constant;
 
+      // In-out parameters are captured by address.
       if (var->getType()->is<InOutType>()) {
         return CaptureKind::StorageAddress;
       }
 
+      // Reference storage types can appear in a capture list, which means
+      // we might allocate boxes to store the captures. However, those boxes
+      // have the same lifetime as the closure itself, so we must capture
+      // the box itself and not the payload, even if the closure is noescape,
+      // otherwise they will be destroyed when the closure is formed.
+      if (var->getType()->is<ReferenceStorageType>()) {
+        return CaptureKind::Box;
+      }
+
       // If we're capturing into a non-escaping closure, we can generally just
       // capture the address of the value as no-escape.
       return capture.isNoEscape() ?
diff --git a/lib/SILGen/ArgumentSource.h b/lib/SILGen/ArgumentSource.h
index a04576b..e92da6e 100644
--- a/lib/SILGen/ArgumentSource.h
+++ b/lib/SILGen/ArgumentSource.h
@@ -157,7 +157,7 @@
   explicit operator bool() const & {
     switch (StoredKind) {
     case Kind::RValue:
-      return bool(asKnownRValue());
+      return !asKnownRValue().isNull();
     case Kind::LValue:
       return asKnownLValue().isValid();
     case Kind::Expr:
diff --git a/lib/SILGen/RValue.cpp b/lib/SILGen/RValue.cpp
index e8f7d2f..57fe2dd 100644
--- a/lib/SILGen/RValue.cpp
+++ b/lib/SILGen/RValue.cpp
@@ -425,7 +425,7 @@
   if (values.size() == 1 && values[0].isInContext()) {
     values = ArrayRef<ManagedValue>();
     type = CanType();
-    elementsToBeAdded = Used;
+    elementsToBeAdded = InContext;
     return;
   }
 
@@ -444,7 +444,7 @@
 
   if (v.isInContext()) {
     type = CanType();
-    elementsToBeAdded = Used;
+    elementsToBeAdded = InContext;
     return;
   }
 
@@ -457,7 +457,7 @@
 
   if (v.isInContext()) {
     type = CanType();
-    elementsToBeAdded = Used;
+    elementsToBeAdded = InContext;
     return;
   }
 
@@ -476,8 +476,9 @@
 
 void RValue::addElement(RValue &&element) & {
   assert(!element.isUsed() && "adding consumed value to r-value");
+  assert(!element.isInSpecialState() && "adding special value to r-value");
   assert(!isComplete() && "rvalue already complete");
-  assert(!isUsed() && "rvalue already used");
+  assert(!isInSpecialState() && "cannot add elements to a special r-value");
   --elementsToBeAdded;
   values.insert(values.end(),
                 element.values.begin(), element.values.end());
@@ -489,8 +490,9 @@
 void RValue::addElement(SILGenFunction &SGF, ManagedValue element,
                         CanType formalType, SILLocation l) & {
   assert(element && "adding consumed value to r-value");
+  assert(!element.isInContext() && "adding in-context value to r-value");
   assert(!isComplete() && "rvalue already complete");
-  assert(!isUsed() && "rvalue already used");
+  assert(!isInSpecialState() && "cannot add elements to an in-context r-value");
   --elementsToBeAdded;
 
   ExplodeTupleValue(values, SGF, l).visit(formalType, element);
@@ -560,6 +562,13 @@
 }
 
 ManagedValue RValue::getAsSingleValue(SILGenFunction &SGF, SILLocation l) && {
+  assert(!isUsed() && "r-value already used");
+
+  if (isInContext()) {
+    makeUsed();
+    return ManagedValue::forInContext();
+  }
+
   // Avoid killing and re-emitting the cleanup if the enclosed value isn't a
   // tuple.
   if (!isa<TupleType>(type)) {
@@ -667,7 +676,7 @@
   : type(copied.type),
     elementsToBeAdded(copied.elementsToBeAdded)
 {
-  assert((copied.isComplete() || copied.isUsed())
+  assert((copied.isComplete() || copied.isInSpecialState())
          && "can't copy incomplete rvalue");
   values.reserve(copied.values.size());
   for (ManagedValue value : copied.values) {
diff --git a/lib/SILGen/RValue.h b/lib/SILGen/RValue.h
index c761c06..94af6d9 100644
--- a/lib/SILGen/RValue.h
+++ b/lib/SILGen/RValue.h
@@ -42,7 +42,15 @@
   
   /// Flag value used to mark an rvalue as invalid, because it was
   /// consumed or it was default-initialized.
-  enum : unsigned { Used = ~0U };
+  enum : unsigned {
+    Null = ~0U,
+    Used = Null - 1,
+    InContext = Used - 1,
+  };
+
+  bool isInSpecialState() const {
+    return elementsToBeAdded >= InContext;
+  }
   
   // Don't copy.
   RValue(const RValue &) = delete;
@@ -60,23 +68,26 @@
   /// ManagedValues. Used to implement the extractElement* methods.
   RValue(ArrayRef<ManagedValue> values, CanType type);
 
+  RValue(unsigned state) : elementsToBeAdded(state) {
+    assert(isInSpecialState());
+  }
+
 public:
-  /// Creates an invalid RValue object, in a "used" state.
-  RValue() : elementsToBeAdded(Used) {}
+  RValue() : elementsToBeAdded(Null) {}
   
   RValue(RValue &&rv)
     : values(std::move(rv.values)),
       type(rv.type),
       elementsToBeAdded(rv.elementsToBeAdded)
   {
-    assert((rv.isComplete() || rv.isUsed())
+    assert((rv.isComplete() || rv.isInSpecialState())
            && "moving rvalue that wasn't complete?!");
     rv.elementsToBeAdded = Used;
   }
   RValue &operator=(RValue &&rv) {
-    assert(isUsed() && "reassigning an unused rvalue?!");
+    assert((isNull() || isUsed()) && "reassigning an valid rvalue?!");
     
-    assert((rv.isComplete() || rv.isUsed())
+    assert((rv.isComplete() || rv.isInSpecialState())
            && "moving rvalue that wasn't complete?!");
     values = std::move(rv.values);
     type = rv.type;
@@ -100,6 +111,11 @@
   /// ManagedValues. Used to implement the extractElement* methods.
   static RValue withPreExplodedElements(ArrayRef<ManagedValue> values,
                                         CanType type);
+
+  /// Creates an invalid RValue object, in an "in-context" state.
+  static RValue forInContext() {
+    return RValue(InContext);
+  }
   
   /// Create an RValue to which values will be subsequently added using
   /// addElement(), with the level of tuple expansion in the input specified
@@ -111,17 +127,19 @@
   /// addElement(). The RValue will not be complete until all the elements have
   /// been added.
   explicit RValue(CanType type);
-  
+
   /// True if the rvalue has been completely initialized by adding all its
   /// elements.
   bool isComplete() const & { return elementsToBeAdded == 0; }
+
+  /// True if the rvalue was null-initialized.
+  bool isNull() const & { return elementsToBeAdded == Null; }
   
   /// True if this rvalue has been used.
   bool isUsed() const & { return elementsToBeAdded == Used; }
-  explicit operator bool() const & { return !isUsed(); }
 
   /// True if this rvalue was emitted into context.
-  bool isInContext() const & { return isUsed(); }
+  bool isInContext() const & { return elementsToBeAdded == InContext; }
   
   /// True if this represents an lvalue.
   bool isLValue() const & {
diff --git a/lib/SILGen/ResultPlan.cpp b/lib/SILGen/ResultPlan.cpp
index de91d23..d03fdd5 100644
--- a/lib/SILGen/ResultPlan.cpp
+++ b/lib/SILGen/ResultPlan.cpp
@@ -37,7 +37,7 @@
   RValue finish(SILGenFunction &SGF, SILLocation loc, CanType substType,
                 ArrayRef<ManagedValue> &directResults) override {
     init->finishInitialization(SGF);
-    return RValue();
+    return RValue::forInContext();
   }
   void
   gatherIndirectResultAddrs(SILGenFunction &SGF, SILLocation loc,
@@ -106,7 +106,7 @@
 
         // If that successfully emitted into the initialization, we're done.
         if (value.isInContext())
-          return RValue();
+          return RValue::forInContext();
       }
     }
 
@@ -114,7 +114,7 @@
     if (init) {
       init->copyOrInitValueInto(SGF, loc, value, /*init*/ true);
       init->finishInitialization(SGF);
-      return RValue();
+      return RValue::forInContext();
 
       // Otherwise, we've got the r-value we want.
     } else {
@@ -148,14 +148,14 @@
   RValue finish(SILGenFunction &SGF, SILLocation loc, CanType substType,
                 ArrayRef<ManagedValue> &directResults) override {
     RValue subResult = subPlan->finish(SGF, loc, substType, directResults);
-    assert(subResult.isUsed() && "sub-plan didn't emit into context?");
+    assert(subResult.isInContext() && "sub-plan didn't emit into context?");
     (void)subResult;
 
     ManagedValue value = temporary->getManagedAddress();
     init->copyOrInitValueInto(SGF, loc, value, /*init*/ true);
     init->finishInitialization(SGF);
 
-    return RValue();
+    return RValue::forInContext();
   }
 
   void
@@ -183,7 +183,7 @@
     init->copyOrInitValueInto(SGF, loc, value, /*init*/ true);
     init->finishInitialization(SGF);
 
-    return RValue();
+    return RValue::forInContext();
   }
 
   void
@@ -271,12 +271,12 @@
     for (auto i : indices(substTupleType.getElementTypes())) {
       auto eltType = substTupleType.getElementType(i);
       RValue eltRV = eltPlans[i]->finish(SGF, loc, eltType, directResults);
-      assert(eltRV.isUsed());
+      assert(eltRV.isInContext());
       (void)eltRV;
     }
     tupleInit->finishInitialization(SGF);
 
-    return RValue();
+    return RValue::forInContext();
   }
 
   void
diff --git a/lib/SILGen/SILGen.cpp b/lib/SILGen/SILGen.cpp
index 66db8bd..82f2e43 100644
--- a/lib/SILGen/SILGen.cpp
+++ b/lib/SILGen/SILGen.cpp
@@ -38,9 +38,9 @@
 // SILGenModule Class implementation
 //===----------------------------------------------------------------------===//
 
-SILGenModule::SILGenModule(SILModule &M, ModuleDecl *SM, bool makeModuleFragile)
+SILGenModule::SILGenModule(SILModule &M, ModuleDecl *SM)
   : M(M), Types(M.Types), SwiftModule(SM), TopLevelSGF(nullptr),
-    Profiler(nullptr), makeModuleFragile(makeModuleFragile) {
+    Profiler(nullptr) {
 }
 
 SILGenModule::~SILGenModule() {
@@ -451,7 +451,7 @@
       if (isAvailableExternally(F->getLinkage())) {
         F->setLinkage(constant.getLinkage(ForDefinition));
       }
-      if (makeModuleFragile) {
+      if (isMakeModuleFragile()) {
         F->setSerialized(IsSerialized);
       }
     }
@@ -498,7 +498,7 @@
 
   assert(F && "SILFunction should have been defined");
 
-  if (makeModuleFragile) {
+  if (isMakeModuleFragile()) {
     SILLinkage linkage = constant.getLinkage(forDefinition);
     if (linkage != SILLinkage::PublicExternal) {
       F->setSerialized(IsSerialized);
@@ -916,15 +916,33 @@
   }
 }
 
-void SILGenModule::emitDefaultArgGenerator(SILDeclRef constant, Expr *arg) {
+void SILGenModule::emitDefaultArgGenerator(SILDeclRef constant, Expr *arg,
+                                           DefaultArgumentKind kind) {
+  switch (kind) {
+  case DefaultArgumentKind::None:
+    llvm_unreachable("No default argument here?");
+
+  case DefaultArgumentKind::Normal:
+    break;
+
+  case DefaultArgumentKind::Inherited:
+    return;
+
+  case DefaultArgumentKind::Column:
+  case DefaultArgumentKind::File:
+  case DefaultArgumentKind::Line:
+  case DefaultArgumentKind::Function:
+  case DefaultArgumentKind::DSOHandle:
+  case DefaultArgumentKind::Nil:
+  case DefaultArgumentKind::EmptyArray:
+  case DefaultArgumentKind::EmptyDictionary:
+    return;
+  }
+
   emitOrDelayFunction(*this, constant, [this,constant,arg](SILFunction *f) {
     preEmitFunction(constant, arg, f, arg);
     PrettyStackTraceSILFunction X("silgen emitDefaultArgGenerator ", f);
     SILGenFunction SGF(*this, *f);
-    // Override location for #file, #line etc. to an invalid one so that we
-    // don't put extra strings into the default argument generator function that
-    // is not going to be ever used anyway.
-    SGF.overrideLocationForMagicIdentifiers = SourceLoc();
     SGF.emitGeneratorFunction(constant, arg);
     postEmitFunction(constant, f);
   });
@@ -959,7 +977,7 @@
       M.createFunction(SILLinkage::Private,
                        funcName, initSILType, nullptr,
                        SILLocation(binding), IsNotBare, IsNotTransparent,
-                       makeModuleFragile
+                       isMakeModuleFragile()
                            ? IsSerialized
                            : IsNotSerialized);
   f->setDebugScope(new (M) SILDebugScope(RegularLocation(binding), f));
@@ -1004,7 +1022,7 @@
     for (auto param : *paramList) {
       if (auto defaultArg = param->getDefaultValue())
         emitDefaultArgGenerator(SILDeclRef::getDefaultArgGenerator(decl, index),
-                                defaultArg);
+                                defaultArg, param->getDefaultArgumentKind());
       ++index;
     }
   }
@@ -1375,7 +1393,7 @@
 
 std::unique_ptr<SILModule>
 SILModule::constructSIL(ModuleDecl *mod, SILOptions &options, FileUnit *SF,
-                        Optional<unsigned> startElem, bool makeModuleFragile,
+                        Optional<unsigned> startElem,
                         bool isWholeModule) {
   SharedTimer timer("SILGen");
   const DeclContext *DC;
@@ -1391,8 +1409,8 @@
   }
 
   std::unique_ptr<SILModule> M(
-      new SILModule(mod, options, DC, isWholeModule, makeModuleFragile));
-  SILGenModule SGM(*M, mod, makeModuleFragile);
+      new SILModule(mod, options, DC, isWholeModule));
+  SILGenModule SGM(*M, mod);
 
   if (SF) {
     if (auto *file = dyn_cast<SourceFile>(SF)) {
@@ -1450,16 +1468,14 @@
 std::unique_ptr<SILModule>
 swift::performSILGeneration(ModuleDecl *mod,
                             SILOptions &options,
-                            bool makeModuleFragile,
                             bool wholeModuleCompilation) {
-  return SILModule::constructSIL(mod, options, nullptr, None, makeModuleFragile,
+  return SILModule::constructSIL(mod, options, nullptr, None,
                                  wholeModuleCompilation);
 }
 
 std::unique_ptr<SILModule>
 swift::performSILGeneration(FileUnit &sf, SILOptions &options,
-                            Optional<unsigned> startElem,
-                            bool makeModuleFragile) {
+                            Optional<unsigned> startElem) {
   return SILModule::constructSIL(sf.getParentModule(), options, &sf, startElem,
-                                 makeModuleFragile, false);
+                                 false);
 }
diff --git a/lib/SILGen/SILGen.h b/lib/SILGen/SILGen.h
index 3dab57f..6f1cfa6 100644
--- a/lib/SILGen/SILGen.h
+++ b/lib/SILGen/SILGen.h
@@ -106,7 +106,7 @@
   
   /// If true, all functions and globals are made fragile. Currently only used
   /// for compiling the stdlib.
-  bool makeModuleFragile;
+  bool isMakeModuleFragile() const { return M.getOptions().SILSerializeAll; }
   
   Optional<SILDeclRef> StringToNSStringFn;
   Optional<SILDeclRef> NSStringToStringFn;
@@ -136,7 +136,7 @@
   Optional<ProtocolConformance *> NSErrorConformanceToError;
 
 public:
-  SILGenModule(SILModule &M, ModuleDecl *SM, bool makeModuleFragile);
+  SILGenModule(SILModule &M, ModuleDecl *SM);
 
   ~SILGenModule();
   
@@ -264,7 +264,8 @@
   void emitEnumConstructor(EnumElementDecl *decl);
 
   /// Emits the default argument generator with the given expression.
-  void emitDefaultArgGenerator(SILDeclRef constant, Expr *arg);
+  void emitDefaultArgGenerator(SILDeclRef constant, Expr *arg,
+                               DefaultArgumentKind kind);
 
   /// Emits the stored property initializer for the given pattern.
   void emitStoredPropertyInitialization(PatternBindingDecl *pd, unsigned i);
diff --git a/lib/SILGen/SILGenApply.cpp b/lib/SILGen/SILGenApply.cpp
index 99e4ed1..c05858e 100644
--- a/lib/SILGen/SILGenApply.cpp
+++ b/lib/SILGen/SILGenApply.cpp
@@ -147,6 +147,19 @@
   return false;
 }
 
+static SILValue getOriginalSelfValue(SILValue selfValue) {
+  if (auto *BBI = dyn_cast<BeginBorrowInst>(selfValue))
+    selfValue = BBI->getOperand();
+
+  while (auto *UI = dyn_cast<UpcastInst>(selfValue))
+    selfValue = UI->getOperand();
+
+  if (auto *UTBCI = dyn_cast<UncheckedTrivialBitCastInst>(selfValue))
+    selfValue = UTBCI->getOperand();
+
+  return selfValue;
+}
+
 namespace {
 
 /// Abstractly represents a callee, which may be a constant or function value,
@@ -288,21 +301,21 @@
                                SILDeclRef c,
                                SubstitutionList subs,
                                SILLocation l) {
-    while (auto *UI = dyn_cast<UpcastInst>(selfValue))
-      selfValue = UI->getOperand();
-
+    selfValue = getOriginalSelfValue(selfValue);
     auto formalType = getConstantFormalInterfaceType(SGF, c);
     return Callee(Kind::SuperMethod, SGF, selfValue, c,
                   formalType, formalType, subs, l);
   }
   static Callee forArchetype(SILGenFunction &SGF,
-                             SILValue optOpeningInstruction,
                              CanType protocolSelfType,
                              SILDeclRef c,
                              SubstitutionList subs,
                              SILLocation l) {
+    auto *protocol = cast<ProtocolDecl>(c.getDecl()->getDeclContext());
+    c = c.asForeign(protocol->isObjC());
+
     auto formalType = getConstantFormalInterfaceType(SGF, c);
-    return Callee(Kind::WitnessMethod, SGF, optOpeningInstruction, c,
+    return Callee(Kind::WitnessMethod, SGF, SILValue(), c,
                   formalType, formalType, subs, l);
   }
   static Callee forDynamic(SILGenFunction &SGF, SILValue proto,
@@ -547,150 +560,6 @@
   }
 };
 
-/// Given that we've applied some sort of trivial transform to the
-/// value of the given ManagedValue, enter a cleanup for the result if
-/// the original had a cleanup.
-static ManagedValue maybeEnterCleanupForTransformed(SILGenFunction &SGF,
-                                                    ManagedValue orig,
-                                                    SILValue result,
-                                                    SILLocation loc) {
-  if (orig.hasCleanup()) {
-    orig.forwardCleanup(SGF);
-    return SGF.emitFormalAccessManagedBufferWithCleanup(loc, result);
-  } else {
-    return ManagedValue::forUnmanaged(result);
-  }
-}
-
-namespace {
-
-class ArchetypeCalleeBuilder {
-  SILGenFunction &SGF;
-  ArgumentSource &selfValue;
-  SubstitutionList subs;
-  SILLocation loc;
-  SILParameterInfo selfParam;
-  AbstractFunctionDecl *fd;
-  ProtocolDecl *protocol;
-  SILDeclRef constant;
-
-public:
-  ArchetypeCalleeBuilder(SILGenFunction &SGF,
-                         SILDeclRef inputConstant,
-                         SubstitutionList subs,
-                         SILLocation loc,
-                         ArgumentSource &selfValue)
-      : SGF(SGF), selfValue(selfValue),
-        subs(subs), loc(loc),
-        selfParam(), fd(cast<AbstractFunctionDecl>(inputConstant.getDecl())),
-        protocol(cast<ProtocolDecl>(fd->getDeclContext())),
-        constant(inputConstant.asForeign(protocol->isObjC())) {}
-
-  Callee build() {
-    // Link back to something to create a data dependency if we have
-    // an opened type.
-    SILValue openingSite;
-    auto archetype =
-        getSelfType()->getRValueInstanceType()->castTo<ArchetypeType>();
-    if (archetype->getOpenedExistentialType()) {
-      openingSite = SGF.getArchetypeOpeningSite(archetype);
-    }
-
-    // Then if we need to materialize self into memory, do so.
-    if (shouldMaterializeSelf()) {
-      SILLocation selfLoc = selfValue.getLocation();
-      ManagedValue address = evaluateAddressIntoMemory(selfLoc);
-      setSelfValueToAddress(selfLoc, address);
-    }
-
-    return Callee::forArchetype(SGF, openingSite, getSelfType(), constant,
-                                subs, loc);
-  }
-
-private:
-  CanType getSelfType() const { return selfValue.getSubstRValueType(); }
-
-  SILParameterInfo getSelfParameterInfo() const {
-    if (selfParam == SILParameterInfo()) {
-      auto &Self = const_cast<ArchetypeCalleeBuilder &>(*this);
-      auto constantFnType = SGF.SGM.Types.getConstantFunctionType(constant);
-      Self.selfParam = constantFnType->getSelfParameter();
-    }
-
-    return selfParam;
-  }
-
-  SGFContext getSGFContextForSelf() {
-    if (getSelfParameterInfo().isConsumed())
-      return SGFContext();
-    return SGFContext::AllowGuaranteedPlusZero;
-  }
-
-  void setSelfValueToAddress(SILLocation loc, ManagedValue address) {
-    assert(address.getType().isAddress());
-    assert(address.getType().is<ArchetypeType>());
-    auto formalTy = address.getType().getSwiftRValueType();
-
-    if (getSelfParameterInfo().isIndirectMutating()) {
-      // Be sure not to consume the cleanup for an inout argument.
-      auto selfLV = ManagedValue::forLValue(address.getValue());
-      selfValue = ArgumentSource(loc,
-                    LValue::forAddress(selfLV, None,
-                                       AbstractionPattern(formalTy), formalTy));
-    } else {
-      selfValue = ArgumentSource(loc, RValue(SGF, loc, formalTy, address));
-    }
-  }
-
-  bool shouldMaterializeSelf() const {
-    // Only an instance method of a non-class protocol is ever passed
-    // indirectly.
-    if (!fd->isInstanceMember() ||
-        protocol->requiresClass() ||
-        selfValue.hasLValueType() ||
-        !cast<ArchetypeType>(getSelfType())->requiresClass())
-      return false;
-
-    assert(SGF.silConv.useLoweredAddresses() ==
-           SGF.silConv.isSILIndirect(getSelfParameterInfo()));
-    return SGF.silConv.useLoweredAddresses();
-  }
-
-  // If we're calling a member of a non-class-constrained protocol,
-  // but our archetype refines it to be class-bound, then
-  // we have to materialize the value in order to pass it indirectly.
-  ManagedValue evaluateAddressIntoMemory(SILLocation selfLoc) {
-    // Do so at +0 if we can.
-    ManagedValue ref =
-        std::move(selfValue).getAsSingleValue(SGF, getSGFContextForSelf());
-
-    // If we're already in memory for some reason, great.
-    if (ref.getType().isAddress())
-      return ref;
-
-    // Store the reference into a temporary.
-    SILValue temp =
-        SGF.emitTemporaryAllocation(selfLoc, ref.getValue()->getType());
-    SGF.B.emitStoreValueOperation(selfLoc, ref.getValue(), temp,
-                                  StoreOwnershipQualifier::Init);
-
-    // If we had a cleanup, create a cleanup at the new address.
-    return maybeEnterCleanupForTransformed(SGF, ref, temp, selfLoc);
-  }
-};
-
-} // end anonymous namespace
-
-static Callee prepareArchetypeCallee(SILGenFunction &SGF,
-                                     SILDeclRef constant,
-                                     SubstitutionList subs,
-                                     SILLocation loc,
-                                     ArgumentSource &selfValue) {
-  // Construct an archetype call.
-  ArchetypeCalleeBuilder Builder{SGF, constant, subs, loc, selfValue};
-  return Builder.build();
-}
-
 /// For ObjC init methods, we generate a shared-linkage Swift allocating entry
 /// point that does the [[T alloc] init] dance. We want to use this native
 /// thunk where we expect to be calling an allocating entry point for an ObjC
@@ -896,7 +765,9 @@
         SILDeclRef constant = SILDeclRef(afd, kind);
 
         // Prepare the callee.  This can modify both selfValue and subs.
-        Callee theCallee = prepareArchetypeCallee(SGF, constant, subs, e, selfValue);
+        Callee theCallee = Callee::forArchetype(SGF,
+                                                selfValue.getSubstRValueType(),
+                                                constant, subs, e);
         AssumedPlusZeroSelf = selfValue.isRValue()
           && selfValue.forceAndPeekRValue(SGF).peekIsPlusZeroRValueOrTrivial();
 
@@ -997,13 +868,17 @@
 
     auto afd = dyn_cast<AbstractFunctionDecl>(e->getDecl());
 
+    CaptureInfo captureInfo;
+
     // Otherwise, we have a statically-dispatched call.
-    SubstitutionList subs;
-    if (e->getDeclRef().isSpecialized() &&
-        (!afd ||
-         !afd->getDeclContext()->isLocalContext() ||
-         afd->getCaptureInfo().hasGenericParamCaptures()))
-      subs = e->getDeclRef().getSubstitutions();
+    SubstitutionList subs = e->getDeclRef().getSubstitutions();
+
+    if (afd) {
+      captureInfo = SGF.SGM.Types.getLoweredLocalCaptures(afd);
+      if (afd->getDeclContext()->isLocalContext() &&
+          !captureInfo.hasGenericParamCaptures())
+        subs = SubstitutionList();
+    }
 
     // Enum case constructor references are open-coded.
     if (isa<EnumElementDecl>(e->getDecl()))
@@ -1013,7 +888,7 @@
     
     // If the decl ref requires captures, emit the capture params.
     if (afd) {
-      if (SGF.SGM.M.Types.hasLoweredLocalCaptures(afd)) {
+      if (!captureInfo.getCaptures().empty()) {
         SmallVector<ManagedValue, 4> captures;
         SGF.emitCaptures(e, afd, CaptureEmission::ImmediateApplication,
                          captures);
@@ -1302,12 +1177,10 @@
       auto constant = SILDeclRef(ctorRef->getDecl(),
                              useAllocatingCtor
                                ? SILDeclRef::Kind::Allocator
-                                 : SILDeclRef::Kind::Initializer)
-        .asForeign(requiresForeignEntryPoint(ctorRef->getDecl()));
-      setCallee(Callee::forArchetype(SGF, SILValue(),
+                               : SILDeclRef::Kind::Initializer);
+      setCallee(Callee::forArchetype(SGF,
                                      self.getType().getSwiftRValueType(),
-                                     constant, subs,
-                                     expr));
+                                     constant, subs, expr));
     } else if (getMethodDispatch(ctorRef->getDecl())
                  == MethodDispatch::Class) {
       // Dynamic dispatch to the initializer.
@@ -2700,7 +2573,7 @@
 
   bool isUnmaterializableTupleType(CanType type) {
     if (auto tuple = dyn_cast<TupleType>(type))
-      if (!tuple->isMaterializable())
+      if (tuple->hasInOutElement())
         return true;
     return false;
   }
@@ -3178,7 +3051,8 @@
     auto doBridge = [&](SILGenFunction &SGF,
                         SILLocation loc,
                         ManagedValue emittedArg,
-                        SILType loweredResultTy) -> ManagedValue {
+                        SILType loweredResultTy,
+                        SGFContext context) -> ManagedValue {
       // If the argument is not already a class instance, bridge it.
       if (!emittedArg.getType().getSwiftRValueType()->mayHaveSuperclass()
           && !emittedArg.getType().isClassExistentialType()) {
@@ -3221,14 +3095,15 @@
     } else if (!nativeIsOptional && bridgedIsOptional) {
       auto paramObjTy = SGF.getSILType(param).getAnyOptionalObjectType();
       auto transformed = doBridge(SGF, argExpr, emittedArg,
-                                  paramObjTy);
+                                  paramObjTy, SGFContext());
       // Inject into optional.
       auto opt = SGF.B.createEnum(argExpr, transformed.getValue(),
                                   SGF.getASTContext().getOptionalSomeDecl(),
                                   SGF.getSILType(param));
       return ManagedValue(opt, transformed.getCleanup());
     } else {
-      return doBridge(SGF, argExpr, emittedArg, SGF.getSILType(param));
+      return doBridge(SGF, argExpr, emittedArg, SGF.getSILType(param),
+                      SGFContext());
     }
   }
   
@@ -4137,12 +4012,10 @@
 
       // Emit the first level of call.
       CanFunctionType formalType;
-      Optional<AbstractionPattern> origFormalType;
-      CanSILFunctionType substFnType;
       Optional<ForeignErrorConvention> foreignError;
       ImportAsMemberStatus foreignSelf;
       RValue result =
-          applyFirstLevelCallee(formalType, origFormalType, substFnType,
+          applyFirstLevelCallee(formalType,
                                 foreignError, foreignSelf, uncurryLevel, C);
 
       // End of the initial writeback scope.
@@ -4173,7 +4046,7 @@
 
     void emitArgumentsForNormalApply(
         CanFunctionType &formalType, AbstractionPattern &origFormalType,
-        CanSILFunctionType &substFnType,
+        CanSILFunctionType substFnType,
         Optional<ForeignErrorConvention> &foreignError,
         ImportAsMemberStatus &foreignSelf, ApplyOptions &initialOptions,
         SmallVectorImpl<ManagedValue> &uncurriedArgs,
@@ -4181,8 +4054,6 @@
 
     RValue
     applySpecializedEmitter(CanFunctionType &formalType,
-                            Optional<AbstractionPattern> &origFormalType,
-                            CanSILFunctionType &substFnType,
                             Optional<ForeignErrorConvention> &foreignError,
                             ImportAsMemberStatus &foreignSelf,
                             SpecializedEmitter &specializedEmitter,
@@ -4190,29 +4061,21 @@
 
     RValue applyPartiallyAppliedSuperMethod(
         CanFunctionType &formalType,
-        Optional<AbstractionPattern> &origFormalType,
-        CanSILFunctionType &substFnType,
         Optional<ForeignErrorConvention> &foreignError,
         ImportAsMemberStatus &foreignSelf, unsigned uncurryLevel, SGFContext C);
 
     RValue
     applyEnumElementConstructor(CanFunctionType &formalType,
-                                Optional<AbstractionPattern> &origFormalType,
-                                CanSILFunctionType &substFnType,
                                 Optional<ForeignErrorConvention> &foreignError,
                                 ImportAsMemberStatus &foreignSelf,
                                 unsigned uncurryLevel, SGFContext C);
 
     RValue applyNormalCall(CanFunctionType &formalType,
-                           Optional<AbstractionPattern> &origFormalType,
-                           CanSILFunctionType &substFnType,
                            Optional<ForeignErrorConvention> &foreignError,
                            ImportAsMemberStatus &foreignSelf,
                            unsigned uncurryLevel, SGFContext C);
 
     RValue applyFirstLevelCallee(CanFunctionType &formalType,
-                                 Optional<AbstractionPattern> &origFormalType,
-                                 CanSILFunctionType &substFnType,
                                  Optional<ForeignErrorConvention> &foreignError,
                                  ImportAsMemberStatus &foreignSelf,
                                  unsigned uncurryLevel, SGFContext C);
@@ -4235,37 +4098,34 @@
 } // end anonymous namespace
 
 RValue CallEmission::applyFirstLevelCallee(
-    CanFunctionType &formalType, Optional<AbstractionPattern> &origFormalType,
-    CanSILFunctionType &substFnType,
+    CanFunctionType &formalType,
     Optional<ForeignErrorConvention> &foreignError,
     ImportAsMemberStatus &foreignSelf, unsigned uncurryLevel, SGFContext C) {
 
   // Check for a specialized emitter.
   if (auto emitter = callee.getSpecializedEmitter(SGF.SGM, uncurryLevel)) {
-    return applySpecializedEmitter(formalType, origFormalType, substFnType,
+    return applySpecializedEmitter(formalType,
                                    foreignError, foreignSelf,
                                    emitter.getValue(), uncurryLevel, C);
   }
 
   if (isPartiallyAppliedSuperMethod(uncurryLevel)) {
-    return applyPartiallyAppliedSuperMethod(formalType, origFormalType,
-                                            substFnType, foreignError,
+    return applyPartiallyAppliedSuperMethod(formalType, foreignError,
                                             foreignSelf, uncurryLevel, C);
   }
 
   if (isEnumElementConstructor()) {
-    return applyEnumElementConstructor(formalType, origFormalType, substFnType,
+    return applyEnumElementConstructor(formalType,
                                        foreignError, foreignSelf, uncurryLevel,
                                        C);
   }
 
-  return applyNormalCall(formalType, origFormalType, substFnType, foreignError,
+  return applyNormalCall(formalType, foreignError,
                          foreignSelf, uncurryLevel, C);
 }
 
 RValue CallEmission::applyNormalCall(
-    CanFunctionType &formalType, Optional<AbstractionPattern> &origFormalType,
-    CanSILFunctionType &substFnType,
+    CanFunctionType &formalType,
     Optional<ForeignErrorConvention> &foreignError,
     ImportAsMemberStatus &foreignSelf, unsigned uncurryLevel, SGFContext C) {
   // We use the context emit-into initialization only for the
@@ -4275,14 +4135,16 @@
   ApplyOptions initialOptions = ApplyOptions::None;
 
   formalType = callee.getSubstFormalType();
-  origFormalType = callee.getOrigFormalType();
+  auto origFormalType = callee.getOrigFormalType();
+
+  CanSILFunctionType substFnType;
 
   // Get the callee type information.
   std::tie(mv, substFnType, foreignError, foreignSelf, initialOptions) =
       callee.getAtUncurryLevel(SGF, uncurryLevel);
 
   CalleeTypeInfo calleeTypeInfo(
-      substFnType, getUncurriedOrigFormalType(*origFormalType),
+      substFnType, getUncurriedOrigFormalType(origFormalType),
       uncurriedSites.back().getSubstResultType(), foreignError);
   ResultPlanPtr resultPlan = ResultPlanBuilder::computeResultPlan(
       SGF, calleeTypeInfo, uncurriedSites.back().Loc, uncurriedContext);
@@ -4306,7 +4168,7 @@
   SmallVector<ManagedValue, 4> uncurriedArgs;
   Optional<SILLocation> uncurriedLoc;
   CanFunctionType formalApplyType;
-  emitArgumentsForNormalApply(formalType, origFormalType.getValue(),
+  emitArgumentsForNormalApply(formalType, origFormalType,
                               substFnType, foreignError, foreignSelf,
                               initialOptions, uncurriedArgs, uncurriedLoc,
                               formalApplyType);
@@ -4318,8 +4180,7 @@
 }
 
 RValue CallEmission::applyEnumElementConstructor(
-    CanFunctionType &formalType, Optional<AbstractionPattern> &origFormalType,
-    CanSILFunctionType &substFnType,
+    CanFunctionType &formalType,
     Optional<ForeignErrorConvention> &foreignError,
     ImportAsMemberStatus &foreignSelf, unsigned uncurryLevel, SGFContext C) {
   assert(!assumedPlusZeroSelf);
@@ -4333,9 +4194,9 @@
   // pattern, to ensure that function types in payloads are re-abstracted
   // correctly.
   formalType = callee.getSubstFormalType();
-  origFormalType = callee.getOrigFormalType();
-  substFnType = SGF.getSILFunctionType(origFormalType.getValue(), formalType,
-                                       uncurryLevel);
+  auto origFormalType = callee.getOrigFormalType();
+  auto substFnType = SGF.getSILFunctionType(origFormalType, formalType,
+                                            uncurryLevel);
 
   // Now that we know the substFnType, check if we assumed that we were
   // passing self at +0. If we did and self is not actually passed at +0,
@@ -4360,7 +4221,7 @@
   CanType formalResultType = formalType.getResult();
 
   // Ignore metatype argument
-  claimNextParamClause(origFormalType.getValue());
+  claimNextParamClause(origFormalType);
   claimNextParamClause(formalType);
   std::move(uncurriedSites[0]).forward().getAsSingleValue(SGF);
 
@@ -4369,7 +4230,7 @@
   if (element->hasAssociatedValues()) {
     assert(uncurriedSites.size() == 2);
     formalResultType = formalType.getResult();
-    claimNextParamClause(origFormalType.getValue());
+    claimNextParamClause(origFormalType);
     claimNextParamClause(formalType);
     payload = std::move(uncurriedSites[1]).forward();
   } else {
@@ -4384,8 +4245,7 @@
 }
 
 RValue CallEmission::applyPartiallyAppliedSuperMethod(
-    CanFunctionType &formalType, Optional<AbstractionPattern> &origFormalType,
-    CanSILFunctionType &substFnType,
+    CanFunctionType &formalType,
     Optional<ForeignErrorConvention> &foreignError,
     ImportAsMemberStatus &foreignSelf, unsigned uncurryLevel, SGFContext C) {
 
@@ -4394,9 +4254,9 @@
   // We want to emit the arguments as fully-substituted values
   // because that's what the partially applied super method expects;
   formalType = callee.getSubstFormalType();
-  origFormalType = AbstractionPattern(formalType);
-  substFnType = SGF.getSILFunctionType(origFormalType.getValue(), formalType,
-                                       uncurryLevel);
+  auto origFormalType = AbstractionPattern(formalType);
+  auto substFnType = SGF.getSILFunctionType(origFormalType, formalType,
+                                            uncurryLevel);
 
   // Now that we know the substFnType, check if we assumed that we were
   // passing self at +0. If we did and self is not actually passed at +0,
@@ -4416,7 +4276,7 @@
   SmallVector<ManagedValue, 4> uncurriedArgs;
   Optional<SILLocation> uncurriedLoc;
   CanFunctionType formalApplyType;
-  emitArgumentsForNormalApply(formalType, origFormalType.getValue(),
+  emitArgumentsForNormalApply(formalType, origFormalType,
                               substFnType, foreignError, foreignSelf,
                               initialOptions, uncurriedArgs, uncurriedLoc,
                               formalApplyType);
@@ -4430,12 +4290,8 @@
   auto loc = uncurriedLoc.getValue();
   auto subs = callee.getSubstitutions();
   auto upcastedSelf = uncurriedArgs.back();
-  SILValue upcastedSelfValue = upcastedSelf.getValue();
-  // Support stripping off a borrow.
-  if (auto *borrowedSelf = dyn_cast<BeginBorrowInst>(upcastedSelfValue)) {
-    upcastedSelfValue = borrowedSelf->getOperand();
-  }
-  SILValue self = cast<UpcastInst>(upcastedSelfValue)->getOperand();
+  auto upcastedSelfValue = upcastedSelf.getValue();
+  auto self = getOriginalSelfValue(upcastedSelfValue);
   auto constantInfo = SGF.getConstantInfo(callee.getMethodName());
   auto functionTy = constantInfo.getSILType();
   SILValue superMethodVal =
@@ -4461,8 +4317,7 @@
 }
 
 RValue CallEmission::applySpecializedEmitter(
-    CanFunctionType &formalType, Optional<AbstractionPattern> &origFormalType,
-    CanSILFunctionType &substFnType,
+    CanFunctionType &formalType,
     Optional<ForeignErrorConvention> &foreignError,
     ImportAsMemberStatus &foreignSelf, SpecializedEmitter &specializedEmitter,
     unsigned uncurryLevel, SGFContext C) {
@@ -4478,9 +4333,9 @@
   // fully-substituted values because that's what the specialized emitters
   // expect.
   formalType = callee.getSubstFormalType();
-  origFormalType = AbstractionPattern(formalType);
-  substFnType = SGF.getSILFunctionType(origFormalType.getValue(), formalType,
-                                       uncurryLevel);
+  auto origFormalType = AbstractionPattern(formalType);
+  auto substFnType = SGF.getSILFunctionType(origFormalType, formalType,
+                                            uncurryLevel);
 
   // Now that we know the substFnType, check if we assumed that we were
   // passing self at +0. If we did and self is not actually passed at +0,
@@ -4505,7 +4360,7 @@
     assert(!formalApplyType->getExtInfo().throws());
     CanType formalResultType = formalApplyType.getResult();
     SILLocation uncurriedLoc = uncurriedSites[0].Loc;
-    claimNextParamClause(origFormalType.getValue());
+    claimNextParamClause(origFormalType);
     claimNextParamClause(formalType);
 
     // We should be able to enforce that these arguments are
@@ -4513,7 +4368,7 @@
     Expr *argument = std::move(uncurriedSites[0]).forward().asKnownExpr();
     ManagedValue resultMV =
         emitter(SGF, uncurriedLoc, callee.getSubstitutions(), argument,
-                formalApplyType, uncurriedContext);
+                uncurriedContext);
     return RValue(SGF, uncurriedLoc, formalResultType, resultMV);
   }
 
@@ -4521,7 +4376,7 @@
   SmallVector<ManagedValue, 4> uncurriedArgs;
   Optional<SILLocation> uncurriedLoc;
   CanFunctionType formalApplyType;
-  emitArgumentsForNormalApply(formalType, origFormalType.getValue(),
+  emitArgumentsForNormalApply(formalType, origFormalType,
                               substFnType, foreignError, foreignSelf,
                               initialOptions, uncurriedArgs, uncurriedLoc,
                               formalApplyType);
@@ -4532,7 +4387,7 @@
     return RValue(SGF, *uncurriedLoc, formalApplyType.getResult(),
                   emitter(SGF, uncurriedLoc.getValue(),
                           callee.getSubstitutions(), uncurriedArgs,
-                          formalApplyType, uncurriedContext));
+                          uncurriedContext));
   }
 
   // Builtins.
@@ -4552,7 +4407,7 @@
 
 void CallEmission::emitArgumentsForNormalApply(
     CanFunctionType &formalType, AbstractionPattern &origFormalType,
-    CanSILFunctionType &substFnType,
+    CanSILFunctionType substFnType,
     Optional<ForeignErrorConvention> &foreignError,
     ImportAsMemberStatus &foreignSelf, ApplyOptions &initialOptions,
     SmallVectorImpl<ManagedValue> &uncurriedArgs,
@@ -4735,6 +4590,15 @@
   if (auto *genericSig = fn->getGenericSignature())
     genericSig->getSubstitutions(subMap, subs);
 
+  return emitApplyOfLibraryIntrinsic(loc, fn, subs, args, ctx);
+}
+
+RValue
+SILGenFunction::emitApplyOfLibraryIntrinsic(SILLocation loc,
+                                            FuncDecl *fn,
+                                            const SubstitutionList &subs,
+                                            ArrayRef<ManagedValue> args,
+                                            SGFContext ctx) {
   auto callee = Callee::forDirect(*this, SILDeclRef(fn), subs, loc);
 
   auto origFormalType = callee.getOrigFormalType();
@@ -4827,11 +4691,9 @@
   // Form the callee.
   Optional<Callee> callee;
   if (isa<ProtocolDecl>(ctor->getDeclContext())) {
-    ArgumentSource selfSource(loc, 
-                              RValue(SGF, loc,
-                                     selfMetaVal.getType().getSwiftRValueType(),
-                                     selfMetaVal));
-    callee.emplace(prepareArchetypeCallee(SGF, initRef, subs, loc, selfSource));
+    callee.emplace(Callee::forArchetype(SGF,
+                                        selfMetaVal.getType().getSwiftRValueType(),
+                                        initRef, subs, loc));
   } else {
     callee.emplace(Callee::forDirect(SGF, initRef, subs, loc));
   }
@@ -4900,14 +4762,7 @@
     init = stringLiteral->getInitializer();
   } else {
     ASTContext &ctx = getASTContext();
-    SourceLoc loc;
-  
-    // If "overrideLocationForMagicIdentifiers" is set, then we use it as the
-    // location point for these magic identifiers.
-    if (overrideLocationForMagicIdentifiers)
-      loc = overrideLocationForMagicIdentifiers.getValue();
-    else
-      loc = literal->getStartLoc();
+    SourceLoc loc = literal->getStartLoc();
 
     auto magicLiteral = cast<MagicIdentifierLiteralExpr>(literal);
     switch (magicLiteral->getKind()) {
@@ -5049,12 +4904,23 @@
                                          SubstitutionList subs) {
   auto *decl = cast<AbstractFunctionDecl>(constant.getDecl());
 
+  // The accessor might be a local function that does not capture any
+  // generic parameters, in which case we don't want to pass in any
+  // substitutions.
+  auto captureInfo = SGF.SGM.Types.getLoweredLocalCaptures(decl);
+  if (decl->getDeclContext()->isLocalContext() &&
+      !captureInfo.hasGenericParamCaptures()) {
+    subs = SubstitutionList();
+  }
+
   // If this is a method in a protocol, generate it as a protocol call.
   if (isa<ProtocolDecl>(decl->getDeclContext())) {
     assert(!isDirectUse && "direct use of protocol accessor?");
     assert(!isSuper && "super call to protocol method?");
 
-    return prepareArchetypeCallee(SGF, constant, subs, loc, selfValue);
+    return Callee::forArchetype(SGF,
+                                selfValue.getSubstRValueType(),
+                                constant, subs, loc);
   }
 
   bool isClassDispatch = false;
@@ -5349,7 +5215,7 @@
     accessType = cast<AnyFunctionType>(accessType.getResult());
   }
   // Index or () if none.
-  if (!subscripts)
+  if (subscripts.isNull())
     subscripts = emitEmptyTupleRValue(loc, SGFContext());
 
   emission.addCallSite(loc, ArgumentSource(loc, std::move(subscripts)),
@@ -5387,7 +5253,7 @@
   }
 
   // (value)  or (value, indices)
-  if (subscripts) {
+  if (!subscripts.isNull()) {
     // If we have a value and index list, create a new rvalue to represent the
     // both of them together.  The value goes first.
     SmallVector<ManagedValue, 4> Elts;
@@ -5446,7 +5312,7 @@
 
     elts.push_back(ManagedValue::forLValue(callbackStorage));
 
-    if (subscripts) {
+    if (!subscripts.isNull()) {
       std::move(subscripts).getAll(elts);
     }
     return RValue::withPreExplodedElements(elts, accessType.getInput());
@@ -5518,7 +5384,7 @@
     accessType = cast<AnyFunctionType>(accessType.getResult());
   }
   // Index or () if none.
-  if (!subscripts)
+  if (subscripts.isNull())
     subscripts = emitEmptyTupleRValue(loc, SGFContext());
 
   emission.addCallSite(loc, ArgumentSource(loc, std::move(subscripts)),
diff --git a/lib/SILGen/SILGenBridging.cpp b/lib/SILGen/SILGenBridging.cpp
index ea4ac22..20fb6f3 100644
--- a/lib/SILGen/SILGenBridging.cpp
+++ b/lib/SILGen/SILGenBridging.cpp
@@ -17,6 +17,7 @@
 #include "SILGenFunction.h"
 #include "Scope.h"
 #include "swift/AST/DiagnosticsSIL.h"
+#include "swift/AST/ExistentialLayout.h"
 #include "swift/AST/ForeignErrorConvention.h"
 #include "swift/AST/GenericEnvironment.h"
 #include "swift/AST/ParameterList.h"
@@ -28,6 +29,58 @@
 using namespace swift;
 using namespace Lowering;
 
+/// Convert to the given formal type, assuming that the lowered type of
+/// the source type is the same as its formal type.  This is a reasonable
+/// assumption for a wide variety of types.
+static ManagedValue emitUnabstractedCast(SILGenFunction &SGF, SILLocation loc,
+                                         ManagedValue value,
+                                         CanType targetFormalType) {
+  if (value.getType().getSwiftRValueType() == targetFormalType)
+    return value;
+
+  CanType sourceFormalType = value.getType().getSwiftRValueType();
+  return SGF.emitTransformedValue(loc, value,
+                                  AbstractionPattern(sourceFormalType),
+                                  sourceFormalType,
+                                  AbstractionPattern(targetFormalType),
+                                  targetFormalType);
+}
+
+static bool shouldBridgeThroughError(SILGenModule &SGM, CanType type,
+                                     CanType targetType) {
+  // Never use this logic if the target type is AnyObject.
+  if (targetType->isEqual(SGM.getASTContext().getAnyObjectType()))
+    return false;
+
+  auto errorProtocol = SGM.getASTContext().getErrorDecl();
+  if (!errorProtocol) return false;
+
+  // Existential types are convertible to Error if they are, or imply, Error.
+  if (type.isExistentialType()) {
+    auto layout = type->getExistentialLayout();
+    for (auto proto : layout.getProtocols()) {
+      if (proto->getDecl() == errorProtocol ||
+          proto->getDecl()->inheritsFrom(errorProtocol)) {
+        return true;
+      }
+    }
+
+    // They're also convertible to Error if they have a class bound that
+    // conforms to Error.
+    if (auto cls = layout.superclass) {
+      type = cls->getCanonicalType();
+
+    // Otherwise, they are not convertible to Error.
+    } else {
+      return false;
+    }
+  }
+
+  auto optConf = SGM.SwiftModule->lookupConformance(type, errorProtocol,
+                                                    /*lazy resolver*/ nullptr);
+  return optConf.hasValue();
+}
+
 /// Bridge the given Swift value to its corresponding Objective-C
 /// object, using the appropriate witness for the
 /// _ObjectiveCBridgeable._bridgeToObjectiveC requirement.
@@ -35,6 +88,7 @@
 emitBridgeNativeToObjectiveC(SILGenFunction &SGF,
                              SILLocation loc,
                              ManagedValue swiftValue,
+                             SILType bridgedTy,
                              ProtocolConformance *conformance) {
   // Dig out the nominal type we're bridging from.
   Type swiftValueType = swiftValue.getType().getSwiftRValueType();
@@ -101,7 +155,14 @@
   SILValue bridgedValue =
       SGF.B.createApply(loc, witnessRef, witnessFnTy, resultTy, subs,
                         swiftValue.borrow(SGF, loc).getValue());
-  return SGF.emitManagedRValueWithCleanup(bridgedValue);
+
+  auto bridgedMV = SGF.emitManagedRValueWithCleanup(bridgedValue);
+
+  // The Objective-C value doesn't necessarily match the desired type.
+  bridgedMV = emitUnabstractedCast(SGF, loc, bridgedMV,
+                                   bridgedTy.getSwiftRValueType());
+
+  return bridgedMV;
 }
 
 /// Bridge the given Objective-C object to its corresponding Swift
@@ -117,58 +178,57 @@
     SGF.SGM.getUnconditionallyBridgeFromObjectiveCRequirement(loc);
   if (!requirement) return None;
 
+  // Find the _ObjectiveCType requirement.
+  auto objcTypeRequirement = SGF.SGM.getBridgedObjectiveCTypeRequirement(loc);
+  if (!objcTypeRequirement) return None;
+
   // Retrieve the _unconditionallyBridgeFromObjectiveC witness.
-  auto witness = conformance->getWitnessDecl(requirement, nullptr);
+  auto witness = conformance->getWitnessDeclRef(requirement, nullptr);
   assert(witness);
 
+  // Retrieve the _ObjectiveCType witness.
+  auto objcType = conformance->getTypeWitness(objcTypeRequirement, nullptr);
+  assert(objcType);
+
   // Create a reference to the witness.
-  SILDeclRef witnessConstant(witness);
+  SILDeclRef witnessConstant(witness.getDecl());
   auto witnessRef = SGF.emitGlobalFunctionRef(loc, witnessConstant);
 
   // Determine the substitutions.
   auto witnessFnTy = witnessRef->getType().castTo<SILFunctionType>();
 
-  Type swiftValueType = conformance->getType();
-  auto *decl = swiftValueType->getAnyNominal();
-  auto *genericSig = decl->getGenericSignature();
-  auto typeSubMap = swiftValueType->getContextSubstitutionMap(
-    SGF.SGM.SwiftModule, decl);
+  CanType swiftValueType = conformance->getType()->getCanonicalType();
+  auto genericSig = witnessFnTy->getGenericSignature();
+  SubstitutionMap typeSubMap;
+  if (genericSig)
+    typeSubMap = genericSig->getSubstitutionMap(witness.getSubstitutions());
 
   // Substitute into the witness function type.
   witnessFnTy = witnessFnTy->substGenericArgs(SGF.SGM.M, typeSubMap);
 
-  // If the Objective-C value isn't optional, wrap it in an optional.
-  Type objcValueType = objcValue.getType().getSwiftRValueType();
-  if (!objcValueType->getOptionalObjectType()) {
-    SILType loweredOptTy =
-        SGF.SGM.getLoweredType(OptionalType::get(objcValueType));
-    auto *someDecl = SGF.getASTContext().getOptionalSomeDecl();
-    auto *enumInst = SGF.B.createEnum(loc, objcValue.getValue(), someDecl,
-                                      loweredOptTy);
-    objcValue = ManagedValue(enumInst, objcValue.getCleanup());
-  }
+  // The witness takes an _ObjectiveCType?, so convert to that type.
+  CanType desiredValueType = OptionalType::get(objcType)->getCanonicalType();
+  objcValue = emitUnabstractedCast(SGF, loc, objcValue, desiredValueType);
 
   // Call the witness.
-  Type metatype = MetatypeType::get(swiftValueType);
-  SILValue metatypeValue = SGF.B.createMetatype(loc,
-                                                SGF.getLoweredType(metatype));
+  auto metatypeParam = witnessFnTy->getParameters()[1];
+  assert(isa<MetatypeType>(metatypeParam.getType()) &&
+         cast<MetatypeType>(metatypeParam.getType()).getInstanceType()
+           == swiftValueType);
+  SILValue metatypeValue =
+    SGF.B.createMetatype(loc, metatypeParam.getSILStorageType());
 
   auto witnessCI = SGF.getConstantInfo(witnessConstant);
   CanType formalResultTy = witnessCI.LoweredInterfaceType.getResult();
 
-  SmallVector<Substitution, 4> subs;
-  if (genericSig)
-    genericSig->getSubstitutions(typeSubMap, subs);
+  auto subs = witness.getSubstitutions();
 
   // Set up the generic signature, since formalResultTy is an interface type.
-  CanGenericSignature canGenericSig;
-  if (genericSig)
-    canGenericSig = genericSig->getCanonicalSignature();
-  GenericContextScope genericContextScope(SGF.SGM.Types,
-                                          canGenericSig);
+  GenericContextScope genericContextScope(SGF.SGM.Types, genericSig);
   CalleeTypeInfo calleeTypeInfo(
-      witnessFnTy, AbstractionPattern(canGenericSig, formalResultTy),
-      swiftValueType->getCanonicalType());
+      witnessFnTy,
+      AbstractionPattern(genericSig, formalResultTy),
+      swiftValueType);
   SGFContext context;
   ResultPlanPtr resultPlan =
       ResultPlanBuilder::computeResultPlan(SGF, calleeTypeInfo, loc, context);
@@ -430,7 +490,8 @@
 static ManagedValue emitNativeToCBridgedNonoptionalValue(SILGenFunction &SGF,
                                                          SILLocation loc,
                                                          ManagedValue v,
-                                                         SILType bridgedTy) {
+                                                         SILType bridgedTy,
+                                                         SGFContext C) {
   CanType loweredBridgedTy = bridgedTy.getSwiftRValueType();
   CanType loweredNativeTy = v.getType().getSwiftRValueType();
   if (loweredNativeTy == loweredBridgedTy)
@@ -471,7 +532,8 @@
   // _bridgeToObjectiveC witness.
   if (auto conformance =
           SGF.SGM.getConformanceToObjectiveCBridgeable(loc, loweredNativeTy)) {
-    if (auto result = emitBridgeNativeToObjectiveC(SGF, loc, v, conformance))
+    if (auto result = emitBridgeNativeToObjectiveC(SGF, loc, v, bridgedTy,
+                                                   conformance))
       return *result;
 
     assert(SGF.SGM.getASTContext().Diags.hadAnyError() &&
@@ -479,9 +541,14 @@
     return SGF.emitUndef(loc, bridgedTy);
   }
 
-  // Bridge Error to NSError.
-  if (loweredBridgedTy == SGF.SGM.Types.getNSErrorType()) {
-    return SGF.emitNativeToBridgedError(loc, v, loweredBridgedTy);
+  // Bridge Error, or types that conform to it, to NSError.
+  if (shouldBridgeThroughError(SGF.SGM, loweredNativeTy, loweredBridgedTy)) {
+    auto errorTy = SGF.SGM.Types.getNSErrorType();
+    auto error = SGF.emitNativeToBridgedError(loc, v, errorTy);
+    if (errorTy != loweredBridgedTy) {
+      error = emitUnabstractedCast(SGF, loc, error, loweredBridgedTy);
+    }
+    return error;
   }
 
   // Fall back to dynamic Any-to-id bridging.
@@ -517,9 +584,8 @@
       v.forwardInto(SGF, loc, tmp);
       v = SGF.emitManagedBufferWithCleanup(tmp);
     }
-    return SGF.emitApplyOfLibraryIntrinsic(loc, bridgeAnything, subMap, v,
-                                           SGFContext())
-      .getAsSingleValue(SGF, loc);
+    return SGF.emitApplyOfLibraryIntrinsic(loc, bridgeAnything, subMap, v, C)
+              .getAsSingleValue(SGF, loc);
   }
   
   // Shouldn't get here unless the standard library is busted.
@@ -529,7 +595,8 @@
 static ManagedValue emitNativeToCBridgedValue(SILGenFunction &SGF,
                                               SILLocation loc,
                                               ManagedValue v,
-                                              SILType bridgedTy) {
+                                              SILType bridgedTy,
+                                              SGFContext C = SGFContext()) {
   CanType loweredBridgedTy = bridgedTy.getSwiftRValueType();
   CanType loweredNativeTy = v.getType().getSwiftRValueType();
   if (loweredNativeTy == loweredBridgedTy)
@@ -538,32 +605,35 @@
   if (loweredBridgedTy.getAnyOptionalObjectType()
       && loweredNativeTy.getAnyOptionalObjectType()) {
     return SGF.emitOptionalToOptional(loc, v, bridgedTy,
-                                      emitNativeToCBridgedValue);
+                                      emitNativeToCBridgedValue, C);
   }
   
   // Check if we need to wrap the bridged result in an optional.
   if (SILType bridgedObjectType = bridgedTy.getAnyOptionalObjectType()) {
     auto bridgedPayload
-      = emitNativeToCBridgedNonoptionalValue(SGF, loc, v, bridgedObjectType);
+      = emitNativeToCBridgedNonoptionalValue(SGF, loc, v, bridgedObjectType,
+                                             SGFContext());
     
     return SGF.getOptionalSomeValue(loc, bridgedPayload,
                                     SGF.getTypeLowering(bridgedTy));
   }
   
-  return emitNativeToCBridgedNonoptionalValue(SGF, loc, v, bridgedTy);
+  return emitNativeToCBridgedNonoptionalValue(SGF, loc, v, bridgedTy, C);
 }
 
 ManagedValue SILGenFunction::emitNativeToBridgedValue(SILLocation loc,
                                           ManagedValue v,
                                           SILFunctionTypeRepresentation destRep,
-                                          CanType loweredBridgedTy){
+                                          CanType loweredBridgedTy,
+                                          SGFContext C) {
   switch (getSILFunctionLanguage(destRep)) {
   case SILFunctionLanguage::Swift:
     // No additional bridging needed for native functions.
     return v;
   case SILFunctionLanguage::C:
     return emitNativeToCBridgedValue(*this, loc, v,
-                           SILType::getPrimitiveObjectType(loweredBridgedTy));
+                           SILType::getPrimitiveObjectType(loweredBridgedTy),
+                                     C);
   }
   llvm_unreachable("bad CC");
 }
@@ -694,7 +764,8 @@
 static ManagedValue emitCBridgedToNativeValue(SILGenFunction &SGF,
                                               SILLocation loc,
                                               ManagedValue v,
-                                              SILType nativeTy) {
+                                              SILType nativeTy,
+                                              SGFContext C) {
   CanType loweredNativeTy = nativeTy.getSwiftRValueType();
   CanType loweredBridgedTy = v.getType().getSwiftRValueType();
   if (loweredNativeTy == loweredBridgedTy)
@@ -702,7 +773,7 @@
 
   if (loweredNativeTy.getAnyOptionalObjectType()) {
     return SGF.emitOptionalToOptional(loc, v, nativeTy,
-                                      emitCBridgedToNativeValue);
+                                      emitCBridgedToNativeValue, C);
   }
 
   // Bridge Bool to ObjCBool or DarwinBoolean when requested.
@@ -776,8 +847,8 @@
     auto optionalMV = ManagedValue(optionalV, v.getCleanup());
     return SGF.emitApplyOfLibraryIntrinsic(loc,
                            SGF.getASTContext().getBridgeAnyObjectToAny(nullptr),
-                           SubstitutionMap(), optionalMV, SGFContext())
-      .getAsSingleValue(SGF, loc);
+                           SubstitutionMap(), optionalMV, C)
+              .getAsSingleValue(SGF, loc);
   }
 
   return v;
@@ -786,14 +857,15 @@
 ManagedValue SILGenFunction::emitBridgedToNativeValue(SILLocation loc,
                                           ManagedValue v,
                                           SILFunctionTypeRepresentation srcRep,
-                                          CanType nativeTy) {
+                                          CanType nativeTy,
+                                          SGFContext C) {
   switch (getSILFunctionLanguage(srcRep)) {
   case SILFunctionLanguage::Swift:
     // No additional bridging needed for native functions.
     return v;
 
   case SILFunctionLanguage::C:
-    return emitCBridgedToNativeValue(*this, loc, v, getLoweredType(nativeTy));
+    return emitCBridgedToNativeValue(*this, loc, v, getLoweredType(nativeTy), C);
   }
   llvm_unreachable("bad CC");
 }
@@ -844,6 +916,14 @@
   assert(bridgedErrorProto == SGM.Types.getNSErrorType() &&
          "only handling NSError for now");
 
+  // The native error might just be a value of a type that conforms to
+  // Error.  This should be a subtyping or erasure conversion of the sort
+  // that we can do automatically.
+  // FIXME: maybe we should use a different entrypoint for this case, to
+  // avoid the code size and performance overhead?
+  nativeError = emitUnabstractedCast(*this, loc, nativeError,
+                                     getASTContext().getExceptionType());
+
   auto bridgeFn = emitGlobalFunctionRef(loc, SGM.getErrorToNSErrorFn());
   auto bridgeFnType = bridgeFn->getType().castTo<SILFunctionType>();
   SILFunctionConventions bridgeFnConv(bridgeFnType, SGM.M);
diff --git a/lib/SILGen/SILGenBuiltin.cpp b/lib/SILGen/SILGenBuiltin.cpp
index 044ef9e..5312d27 100644
--- a/lib/SILGen/SILGenBuiltin.cpp
+++ b/lib/SILGen/SILGenBuiltin.cpp
@@ -67,7 +67,6 @@
                                        SILLocation loc,
                                        SubstitutionList substitutions,
                                        ArrayRef<ManagedValue> args,
-                                       CanFunctionType formalApplyType,
                                        SGFContext C) {
   // The value was produced at +1; we can produce an unbalanced retain simply by
   // disabling the cleanup. But this would violate ownership semantics. Instead,
@@ -81,7 +80,6 @@
                                        SILLocation loc,
                                        SubstitutionList substitutions,
                                        ArrayRef<ManagedValue> args,
-                                       CanFunctionType formalApplyType,
                                        SGFContext C) {
   // The value was produced at +1, so to produce an unbalanced
   // release we need to leave the cleanup intact and then do a *second*
@@ -95,7 +93,6 @@
                                            SILLocation loc,
                                            SubstitutionList substitutions,
                                            ArrayRef<ManagedValue> args,
-                                           CanFunctionType formalApplyType,
                                            SGFContext C) {
   gen.B.createUnmanagedAutoreleaseValue(loc, args[0].getValue(),
                                         gen.B.getDefaultAtomicity());
@@ -118,7 +115,6 @@
                                       SILLocation loc,
                                       SubstitutionList subs,
                                       ArrayRef<ManagedValue> args,
-                                      CanFunctionType formalApplyType,
                                       SGFContext C) {
   assert(args.size() == 1);
 
@@ -140,7 +136,6 @@
                                      SILLocation loc,
                                      SubstitutionList subs,
                                      ArrayRef<ManagedValue> args,
-                                     CanFunctionType formalApplyType,
                                      SGFContext C) {
   assert(args.size() == 1);
 
@@ -157,7 +152,6 @@
                                           SILLocation loc,
                                           SubstitutionList substitutions,
                                           ArrayRef<ManagedValue> args,
-                                          CanFunctionType formalApplyType,
                                           SGFContext C,
                                           IsTake_t isTake,
                                           bool isStrict,
@@ -183,10 +177,9 @@
                                     SILLocation loc,
                                     SubstitutionList substitutions,
                                     ArrayRef<ManagedValue> args,
-                                    CanFunctionType formalApplyType,
                                     SGFContext C) {
   return emitBuiltinLoadOrTake(gen, loc, substitutions, args,
-                               formalApplyType, C, IsNotTake,
+                               C, IsNotTake,
                                /*isStrict*/ true, /*isInvariant*/ false);
 }
 
@@ -194,20 +187,18 @@
                                        SILLocation loc,
                                        SubstitutionList substitutions,
                                        ArrayRef<ManagedValue> args,
-                                       CanFunctionType formalApplyType,
                                        SGFContext C) {
   return emitBuiltinLoadOrTake(gen, loc, substitutions, args,
-                               formalApplyType, C, IsNotTake,
+                               C, IsNotTake,
                                /*isStrict*/ false, /*isInvariant*/ false);
 }
 static ManagedValue emitBuiltinLoadInvariant(SILGenFunction &gen,
                                              SILLocation loc,
                                              SubstitutionList substitutions,
                                              ArrayRef<ManagedValue> args,
-                                             CanFunctionType formalApplyType,
                                              SGFContext C) {
   return emitBuiltinLoadOrTake(gen, loc, substitutions, args,
-                               formalApplyType, C, IsNotTake,
+                               C, IsNotTake,
                                /*isStrict*/ false, /*isInvariant*/ true);
 }
 
@@ -215,10 +206,9 @@
                                     SILLocation loc,
                                     SubstitutionList substitutions,
                                     ArrayRef<ManagedValue> args,
-                                    CanFunctionType formalApplyType,
                                     SGFContext C) {
   return emitBuiltinLoadOrTake(gen, loc, substitutions, args,
-                               formalApplyType, C, IsTake,
+                               C, IsTake,
                                /*isStrict*/ true, /*isInvariant*/ false);
 }
 
@@ -227,7 +217,6 @@
                                        SILLocation loc,
                                        SubstitutionList substitutions,
                                        ArrayRef<ManagedValue> args,
-                                       CanFunctionType formalApplyType,
                                        SGFContext C) {
   assert(args.size() == 2 && "destroy should have two arguments");
   assert(substitutions.size() == 1 &&
@@ -259,7 +248,6 @@
                                       SILLocation loc,
                                       SubstitutionList substitutions,
                                       ArrayRef<ManagedValue> args,
-                                      CanFunctionType formalApplyType,
                                       SGFContext C) {
   assert(args.size() >= 2 && "assign should have two arguments");
   assert(substitutions.size() == 1 &&
@@ -291,7 +279,6 @@
                                     SILLocation loc,
                                     SubstitutionList substitutions,
                                     Expr *tuple,
-                                    CanFunctionType formalApplyType,
                                     SGFContext C) {
   auto args = decomposeArguments(gen, tuple, 2);
 
@@ -315,7 +302,6 @@
                                            SILLocation loc,
                                            SubstitutionList substitutions,
                                            ArrayRef<ManagedValue> args,
-                                           CanFunctionType formalApplyType,
                                            SGFContext C) {
   for (auto arg : args) {
     gen.B.createFixLifetime(loc, arg.getValue());
@@ -350,7 +336,6 @@
       = ArchetypeType::getOpened(substitutions[0].getReplacement());
     SILType loweredOpenedTy = gen.getLoweredLoadableType(openedTy);
     arg = gen.B.createOpenExistentialRef(loc, arg, loweredOpenedTy);
-    gen.setArchetypeOpeningSite(openedTy, arg.getValue());
   }
 
   // Return the cast result.
@@ -362,7 +347,6 @@
                                          SILLocation loc,
                                          SubstitutionList substitutions,
                                          ArrayRef<ManagedValue> args,
-                                         CanFunctionType formalApplyType,
                                          SGFContext C) {
   return emitCastToReferenceType(gen, loc, substitutions, args, C,
                         SILType::getNativeObjectType(gen.F.getASTContext()));
@@ -374,7 +358,6 @@
                                          SILLocation loc,
                                          SubstitutionList substitutions,
                                          ArrayRef<ManagedValue> args,
-                                         CanFunctionType formalApplyType,
                                          SGFContext C) {
   CanType ty = args[0].getType().getSwiftRValueType();
   (void)ty;
@@ -382,8 +365,7 @@
          "Can only cast types that use native reference counting to native "
          "object");
   return emitBuiltinUnsafeCastToNativeObject(gen, loc, substitutions,
-                                             args, formalApplyType,
-                                             C);
+                                             args, C);
 }
 
 
@@ -392,7 +374,6 @@
                                          SILLocation loc,
                                          SubstitutionList substitutions,
                                          ArrayRef<ManagedValue> args,
-                                         CanFunctionType formalApplyType,
                                          SGFContext C) {
   return emitCastToReferenceType(gen, loc, substitutions, args, C,
                         SILType::getUnknownObjectType(gen.F.getASTContext()));
@@ -436,7 +417,6 @@
                                          SILLocation loc,
                                          SubstitutionList substitutions,
                                          ArrayRef<ManagedValue> args,
-                                         CanFunctionType formalApplyType,
                                          SGFContext C) {
   return emitCastFromReferenceType(gen, loc, substitutions, args, C);
 }
@@ -446,7 +426,6 @@
                                          SILLocation loc,
                                          SubstitutionList substitutions,
                                          ArrayRef<ManagedValue> args,
-                                         CanFunctionType formalApplyType,
                                          SGFContext C) {
   return emitCastFromReferenceType(gen, loc, substitutions, args, C);
 }
@@ -456,7 +435,6 @@
                                         SILLocation loc,
                                         SubstitutionList substitutions,
                                         ArrayRef<ManagedValue> args,
-                                        CanFunctionType formalApplyType,
                                         SGFContext C) {
   assert(args.size() == 1 && "bridge should have a single argument");
   
@@ -474,7 +452,6 @@
                                         SILLocation loc,
                                         SubstitutionList substitutions,
                                         ArrayRef<ManagedValue> args,
-                                        CanFunctionType formalApplyType,
                                         SGFContext C) {
   assert(substitutions.size() == 1 &&
          "bridge should have a single substitution");
@@ -498,7 +475,6 @@
                                          SILLocation loc,
                                          SubstitutionList substitutions,
                                          ArrayRef<ManagedValue> args,
-                                         CanFunctionType formalApplyType,
                                          SGFContext C) {
   assert(args.size() == 1 && "addressof should have a single argument");
   
@@ -515,7 +491,6 @@
                                       SILLocation loc,
                                       SubstitutionList substitutions,
                                       ArrayRef<ManagedValue> args,
-                                      CanFunctionType formalApplyType,
                                       SGFContext C) {
   assert(args.size() == 2 && "gepRaw should be given two arguments");
   
@@ -530,7 +505,6 @@
                                    SILLocation loc,
                                    SubstitutionList substitutions,
                                    ArrayRef<ManagedValue> args,
-                                   CanFunctionType formalApplyType,
                                    SGFContext C) {
   assert(substitutions.size() == 1 && "gep should have two substitutions");
   assert(args.size() == 3 && "gep should be given three arguments");
@@ -552,7 +526,6 @@
                                            SILLocation loc,
                                            SubstitutionList substitutions,
                                            ArrayRef<ManagedValue> args,
-                                           CanFunctionType formalApplyType,
                                            SGFContext C) {
   assert(substitutions.size() == 2 && "getTailAddr should have two substitutions");
   assert(args.size() == 4 && "gep should be given four arguments");
@@ -576,7 +549,6 @@
                                         SILLocation loc,
                                         SubstitutionList substitutions,
                                         ArrayRef<ManagedValue> args,
-                                        CanFunctionType formalApplyType,
                                         SGFContext C) {
   assert(args.size() == 1 && "condfail should be given one argument");
   
@@ -590,7 +562,6 @@
                          SILLocation loc,
                          SubstitutionList substitutions,
                          ArrayRef<ManagedValue> args,
-                         CanFunctionType formalApplyType,
                          SGFContext C) {
   assert(args.size() == 1 && "castReference should be given one argument");
   assert(substitutions.size() == 2 && "castReference should have two subs");
@@ -652,7 +623,6 @@
                                          SILLocation loc,
                                          SubstitutionList substitutions,
                                          ArrayRef<ManagedValue> args,
-                                         CanFunctionType formalApplyType,
                                          SGFContext C) {
   assert(args.size() == 1 && "reinterpretCast should be given one argument");
   assert(substitutions.size() == 2 && "reinterpretCast should have two subs");
@@ -712,7 +682,6 @@
                                                   SILLocation loc,
                                                   SubstitutionList subs,
                                                   ArrayRef<ManagedValue> args,
-                                                  CanFunctionType formalApplyType,
                                                   SGFContext C) {
   assert(args.size() == 2 && "cast should have two arguments");
   assert(subs.size() == 1 && "cast should have a type substitution");
@@ -741,7 +710,6 @@
       = ArchetypeType::getOpened(subs[0].getReplacement());
     SILType loweredOpenedTy = gen.getLoweredLoadableType(openedTy);
     ref = gen.B.createOpenExistentialRef(loc, ref, loweredOpenedTy);
-    gen.setArchetypeOpeningSite(openedTy, ref);
   }
   
   SILValue result = gen.B.createRefToBridgeObject(loc, ref, bits);
@@ -754,7 +722,6 @@
                                                   SILLocation loc,
                                                   SubstitutionList subs,
                                                   ArrayRef<ManagedValue> args,
-                                                  CanFunctionType formalApplyType,
                                                   SGFContext C) {
   assert(args.size() == 1 && "cast should have one argument");
   assert(subs.size() == 1 && "cast should have a type substitution");
@@ -781,7 +748,6 @@
                                                   SILLocation loc,
                                                   SubstitutionList subs,
                                                   ArrayRef<ManagedValue> args,
-                                                  CanFunctionType formalApplyType,
                                                   SGFContext C) {
   assert(args.size() == 1 && "cast should have one argument");
   assert(subs.empty() && "cast should not have subs");
@@ -800,7 +766,6 @@
                                         SILLocation loc,
                                         SubstitutionList subs,
                                         ArrayRef<ManagedValue> args,
-                                        CanFunctionType formalApplyType,
                                         SGFContext C) {
 
   assert(subs.size() == 1 && "isUnique should have a single substitution");
@@ -817,7 +782,6 @@
                                SILLocation loc,
                                SubstitutionList subs,
                                ArrayRef<ManagedValue> args,
-                               CanFunctionType formalApplyType,
                                SGFContext C) {
   assert(subs.size() == 1 && "isUnique should have a single substitution");
   assert(args.size() == 1 && "isUnique should have a single argument");
@@ -836,7 +800,6 @@
                            SILLocation loc,
                            SubstitutionList subs,
                            ArrayRef<ManagedValue> args,
-                           CanFunctionType formalApplyType,
                            SGFContext C) {
 
   assert(subs.size() == 1 && "isUnique_native should have one sub.");
@@ -854,7 +817,6 @@
                                    SILLocation loc,
                                    SubstitutionList subs,
                                    ArrayRef<ManagedValue> args,
-                                   CanFunctionType formalApplyType,
                                    SGFContext C) {
 
   assert(subs.size() == 1 && "isUniqueOrPinned_native should have one sub.");
@@ -871,7 +833,6 @@
                                           SILLocation loc,
                                           SubstitutionList subs,
                                           ArrayRef<ManagedValue> args,
-                                          CanFunctionType formalApplyType,
                                           SGFContext C) {
   assert(subs.size() == 1 && "bindMemory should have a single substitution");
   assert(args.size() == 3 && "bindMemory should have three argument");
@@ -890,7 +851,6 @@
                                               SILLocation loc,
                                               SubstitutionList subs,
                                               ArrayRef<ManagedValue> args,
-                                              CanFunctionType formalApplyType,
                                               SGFContext C) {
   unsigned NumTailTypes = subs.size() - 1;
   assert(args.size() == NumTailTypes * 2 + 1 &&
@@ -923,7 +883,6 @@
                                                 SILLocation loc,
                                                 SubstitutionList subs,
                                                 ArrayRef<ManagedValue> args,
-                                                CanFunctionType formalApplyType,
                                                 SGFContext C) {
   assert(subs.size() == 2 &&
          "allocWithTailElems should have two substitutions");
@@ -948,7 +907,6 @@
                                         SILLocation loc,
                                         SubstitutionList substitutions,
                                         ArrayRef<ManagedValue> args,
-                                        CanFunctionType formalApplyType,
                                         SGFContext C) {
   assert(substitutions.size() == 1
          && "type trait should take a single type parameter");
diff --git a/lib/SILGen/SILGenConvert.cpp b/lib/SILGen/SILGenConvert.cpp
index 366ef0e..ed201c5 100644
--- a/lib/SILGen/SILGenConvert.cpp
+++ b/lib/SILGen/SILGenConvert.cpp
@@ -310,7 +310,8 @@
 SILGenFunction::emitOptionalToOptional(SILLocation loc,
                                        ManagedValue input,
                                        SILType resultTy,
-                                       ValueTransformRef transformValue) {
+                                       ValueTransformRef transformValue,
+                                       SGFContext C) {
   auto contBB = createBasicBlock();
   auto isNotPresentBB = createBasicBlock();
   auto isPresentBB = createBasicBlock();
@@ -324,6 +325,7 @@
 
   // If the result is address-only, we need to return something in memory,
   // otherwise the result is the BBArgument in the merge point.
+  // TODO: use the SGFContext passed in.
   ManagedValue finalResult;
   if (resultTL.isAddressOnly() && silConv.useLoweredAddresses()) {
     finalResult = emitManagedBufferWithCleanup(
@@ -347,7 +349,8 @@
               loc, input, someDecl, input.getType().getAnyOptionalObjectType());
         }
 
-        ManagedValue result = transformValue(*this, loc, input, noOptResultTy);
+        ManagedValue result = transformValue(*this, loc, input, noOptResultTy,
+                                             SGFContext());
 
         if (!(resultTL.isAddressOnly() && silConv.useLoweredAddresses())) {
           SILValue some = B.createOptionalSome(loc, result).forward(*this);
@@ -795,20 +798,12 @@
     }
 
     if (existentialValue.hasCleanup()) {
-      if (this->SGM.M.getOptions().UseCOWExistentials) {
-        // With CoW existentials we can't consume the boxed value inside of
-        // the existential. (We could only do so after a uniqueness check on
-        // the box holding the value).
-        canConsume = false;
-        enterDestroyCleanup(existentialValue.getValue());
-        archetypeMV = ManagedValue::forUnmanaged(archetypeValue);
-      } else {
-        canConsume = true;
-        // Leave a cleanup to deinit the existential container.
-        enterDeinitExistentialCleanup(existentialValue.getValue(), CanType(),
-                                      ExistentialRepresentation::Opaque);
-        archetypeMV = emitManagedBufferWithCleanup(archetypeValue);
-      }
+      // With CoW existentials we can't consume the boxed value inside of
+      // the existential. (We could only do so after a uniqueness check on
+      // the box holding the value).
+      canConsume = false;
+      enterDestroyCleanup(existentialValue.getValue());
+      archetypeMV = ManagedValue::forUnmanaged(archetypeValue);
     } else {
       canConsume = false;
       archetypeMV = ManagedValue::forUnmanaged(archetypeValue);
@@ -859,7 +854,6 @@
   case ExistentialRepresentation::None:
     llvm_unreachable("not existential");
   }
-  setArchetypeOpeningSite(openedArchetype, archetypeMV.getValue());
 
   assert(!canConsume || isUnique); (void) isUnique;
 
diff --git a/lib/SILGen/SILGenExpr.cpp b/lib/SILGen/SILGenExpr.cpp
index 8dc4937..f370bd8 100644
--- a/lib/SILGen/SILGenExpr.cpp
+++ b/lib/SILGen/SILGenExpr.cpp
@@ -331,7 +331,7 @@
   }
 
   RValue result = emitRValue(E, SGFContext(I));
-  if (result)
+  if (!result.isInContext())
     std::move(result).forwardInto(*this, E, I);
 }
 
@@ -391,6 +391,10 @@
     RValue visitCollectionUpcastConversionExpr(
              CollectionUpcastConversionExpr *E,
              SGFContext C);
+    RValue visitBridgeToObjCExpr(BridgeToObjCExpr *E, SGFContext C);
+    RValue visitBridgeFromObjCExpr(BridgeFromObjCExpr *E, SGFContext C);
+    RValue visitConditionalBridgeFromObjCExpr(ConditionalBridgeFromObjCExpr *E,
+                                              SGFContext C);
     RValue visitArchetypeToSuperExpr(ArchetypeToSuperExpr *E, SGFContext C);
     RValue visitUnresolvedTypeConversionExpr(UnresolvedTypeConversionExpr *E,
                                              SGFContext C);
@@ -1210,7 +1214,7 @@
 
     // If we emitted into the provided context, we're done.
     if (usingProvidedContext)
-      return RValue();
+      return RValue::forInContext();
 
     return RValue(SGF, E, optTemp->getManagedAddress());
   }
@@ -1257,7 +1261,7 @@
 
   // If we emitted into the provided context, we're done.
   if (usingProvidedContext)
-    return RValue();
+    return RValue::forInContext();
 
   assert(optTemp);
   return RValue(SGF, E, optTemp->getManagedAddress());
@@ -1353,6 +1357,48 @@
                                       mv, C);
 }
 
+RValue
+RValueEmitter::visitConditionalBridgeFromObjCExpr(
+                              ConditionalBridgeFromObjCExpr *E, SGFContext C) {
+  // Get the sub expression argument as a managed value
+  auto mv = SGF.emitRValueAsSingleValue(E->getSubExpr());
+
+  auto conversionRef = E->getConversion();
+  auto conversion = cast<FuncDecl>(conversionRef.getDecl());
+  auto subs = conversionRef.getSubstitutions();
+
+  auto nativeType = subs[0].getReplacement();
+
+  auto metatypeType = SGF.getLoweredType(MetatypeType::get(nativeType));
+  auto metatype =
+    ManagedValue::forUnmanaged(SGF.B.createMetatype(E, metatypeType));
+
+  return SGF.emitApplyOfLibraryIntrinsic(E, conversion, subs,
+                                         { mv, metatype }, C);
+}
+
+RValue
+RValueEmitter::visitBridgeFromObjCExpr(BridgeFromObjCExpr *E, SGFContext C) {
+  // Emit the sub-expression.
+  auto mv = SGF.emitRValueAsSingleValue(E->getSubExpr());
+
+  CanType resultType = E->getType()->getCanonicalType();
+  auto repr = SILFunctionTypeRepresentation::CFunctionPointer;
+  auto result = SGF.emitBridgedToNativeValue(E, mv, repr, resultType, C);
+  return RValue(SGF, E, result);
+}
+
+RValue
+RValueEmitter::visitBridgeToObjCExpr(BridgeToObjCExpr *E, SGFContext C) {
+  // Emit the sub-expression.
+  auto mv = SGF.emitRValueAsSingleValue(E->getSubExpr());
+
+  CanType resultType = E->getType()->getCanonicalType();
+  auto repr = SILFunctionTypeRepresentation::CFunctionPointer;
+  auto result = SGF.emitNativeToBridgedValue(E, mv, repr, resultType, C);
+  return RValue(SGF, E, result);
+}
+
 RValue RValueEmitter::visitArchetypeToSuperExpr(ArchetypeToSuperExpr *E,
                                                 SGFContext C) {
   ManagedValue archetype = SGF.emitRValueAsSingleValue(E->getSubExpr());
@@ -1643,7 +1689,8 @@
 static ManagedValue createUnsafeDowncast(SILGenFunction &gen,
                                          SILLocation loc,
                                          ManagedValue input,
-                                         SILType resultTy) {
+                                         SILType resultTy,
+                                         SGFContext context) {
   SILValue result = gen.B.createUncheckedRefCast(loc,
                                                  input.forward(gen),
                                                  resultTy);
@@ -1659,9 +1706,9 @@
   ManagedValue result;
   if (resultType.getSwiftRValueType().getAnyOptionalObjectType()) {
     result = SGF.emitOptionalToOptional(e, original, resultType,
-                                        createUnsafeDowncast);
+                                        createUnsafeDowncast, C);
   } else {
-    result = createUnsafeDowncast(SGF, e, original, resultType);
+    result = createUnsafeDowncast(SGF, e, original, resultType, C);
   }
 
   return RValue(SGF, e, result);
@@ -1921,7 +1968,7 @@
       for (unsigned i = 0, size = subInitializations.size(); i < size; ++i)
         SGF.emitExprInto(E->getElement(i), subInitializations[i].get());
       I->finishInitialization(SGF);
-      return RValue();
+      return RValue::forInContext();
     }
   }
     
@@ -1987,7 +2034,7 @@
     CanType baseFormalType =
       Expr->getBase()->getType()->getCanonicalType();
     assert(baseFormalType->isMaterializable());
-
+    
     RValue result =
       SGF.emitRValueForPropertyLoad(Expr, base, baseFormalType,
                                     Expr->isSuper(),
@@ -2015,7 +2062,7 @@
     CanType baseFormalType =
       Expr->getBase()->getType()->getCanonicalType();
     assert(baseFormalType->isMaterializable());
-
+    
     // And then emit our property using whether or not base is at +0 to
     // discriminate whether or not the base was guaranteed.
     RValue result =
@@ -2215,7 +2262,7 @@
         !(isa<ParenType>(E->getType().getPointer()) &&
           SGF.getASTContext().isSwiftVersion3())) {
       emitTupleShuffleExprInto(*this, E, I);
-      return RValue();
+      return RValue::forInContext();
     }
   }
 
@@ -2415,6 +2462,44 @@
   return RValue(SGF, e, ManagedValue::forUnmanaged(selectorValue));
 }
 
+static ManagedValue
+emitKeyPathRValueBase(SILGenFunction &subSGF,
+                     VarDecl *property,
+                     SILLocation loc,
+                     SILValue paramArg,
+                     CanType &baseType) {
+  auto paramOrigValue = subSGF.emitManagedRValueWithCleanup(paramArg);
+  auto paramSubstValue = subSGF.emitOrigToSubstValue(loc, paramOrigValue,
+                                             AbstractionPattern::getOpaque(),
+                                             baseType);
+  
+  // Upcast a class instance to the property's declared type if necessary.
+  if (auto propertyClass = dyn_cast<ClassDecl>(property->getDeclContext())) {
+    if (baseType->getClassOrBoundGenericClass() != propertyClass) {
+      baseType = baseType->getSuperclassForDecl(propertyClass)
+        ->getCanonicalType();
+      paramSubstValue = subSGF.B.createUpcast(loc, paramSubstValue,
+                                     SILType::getPrimitiveObjectType(baseType));
+    }
+  }
+  // …or pop open an existential container.
+  else if (baseType->isAnyExistentialType()) {
+    ArchetypeType *opened;
+    baseType = baseType->openAnyExistentialType(opened)->getCanonicalType();
+    auto openedOpaqueValue = subSGF.emitOpenExistential(loc, paramSubstValue,
+                                   opened, subSGF.SGM.getLoweredType(baseType),
+                                   AccessKind::Read);
+    // Maybe we could peephole this if we know the property load can borrow the
+    // base value…
+    if (!openedOpaqueValue.IsConsumable) {
+      paramSubstValue = openedOpaqueValue.Value.copyUnmanaged(subSGF, loc);
+    } else {
+      paramSubstValue = openedOpaqueValue.Value;
+    }
+  }
+  return paramSubstValue;
+}
+
 static SILFunction *getOrCreateKeyPathGetter(SILGenFunction &SGF,
                                              SILLocation loc,
                                              VarDecl *property,
@@ -2482,22 +2567,10 @@
   
   Scope scope(subSGF, loc);
   
-  auto paramOrigValue = subSGF.emitManagedRValueWithCleanup(paramArg);
-  auto paramSubstValue = subSGF.emitOrigToSubstValue(loc, paramOrigValue,
-                                             AbstractionPattern::getOpaque(),
-                                             baseType);
-  
-  // Upcast a class instance to the property's declared type if necessary.
-  if (auto propertyClass = dyn_cast<ClassDecl>(property->getDeclContext())) {
-    if (baseType->getClassOrBoundGenericClass() != propertyClass) {
-      do {
-        baseType = baseType->getSuperclass()->getCanonicalType();
-      } while (baseType->getClassOrBoundGenericClass() != propertyClass);
-      paramSubstValue = subSGF.B.createUpcast(loc, paramSubstValue,
-                                     SILType::getPrimitiveObjectType(baseType));
-    }
-  }
-  
+  auto paramSubstValue = emitKeyPathRValueBase(subSGF, property,
+                                               loc, paramArg,
+                                               baseType);
+
   auto subs = baseType->getContextSubstitutionMap(subSGF.SGM.M.getSwiftModule(),
                property->getInnermostDeclContext()->getInnermostTypeContext());
   SmallVector<Substitution, 4> subsList;
@@ -2602,20 +2675,9 @@
   
   LValue lv;
   if (property->isSetterNonMutating()) {
-    auto baseOrig = subSGF.emitManagedRValueWithCleanup(baseArg);
-    auto baseSubst = subSGF.emitOrigToSubstValue(loc, baseOrig,
-                                                 AbstractionPattern::getOpaque(),
-                                                 baseType);
-    // Upcast a class instance to the property's declared type if necessary.
-    if (auto propertyClass = dyn_cast<ClassDecl>(property->getDeclContext())) {
-      if (baseType->getClassOrBoundGenericClass() != propertyClass) {
-        do {
-          baseType = baseType->getSuperclass()->getCanonicalType();
-        } while (baseType->getClassOrBoundGenericClass() != propertyClass);
-        baseSubst = subSGF.B.createUpcast(loc, baseSubst,
-                                     SILType::getPrimitiveObjectType(baseType));
-      }
-    }
+    auto baseSubst = emitKeyPathRValueBase(subSGF, property,
+                                           loc, baseArg,
+                                           baseType);
 
     lv = LValue::forValue(baseSubst, baseType);
   } else {
@@ -2623,6 +2685,16 @@
     lv = LValue::forAddress(baseOrig, None,
                             AbstractionPattern::getOpaque(),
                             baseType);
+    
+    // Open an existential lvalue, if necessary.
+    if (baseType->isAnyExistentialType()) {
+      ArchetypeType *opened;
+      baseType = baseType->openAnyExistentialType(opened)->getCanonicalType();
+      lv = subSGF.emitOpenExistentialLValue(loc, std::move(lv),
+                                            CanArchetypeType(opened),
+                                            baseType,
+                                            AccessKind::ReadWrite);
+    }
   }
 
   auto subs = baseType->getContextSubstitutionMap(subSGF.SGM.M.getSwiftModule(),
@@ -2861,14 +2933,7 @@
 visitMagicIdentifierLiteralExpr(MagicIdentifierLiteralExpr *E, SGFContext C) {
   ASTContext &Ctx = SGF.getASTContext();
   SILType Ty = SGF.getLoweredLoadableType(E->getType());
-  SourceLoc Loc;
-  
-  // If "overrideLocationForMagicIdentifiers" is set, then we use it as the
-  // location point for these magic identifiers.
-  if (SGF.overrideLocationForMagicIdentifiers)
-    Loc = SGF.overrideLocationForMagicIdentifiers.getValue();
-  else
-    Loc = E->getStartLoc();
+  SourceLoc Loc = E->getStartLoc();
   
   switch (E->getKind()) {
   case MagicIdentifierLiteralExpr::File:
@@ -2902,7 +2967,7 @@
     auto DSOGlobal = SGF.SGM.M.lookUpGlobalVariable("__dso_handle");
     if (!DSOGlobal)
       DSOGlobal = SILGlobalVariable::create(SGF.SGM.M,
-                                            SILLinkage::HiddenExternal,
+                                            SILLinkage::PublicExternal,
                                             IsNotSerialized, "__dso_handle",
                                             BuiltinRawPtrTy);
     auto DSOAddr = SGF.B.createGlobalAddr(SILLoc, DSOGlobal);
@@ -3349,7 +3414,7 @@
                                            SGF.getLoweredType(E->getType()),
                                            someDecl, C);
   if (result.isInContext())
-    return RValue();
+    return RValue::forInContext();
   return RValue(SGF, E, result);
 }
 
@@ -3479,8 +3544,8 @@
 
     // If the destination is a tuple, recursively destructure.
     void visitTupleExpr(TupleExpr *E) {
-      assert(E->getType()->is<TupleType>());
-      assert(!E->getType()->isMaterializable() || E->getType()->isVoid());
+      auto *TTy = E->getType()->castTo<TupleType>();
+      assert(TTy->hasLValueType() || TTy->isVoid());
       for (auto &elt : E->getElements()) {
         visit(elt);
       }
@@ -3589,7 +3654,7 @@
       SGF.emitIgnoredExpr(src);
       return;
     }
-
+    
     FormalEvaluationScope writeback(SGF);
     LValue destLV = SGF.emitLValue(dest, AccessKind::Write);
     RValue srcRV = SGF.emitRValue(src);
@@ -3734,7 +3799,7 @@
 
   assert(results.size() == 1);
   if (results[0].isInContext()) {
-    return RValue();
+    return RValue::forInContext();
   } else {
     return RValue(SGF, E, results[0]);
   }
@@ -4442,7 +4507,7 @@
 }
 
 RValue SILGenFunction::emitRValue(Expr *E, SGFContext C) {
-  assert(E->getType()->isMaterializable() &&
+  assert(!E->getType()->hasLValueType() &&
          "l-values must be emitted with emitLValue");
   return RValueEmitter(*this).visit(E, C);
 }
@@ -4462,7 +4527,7 @@
   // arguments.
   
   FullExpr scope(Cleanups, CleanupLocation(E));
-  if (!E->getType()->isMaterializable()) {
+  if (E->getType()->hasLValueType()) {
     // Emit the l-value, but don't perform an access.
     FormalEvaluationScope scope(*this);
     emitLValue(E, AccessKind::Read);
@@ -4500,9 +4565,7 @@
 /// Emit the given expression as an r-value, then (if it is a tuple), combine
 /// it together into a single ManagedValue.
 ManagedValue SILGenFunction::emitRValueAsSingleValue(Expr *E, SGFContext C) {
-  RValue &&rv = emitRValue(E, C);
-  if (rv.isUsed()) return ManagedValue::forInContext();
-  return std::move(rv).getAsSingleValue(*this, E);
+  return emitRValue(E, C).getAsSingleValue(*this, E);
 }
 
 RValue SILGenFunction::emitUndefRValue(SILLocation loc, Type type) {
diff --git a/lib/SILGen/SILGenFunction.cpp b/lib/SILGen/SILGenFunction.cpp
index 9a8cdf6..8064b60 100644
--- a/lib/SILGen/SILGenFunction.cpp
+++ b/lib/SILGen/SILGenFunction.cpp
@@ -31,8 +31,9 @@
 
 SILGenFunction::SILGenFunction(SILGenModule &SGM, SILFunction &F)
     : SGM(SGM), F(F), silConv(SGM.M), StartOfPostmatter(F.end()),
-      B(*this, createBasicBlock()), OpenedArchetypesTracker(F),
+      B(*this), OpenedArchetypesTracker(F),
       CurrentSILLoc(F.getLocation()), Cleanups(*this) {
+  B.setInsertionPoint(createBasicBlock());
   B.setCurrentDebugScope(F.getDebugScope());
   B.setOpenedArchetypesTracker(&OpenedArchetypesTracker);
 }
@@ -506,7 +507,8 @@
       managedName = emitOptionalToOptional(
           mainClass, managedName,
           SILType::getPrimitiveObjectType(IUOptNSStringTy),
-          [](SILGenFunction &, SILLocation, ManagedValue input, SILType) {
+          [](SILGenFunction &, SILLocation, ManagedValue input, SILType,
+             SGFContext) {
         return input;
       });
     }
diff --git a/lib/SILGen/SILGenFunction.h b/lib/SILGen/SILGenFunction.h
index a55c28b..ef39b34 100644
--- a/lib/SILGen/SILGenFunction.h
+++ b/lib/SILGen/SILGenFunction.h
@@ -470,12 +470,6 @@
   /// function is valid.
   bool allowsVoidReturn() const { return ReturnDest.getBlock()->args_empty(); }
 
-  /// This location, when set, is used as an override location for magic
-  /// identifier expansion (e.g. #file).  This allows default argument
-  /// expansion to report the location of the call, instead of the location
-  /// of the original expr.
-  Optional<SourceLoc> overrideLocationForMagicIdentifiers;
-
   /// Emit code to increment a counter for profiling.
   void emitProfilerIncrement(ASTNode N) {
     if (SGM.Profiler && SGM.Profiler->hasRegionCounters())
@@ -915,13 +909,15 @@
   typedef llvm::function_ref<ManagedValue(SILGenFunction &gen,
                                     SILLocation loc,
                                     ManagedValue input,
-                                    SILType loweredResultTy)> ValueTransformRef;
+                                    SILType loweredResultTy,
+                                    SGFContext context)> ValueTransformRef;
 
   /// Emit a transformation on the value of an optional type.
   ManagedValue emitOptionalToOptional(SILLocation loc,
                                       ManagedValue input,
                                       SILType loweredResultTy,
-                                      ValueTransformRef transform);
+                                      ValueTransformRef transform,
+                                      SGFContext C = SGFContext());
 
   /// Emit a reinterpret-cast from one pointer type to another, using a library
   /// intrinsic.
@@ -943,21 +939,6 @@
                                             CanType inputTy,
                                             SILType resultTy);
 
-  /// OpenedArchetypes - Mappings of opened archetypes back to the
-  /// instruction which opened them.
-  llvm::DenseMap<ArchetypeType *, SILValue> ArchetypeOpenings;
-
-  SILValue getArchetypeOpeningSite(ArchetypeType *archetype) const {
-    auto it = ArchetypeOpenings.find(archetype);
-    assert(it != ArchetypeOpenings.end() &&
-           "opened archetype was not registered with SILGenFunction");
-    return it->second;
-  }
-
-  void setArchetypeOpeningSite(ArchetypeType *archetype, SILValue site) {
-    ArchetypeOpenings.insert({archetype, site});
-  }
-
   struct OpaqueValueState {
     ManagedValue Value;
     bool IsConsumable;
@@ -1372,13 +1353,18 @@
                     Optional<SILFunctionTypeRepresentation> overrideRep,
                     const Optional<ForeignErrorConvention> &foreignError);
 
-
   RValue emitApplyOfLibraryIntrinsic(SILLocation loc,
                                      FuncDecl *fn,
                                      const SubstitutionMap &subMap,
                                      ArrayRef<ManagedValue> args,
                                      SGFContext ctx);
 
+  RValue emitApplyOfLibraryIntrinsic(SILLocation loc,
+                                     FuncDecl *fn,
+                                     const SubstitutionList &subs,
+                                     ArrayRef<ManagedValue> args,
+                                     SGFContext ctx);
+
   SILValue emitApplyWithRethrow(SILLocation loc, SILValue fn,
                                 SILType substFnType,
                                 SubstitutionList subs,
@@ -1555,13 +1541,15 @@
   /// convention.
   ManagedValue emitNativeToBridgedValue(SILLocation loc, ManagedValue v,
                                         SILFunctionTypeRepresentation destRep,
-                                        CanType bridgedTy);
+                                        CanType bridgedTy,
+                                        SGFContext C = SGFContext());
   
   /// Convert a value received as the result or argument of a function with
   /// the given calling convention to a native Swift value of the given type.
   ManagedValue emitBridgedToNativeValue(SILLocation loc, ManagedValue v,
                                         SILFunctionTypeRepresentation srcRep,
-                                        CanType nativeTy);
+                                        CanType nativeTy,
+                                        SGFContext C = SGFContext());
 
   /// Convert a bridged error type to the native Swift Error
   /// representation.  The value may be optional.
diff --git a/lib/SILGen/SILGenGlobalVariable.cpp b/lib/SILGen/SILGenGlobalVariable.cpp
index 6415b16..2a93ba8 100644
--- a/lib/SILGen/SILGenGlobalVariable.cpp
+++ b/lib/SILGen/SILGenGlobalVariable.cpp
@@ -47,7 +47,7 @@
   SILType silTy = M.Types.getLoweredTypeOfGlobal(gDecl);
 
   auto *silGlobal = SILGlobalVariable::create(M, link,
-                                              makeModuleFragile
+                                              isMakeModuleFragile()
                                                 ? IsSerialized
                                                 : IsNotSerialized,
                                               mangledName, silTy,
@@ -223,7 +223,7 @@
   // TODO: include the module in the onceToken's name mangling.
   // Then we can make it fragile.
   auto onceToken = SILGlobalVariable::create(M, SILLinkage::Private,
-                                             makeModuleFragile
+                                             isMakeModuleFragile()
                                                ? IsSerialized
                                                : IsNotSerialized,
                                              onceTokenBuffer, onceSILTy);
diff --git a/lib/SILGen/SILGenLValue.cpp b/lib/SILGen/SILGenLValue.cpp
index a20ee0f..1cd285a 100644
--- a/lib/SILGen/SILGenLValue.cpp
+++ b/lib/SILGen/SILGenLValue.cpp
@@ -627,14 +627,11 @@
   /// A physical path component which projects out an opened archetype
   /// from an existential.
   class OpenOpaqueExistentialComponent : public PhysicalPathComponent {
-    CanArchetypeType getOpenedArchetype() const {
-      return cast<ArchetypeType>(getSubstFormalType());
-    }
   public:
     OpenOpaqueExistentialComponent(CanArchetypeType openedArchetype,
                                    LValueTypeData typeData)
       : PhysicalPathComponent(typeData, OpenOpaqueExistentialKind) {
-      assert(getOpenedArchetype() == openedArchetype);
+      assert(getSubstFormalType() == openedArchetype);
     }
 
     ManagedValue offset(SILGenFunction &SGF, SILLocation loc, ManagedValue base,
@@ -664,7 +661,6 @@
         llvm_unreachable("Bad existential representation for address-only type");
       }
 
-      SGF.setArchetypeOpeningSite(getOpenedArchetype(), addr);
       return ManagedValue::forLValue(addr);
     }
 
@@ -722,8 +718,6 @@
         ref = SGF.B.createOpenExistentialRef(loc, result, getTypeOfRValue());
       }
 
-      SGF.setArchetypeOpeningSite(OpenedArchetype, ref.getValue());
-
       return RValue(SGF, loc, getSubstFormalType(), ref);
     }
 
@@ -932,7 +926,7 @@
         result.base = SGF.prepareAccessorBaseArg(loc, base, baseFormalType,
                                                  accessor);
 
-      if (subscripts)
+      if (!subscripts.isNull())
         result.subscripts = std::move(subscripts);
       
       return result;
@@ -1124,7 +1118,7 @@
         // This is *amazingly* unprincipled.
         RValue borrowedSubscripts;
         RValue *optSubscripts = nullptr;
-        if (subscripts) {
+        if (!subscripts.isNull()) {
           CanType type = subscripts.getType();
           SmallVector<ManagedValue, 4> values;
           std::move(subscripts).getAll(values);
@@ -1350,7 +1344,7 @@
         return;
 
       // If this is a simple property access, then we must have a conflict.
-      if (!subscripts) {
+      if (subscripts.isNull()) {
         assert(isa<VarDecl>(decl));
         SGF.SGM.diagnose(loc1, diag::writeback_overlap_property,
                          decl->getBaseName().getIdentifier())
@@ -1752,13 +1746,20 @@
 
 LValue LValue::forValue(ManagedValue value,
                         CanType substFormalType) {
-  assert(value.getType().isObject());
-  LValueTypeData typeData = getValueTypeData(substFormalType,
-                                             value.getValue());
+  if (value.getType().isObject()) {
+    LValueTypeData typeData = getValueTypeData(substFormalType,
+                                               value.getValue());
 
-  LValue lv;
-  lv.add<ValueComponent>(value, None, typeData, /*isRValue=*/true);
-  return lv;
+    LValue lv;
+    lv.add<ValueComponent>(value, None, typeData, /*isRValue=*/true);
+    return lv;
+  } else {
+    // Treat an address-only value as an lvalue we only read from.
+    if (!value.isLValue())
+      value = ManagedValue::forLValue(value.getValue());
+    return forAddress(value, None, AbstractionPattern(substFormalType),
+                      substFormalType);
+  }
 }
 
 LValue LValue::forAddress(ManagedValue address,
@@ -1785,7 +1786,7 @@
                                 CanType formalRValueType,
                                 RValue &&indices) {
   if (auto var = dyn_cast<VarDecl>(storage)) {
-    assert(!indices);
+    assert(indices.isNull());
     addMemberVarComponent(SGF, loc, var, subs, isSuper,
                           accessKind, accessSemantics, accessStrategy,
                           formalRValueType);
@@ -2992,7 +2993,7 @@
                                           CanArchetypeType openedArchetype,
                                           CanType formalRValueType,
                                           AccessKind accessKind) {
-  assert(!formalRValueType->isLValueType());
+  assert(!formalRValueType->hasLValueType());
   LValueTypeData typeData = {
     AbstractionPattern::getOpaque(), formalRValueType,
     getLoweredType(formalRValueType).getObjectType()
diff --git a/lib/SILGen/SILGenMaterializeForSet.cpp b/lib/SILGen/SILGenMaterializeForSet.cpp
index dbcbc63..752aa0d 100644
--- a/lib/SILGen/SILGenMaterializeForSet.cpp
+++ b/lib/SILGen/SILGenMaterializeForSet.cpp
@@ -431,13 +431,7 @@
     // Metatypes and bases of non-mutating setters on value types
     //  are always rvalues.
     if (!SubstSelfType->getRValueInstanceType()->mayHaveSuperclass()) {
-      if (self.getType().isObject())
-        return LValue::forValue(self, SubstSelfType);
-      else {
-        if (!self.isLValue())
-          self = ManagedValue::forLValue(self.getValue());
-        return LValue::forAddress(self, None, selfPattern, SubstSelfType);
-      }
+      return LValue::forValue(self, SubstSelfType);
     }
 
     CanType witnessSelfType =
diff --git a/lib/SILGen/SILGenPattern.cpp b/lib/SILGen/SILGenPattern.cpp
index 1fd3eaf..30f751a 100644
--- a/lib/SILGen/SILGenPattern.cpp
+++ b/lib/SILGen/SILGenPattern.cpp
@@ -2300,8 +2300,15 @@
       pattern->forEachVariable([&](VarDecl *V) {
         if (!V->hasName())
           return;
-        block->createPHIArgument(SGF.getLoweredType(V->getType()),
-                                 ValueOwnershipKind::Owned, V);
+        // We should never PHI addresses. To eliminate that possibility, we:
+        //
+        // 1. Load all loadable types and pass them as objects to the block.
+        // 2. We do not emit arguments for address only types. We instead just
+        // assign SILUndef to the VarLoc.
+        SILType ty = SGF.getLoweredType(V->getType());
+        if (ty.isAddressOnly(SGF.F.getModule()))
+          return;
+        block->createPHIArgument(ty, ValueOwnershipKind::Owned, V);
       });
     }
   }
@@ -2343,7 +2350,7 @@
     }
     
     assert(SGF.getCleanupsDepth() == PatternMatchStmtDepth);
-    
+
     // If we have a shared case with bound decls, then the 0th pattern has the
     // order of variables that are the incoming BB arguments. Setup the VarLocs
     // to point to the incoming args and setup initialization so any args needing
@@ -2355,6 +2362,14 @@
       pattern->forEachVariable([&](VarDecl *V) {
         if (!V->hasName())
           return;
+
+        SILType ty = SGF.getLoweredType(V->getType());
+        if (ty.isAddressOnly(SGF.F.getModule())) {
+          // Just assign SILUndef as a value for address only values.
+          SGF.VarLocs[V].value = SILUndef::get(ty, SGF.F.getModule());
+          return;
+        }
+
         if (V->isLet()) {
           // Just emit a let with cleanup.
           SGF.VarLocs[V].value = caseBB->getArgument(argIndex++);
@@ -2467,6 +2482,35 @@
   variableSwapper();
 }
 
+static void diagnoseMultiPatternCaseAddressOnlyBinding(SILGenFunction &SGF,
+                                                       ValueDecl *decl,
+                                                       SILValue value) {
+  SILLocation loc(decl);
+
+  // Try to figure out why this is an address only type. This is just an
+  // approximation. The targets of interest are:
+  //
+  // 1. existentials.
+  // 2. generics.
+  //
+  // If we are unable to show that we have an existential or generic, we use the
+  // more general unknown_addressonly_type_used_in_multipattern_case diagnostic.
+  unsigned errorPatternIndex = 0;
+  CanType ty = value->getType().getSwiftRValueType();
+
+  if (ty.findIf([&](Type ty) -> bool {
+        return ty->is<ProtocolType>() || ty->is<ProtocolCompositionType>();
+      })) {
+    errorPatternIndex = 1;
+  } else if (ty.findIf(
+                 [&](Type ty) -> bool { return ty->is<ArchetypeType>(); })) {
+    errorPatternIndex = 2;
+  }
+
+  SGF.SGM.diagnose(loc, diag::addressonly_type_used_in_multipattern_case,
+                   errorPatternIndex, ty);
+}
+
 void SILGenFunction::emitSwitchStmt(SwitchStmt *S) {
   DEBUG(llvm::dbgs() << "emitting switch stmt\n";
         S->print(llvm::dbgs());
@@ -2475,7 +2519,8 @@
   emitProfilerIncrement(S);
   JumpDest contDest(contBB, Cleanups.getCleanupsDepth(), CleanupLocation(S));
 
- 
+  bool diagnosedError = false;
+
   auto completionHandler = [&](PatternMatchEmission &emission,
                                ArgArray argArray,
                                ClauseRow &row) {
@@ -2492,33 +2537,56 @@
                                                         row.hasFallthroughTo());
       Cleanups.emitBranchAndCleanups(sharedDest, caseBlock);
     } else if (caseBlock->getCaseLabelItems().size() > 1) {
-      JumpDest sharedDest = emission.getSharedCaseBlockDest(caseBlock,
-                                                            row.hasFallthroughTo());
-      
+      JumpDest sharedDest =
+          emission.getSharedCaseBlockDest(caseBlock, row.hasFallthroughTo());
+
       // Generate the arguments from this row's pattern in the case block's expected order,
       // and keep those arguments from being cleaned up, as we're passing the +1 along to
       // the shared case block dest. (The cleanups still happen, as they are threaded through
       // here messily, but the explicit retains here counteract them, and then the
       // retain/release pair gets optimized out.)
+      //
+      // *NOTE*. We assume that all values are passed as objects for
+      // simplicity. This is ok to do since any time we diagnose an error, we
+      // pass SILUndef to the shared case block. This is to maintain the CFG
+      // structure and thus prevent spurious 'dead code' warnings.
       ArrayRef<CaseLabelItem> labelItems = caseBlock->getCaseLabelItems();
       SmallVector<SILValue, 4> args;
       SmallVector<VarDecl *, 4> expectedVarOrder;
       SmallVector<VarDecl *, 4> Vars;
       labelItems[0].getPattern()->collectVariables(expectedVarOrder);
       row.getCasePattern()->collectVariables(Vars);
-      
+
+      SILModule &M = F.getModule();
       for (auto expected : expectedVarOrder) {
         if (!expected->hasName())
-        continue;
+          continue;
         for (auto var : Vars) {
           if (var->hasName() && var->getName() == expected->getName()) {
-            auto value = B.emitCopyValueOperation(CurrentSILLoc,
-                                                  VarLocs[var].value);
+            SILValue value = VarLocs[var].value;
+            SILType type = value->getType();
+            if (type.isAddressOnly(M)) {
+              if (!diagnosedError)
+                diagnoseMultiPatternCaseAddressOnlyBinding(*this, var, value);
+              diagnosedError = true;
+              break;
+            }
+
+            // If we have a loadable address, perform a load [copy].
+            if (type.isAddress()) {
+              value = B.emitLoadValueOperation(CurrentSILLoc, value,
+                                               LoadOwnershipQualifier::Copy);
+              args.push_back(value);
+              break;
+            }
+
+            value = B.emitCopyValueOperation(CurrentSILLoc, value);
             args.push_back(value);
             break;
           }
         }
       }
+
       Cleanups.emitBranchAndCleanups(sharedDest, caseBlock, args);
     } else {
       // However, if we don't have a fallthrough or a multi-pattern 'case', we
@@ -2544,8 +2612,9 @@
   auto subject = ConsumableManagedValue::forOwned(subjectMV);
 
   // Add a row for each label of each case.
-  // We use std::vector because it supports emplace_back; moving
-  // a ClauseRow is expensive.
+  //
+  // We use std::vector because it supports emplace_back; moving a ClauseRow is
+  // expensive.
   std::vector<ClauseRow> clauseRows;
   clauseRows.reserve(S->getCases().size());
   bool hasFallthrough = false;
@@ -2575,7 +2644,7 @@
 
   switchScope.pop();
 
-  // Emit any shared case blocks we generated.
+  // Then emit the case blocks shared by multiple pattern cases.
   emission.emitSharedCaseBlocks();
 
   // Bookkeeping.
diff --git a/lib/SILGen/SILGenPoly.cpp b/lib/SILGen/SILGenPoly.cpp
index 0434306..34bf0f0 100644
--- a/lib/SILGen/SILGenPoly.cpp
+++ b/lib/SILGen/SILGenPoly.cpp
@@ -316,7 +316,7 @@
   // If we emitted into context, be sure to finish the overall initialization.
   if (tupleInit) {
     tupleInit->finishInitialization(SGF);
-    return RValue();
+    return RValue::forInContext();
   }
 
   return RValue::withPreExplodedElements(outputExpansion, outputTupleType);
@@ -416,13 +416,14 @@
     auto transformOptionalPayload = [&](SILGenFunction &gen,
                                         SILLocation loc,
                                         ManagedValue input,
-                                        SILType loweredResultTy) -> ManagedValue {
+                                        SILType loweredResultTy,
+                                        SGFContext context) -> ManagedValue {
       return transform(input,
                        inputOrigType.getAnyOptionalObjectType(),
                        inputObjectType,
                        outputOrigType.getAnyOptionalObjectType(),
                        outputObjectType,
-                       SGFContext());
+                       context);
     };
 
     return SGF.emitOptionalToOptional(Loc, v, loweredResultTy,
@@ -893,7 +894,7 @@
       }
 
       // Special-case: tuples containing inouts.
-      if (inputTupleType && inputTupleType->hasInOut()) {
+      if (inputTupleType && inputTupleType->hasInOutElement()) {
         // Non-materializable tuple types cannot be bound as generic
         // arguments, so none of the remaining transformations apply.
         // Instead, the outermost tuple layer is exploded, even when
@@ -1077,8 +1078,8 @@
                                     CanTupleType inputTupleType,
                                     AbstractionPattern outputOrigType,
                                     CanTupleType outputTupleType) {
-      assert(!inputTupleType->hasInOut() &&
-             !outputTupleType->hasInOut());
+      assert(!inputTupleType->hasInOutElement() &&
+             !outputTupleType->hasInOutElement());
       assert(inputTupleType->getNumElements() ==
              outputTupleType->getNumElements());
 
@@ -1163,8 +1164,8 @@
       // when witness method thunks re-abstract a non-mutating
       // witness for a mutating requirement. The inout self is just
       // loaded to produce a value in this case.
-      assert(inputSubstType->hasInOut() ||
-             !outputSubstType->hasInOut());
+      assert(inputSubstType->hasInOutElement() ||
+             !outputSubstType->hasInOutElement());
       assert(inputSubstType->getNumElements() ==
              outputSubstType->getNumElements());
 
@@ -1185,8 +1186,8 @@
                                   ManagedValue inputTupleAddr) {
       assert(inputOrigType.isTypeParameter());
       assert(outputOrigType.matchesTuple(outputSubstType));
-      assert(!inputSubstType->hasInOut() &&
-             !outputSubstType->hasInOut());
+      assert(!inputSubstType->hasInOutElement() &&
+             !outputSubstType->hasInOutElement());
       assert(inputSubstType->getNumElements() ==
              outputSubstType->getNumElements());
 
@@ -1232,8 +1233,8 @@
                                  TemporaryInitialization &tupleInit) {
       assert(inputOrigType.matchesTuple(inputSubstType));
       assert(outputOrigType.matchesTuple(outputSubstType));
-      assert(!inputSubstType->hasInOut() &&
-             !outputSubstType->hasInOut());
+      assert(!inputSubstType->hasInOutElement() &&
+             !outputSubstType->hasInOutElement());
       assert(inputSubstType->getNumElements() ==
              outputSubstType->getNumElements());
 
diff --git a/lib/SILGen/SILGenStmt.cpp b/lib/SILGen/SILGenStmt.cpp
index d76e0da..56110a5 100644
--- a/lib/SILGen/SILGenStmt.cpp
+++ b/lib/SILGen/SILGenStmt.cpp
@@ -200,8 +200,8 @@
   
   for (auto &ESD : S->getElements()) {
     
-    if (auto S = ESD.dyn_cast<Stmt*>())
-      if (isa<IfConfigStmt>(S))
+    if (auto D = ESD.dyn_cast<Decl*>())
+      if (isa<IfConfigDecl>(D))
         continue;
     
     // If we ever reach an unreachable point, stop emitting statements and issue
@@ -541,12 +541,6 @@
   SGF.emitStmtCondition(S->getCond(), bodyBB, S);
 }
 
-
-void StmtEmitter::visitIfConfigStmt(IfConfigStmt *S) {
-  // Active members are attached to the enclosing declaration, so there's no
-  // need to walk anything within.
-}
-
 void StmtEmitter::visitWhileStmt(WhileStmt *S) {
   LexicalScope condBufferScope(SGF, S);
 
diff --git a/lib/SILGen/SILGenType.cpp b/lib/SILGen/SILGenType.cpp
index 53c96cf..b728845 100644
--- a/lib/SILGen/SILGenType.cpp
+++ b/lib/SILGen/SILGenType.cpp
@@ -315,7 +315,13 @@
 
     // Serialize the witness table if we're serializing everything with
     // -sil-serialize-all, or if the conformance itself thinks it should be.
-    if (SGM.makeModuleFragile || Conformance->hasFixedLayout())
+    if (SGM.isMakeModuleFragile())
+      Serialized = IsSerialized;
+
+    auto *nominal = Conformance->getType()->getAnyNominal();
+    if (nominal->hasFixedLayout() &&
+        proto->getEffectiveAccess() >= Accessibility::Public &&
+        nominal->getEffectiveAccess() >= Accessibility::Public)
       Serialized = IsSerialized;
 
     // Not all protocols use witness tables; in this case we just skip
@@ -425,7 +431,7 @@
       // then SILGen gives the member private linkage, ignoring the more
       // visible accessibility it was given in the AST.
       witnessLinkage = SILLinkage::Public;
-      witnessSerialized = (SGM.makeModuleFragile
+      witnessSerialized = (SGM.isMakeModuleFragile()
                            ? IsSerialized
                            : IsNotSerialized);
     } else {
diff --git a/lib/SILGen/SpecializedEmitter.h b/lib/SILGen/SpecializedEmitter.h
index ef880dd..c6ceabe 100644
--- a/lib/SILGen/SpecializedEmitter.h
+++ b/lib/SILGen/SpecializedEmitter.h
@@ -43,7 +43,6 @@
                                      SILLocation,
                                      SubstitutionList,
                                      Expr *argument,
-                                     CanFunctionType formalApplyType,
                                      SGFContext);
 
   /// A special function for emitting a call after the arguments
@@ -52,7 +51,6 @@
                                     SILLocation,
                                     SubstitutionList,
                                     ArrayRef<ManagedValue>,
-                                    CanFunctionType formalApplyType,
                                     SGFContext);
 
   enum class Kind {
diff --git a/lib/SILOptimizer/Analysis/AccessSummaryAnalysis.cpp b/lib/SILOptimizer/Analysis/AccessSummaryAnalysis.cpp
new file mode 100644
index 0000000..6f92638
--- /dev/null
+++ b/lib/SILOptimizer/Analysis/AccessSummaryAnalysis.cpp
@@ -0,0 +1,331 @@
+//===--- AccessSummaryAnalysis.cpp - SIL Access Summary Analysis ----------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+#define DEBUG_TYPE "sil-access-summary-analysis"
+#include "swift/SIL/SILArgument.h"
+#include "swift/SILOptimizer/Analysis/AccessSummaryAnalysis.h"
+#include "swift/SILOptimizer/Analysis/FunctionOrder.h"
+#include "swift/SILOptimizer/PassManager/PassManager.h"
+
+using namespace swift;
+
+void AccessSummaryAnalysis::processFunction(FunctionInfo *info,
+                                            FunctionOrder &order) {
+  // Does the summary need to be recomputed?
+  if (order.prepareForVisiting(info))
+    return;
+
+  // Compute function summary on a per-argument basis.
+  unsigned index = 0;
+  for (SILArgument *arg : info->getFunction()->getArguments()) {
+    FunctionSummary &functionSummary = info->getSummary();
+    ArgumentSummary &argSummary =
+        functionSummary.getAccessForArgument(index);
+    index++;
+
+    auto *functionArg = cast<SILFunctionArgument>(arg);
+    // Only summarize @inout_aliasable arguments.
+    SILArgumentConvention convention =
+        functionArg->getArgumentConvention().Value;
+    if (convention != SILArgumentConvention::Indirect_InoutAliasable)
+      continue;
+
+    processArgument(info, functionArg, argSummary, order);
+  }
+}
+
+/// Track uses of the arguments, recording in the summary any accesses
+/// started by a begin_access and any flows of the arguments to other
+/// functions.
+void AccessSummaryAnalysis::processArgument(FunctionInfo *info,
+                                             SILFunctionArgument *argument,
+                                             ArgumentSummary &summary,
+                                             FunctionOrder &order) {
+  unsigned argumentIndex = argument->getIndex();
+
+  // Use a worklist to track argument uses to be processed.
+  llvm::SmallVector<Operand *, 32> worklist;
+
+  // Start by adding the immediate uses of the argument to the worklist.
+  worklist.append(argument->use_begin(), argument->use_end());
+
+  // Iterate to follow uses of the arguments.
+  while (!worklist.empty()) {
+    Operand *operand = worklist.pop_back_val();
+    SILInstruction *user = operand->getUser();
+
+    switch (user->getKind()) {
+    case ValueKind::BeginAccessInst: {
+      auto *BAI = cast<BeginAccessInst>(user);
+      summary.mergeWith(BAI->getAccessKind(), BAI->getLoc());
+      // We don't add the users of the begin_access to the worklist because
+      // even if these users eventually begin an access to the address
+      // or a projection from it, that access can't begin more exclusive
+      // access than this access -- otherwise it will be diagnosed
+      // elsewhere.
+      break;
+    }
+    case ValueKind::EndUnpairedAccessInst:
+      // Don't diagnose unpaired access statically.
+      assert(cast<EndUnpairedAccessInst>(user)->getEnforcement() ==
+             SILAccessEnforcement::Dynamic);
+      break;
+    case ValueKind::StructElementAddrInst:
+    case ValueKind::TupleElementAddrInst:
+      // Eventually we'll summarize individual struct elements separately.
+      // For now an access to a part of the struct is treated as an access
+      // to the whole struct.
+      worklist.append(user->use_begin(), user->use_end());
+      break;
+    case ValueKind::DebugValueAddrInst:
+    case ValueKind::AddressToPointerInst:
+      // Ignore these uses, they don't affect formal accesses.
+      break;
+    case ValueKind::PartialApplyInst:
+      processPartialApply(info, argumentIndex, cast<PartialApplyInst>(user),
+                          operand, order);
+      break;
+    case ValueKind::ApplyInst:
+      processFullApply(info, argumentIndex, cast<ApplyInst>(user), operand,
+                       order);
+      break;
+    case ValueKind::TryApplyInst:
+      processFullApply(info, argumentIndex, cast<TryApplyInst>(user), operand,
+                       order);
+      break;
+    case ValueKind::CopyAddrInst:
+    case ValueKind::ExistentialMetatypeInst:
+    case ValueKind::LoadInst:
+    case ValueKind::OpenExistentialAddrInst:
+    case ValueKind::ProjectBlockStorageInst:
+      // These likely represent scenarios in which we're not generating
+      // begin access markers. Ignore these for now. But we really should
+      // add SIL verification to ensure all loads and stores have associated
+      // access markers.
+      break;
+    default:
+      // TODO: These requirements should be checked for in the SIL verifier.
+      llvm_unreachable("Unrecognized argument use");
+    }
+  }
+}
+
+void AccessSummaryAnalysis::processPartialApply(FunctionInfo *callerInfo,
+                                                unsigned callerArgumentIndex,
+                                                PartialApplyInst *apply,
+                                                Operand *applyArgumentOperand,
+                                                FunctionOrder &order) {
+  SILFunction *calleeFunction = apply->getCalleeFunction();
+  assert(calleeFunction && !calleeFunction->empty() &&
+         "Missing definition of noescape closure?");
+
+  // Make sure the partial_apply is not calling the result of another
+  // partial_apply.
+  assert(isa<FunctionRefInst>(apply->getCallee()) &&
+         "Noescape partial apply of non-functionref?");
+
+  // Make sure the partial_apply is used by an apply and not another
+  // partial_apply
+  SILInstruction *user = apply->getSingleUse()->getUser();
+  assert((isa<ApplyInst>(user) || isa<TryApplyInst>(user) ||
+          isa<ConvertFunctionInst>(user)) &&
+         "noescape partial_apply has non-apply use!");
+  (void)user;
+
+  // The arguments to partial_apply are a suffix of the arguments to the
+  // the actually-called function. Translate the index of the argument to
+  // the partial_apply into to the corresponding index into the arguments of
+  // the called function.
+
+  // The first operand to partial_apply is the called function, so adjust the
+  // operand number to get the argument.
+  unsigned partialApplyArgumentIndex =
+      applyArgumentOperand->getOperandNumber() - 1;
+
+  // The argument index in the called function.
+  unsigned argumentIndex = calleeFunction->getArguments().size() -
+                           apply->getNumArguments() + partialApplyArgumentIndex;
+  processCall(callerInfo, callerArgumentIndex, calleeFunction, argumentIndex,
+              order);
+}
+
+void AccessSummaryAnalysis::processFullApply(FunctionInfo *callerInfo,
+                                             unsigned callerArgumentIndex,
+                                             FullApplySite apply,
+                                             Operand *argumentOperand,
+                                             FunctionOrder &order) {
+  unsigned operandNumber = argumentOperand->getOperandNumber();
+  assert(operandNumber > 0 && "Summarizing apply for non-argument?");
+
+  unsigned calleeArgumentIndex = operandNumber - 1;
+  SILFunction *callee = apply.getCalleeFunction();
+  // We can't apply a summary for function whose body we can't see.
+  // Since user-provided closures are always in the same module as their callee
+  // This likely indicates a missing begin_access before an open-coded
+  // call.
+  if (!callee || callee->empty())
+    return;
+
+  processCall(callerInfo, callerArgumentIndex, callee, calleeArgumentIndex,
+              order);
+}
+
+void AccessSummaryAnalysis::processCall(FunctionInfo *callerInfo,
+                                        unsigned callerArgumentIndex,
+                                        SILFunction *callee,
+                                        unsigned argumentIndex,
+                                        FunctionOrder &order) {
+  // Record the flow of an argument from  the caller to the callee so that
+  // the interprocedural analysis can iterate to a fixpoint.
+  FunctionInfo *calleeInfo = getFunctionInfo(callee);
+  ArgumentFlow flow = {callerArgumentIndex, argumentIndex, calleeInfo};
+  callerInfo->recordFlow(flow);
+  if (!calleeInfo->isVisited()) {
+    processFunction(calleeInfo, order);
+    order.tryToSchedule(calleeInfo);
+  }
+
+  propagateFromCalleeToCaller(callerInfo, flow);
+}
+
+bool AccessSummaryAnalysis::ArgumentSummary::mergeWith(SILAccessKind otherKind,
+                                                        SILLocation otherLoc) {
+  // In the lattice, a modification-like accesses subsume a read access or no
+  // access.
+  if (!Kind.hasValue() ||
+      (*Kind == SILAccessKind::Read && otherKind != SILAccessKind::Read)) {
+    Kind = otherKind;
+    AccessLoc = otherLoc;
+    return true;
+  }
+
+  return false;
+}
+
+bool AccessSummaryAnalysis::ArgumentSummary::mergeWith(
+    const ArgumentSummary &other) {
+  if (other.Kind.hasValue())
+    return mergeWith(*other.Kind, other.AccessLoc);
+  return false;
+}
+
+void AccessSummaryAnalysis::recompute(FunctionInfo *initial) {
+  allocNewUpdateID();
+
+  FunctionOrder order(getCurrentUpdateID());
+
+  // Summarize the function and its callees.
+  processFunction(initial, order);
+
+  // Build the bottom-up order.
+  order.tryToSchedule(initial);
+  order.finishScheduling();
+
+  // Iterate the interprocedural analysis to a fixed point.
+  bool needAnotherIteration;
+  do {
+    needAnotherIteration = false;
+    for (FunctionInfo *calleeInfo : order) {
+      for (const auto &callerEntry : calleeInfo->getCallers()) {
+        assert(callerEntry.isValid());
+        if (!order.wasRecomputedWithCurrentUpdateID(calleeInfo))
+          continue;
+
+        FunctionInfo *callerInfo = callerEntry.Caller;
+
+        // Propagate from callee to caller.
+        for (const auto &argumentFlow : callerInfo->getArgumentFlows()) {
+          if (argumentFlow.CalleeFunctionInfo != calleeInfo)
+            continue;
+
+          bool changed = propagateFromCalleeToCaller(callerInfo, argumentFlow);
+          if (changed && !callerInfo->isScheduledAfter(calleeInfo)) {
+            needAnotherIteration = true;
+          }
+        }
+      }
+    }
+  } while (needAnotherIteration);
+}
+
+StringRef AccessSummaryAnalysis::ArgumentSummary::getDescription() const {
+  if (Optional<SILAccessKind> kind = getAccessKind()) {
+    return getSILAccessKindName(*kind);
+  }
+
+  return "none";
+}
+
+bool AccessSummaryAnalysis::propagateFromCalleeToCaller(
+    FunctionInfo *callerInfo, ArgumentFlow flow) {
+  // For a given flow from a caller's argument to a callee's argument,
+  // propagate the argument summary information to the caller.
+
+  FunctionInfo *calleeInfo = flow.CalleeFunctionInfo;
+  const auto &calleeArgument =
+      calleeInfo->getSummary().getAccessForArgument(flow.CalleeArgumentIndex);
+  auto &callerArgument =
+      callerInfo->getSummary().getAccessForArgument(flow.CallerArgumentIndex);
+
+  bool changed = callerArgument.mergeWith(calleeArgument);
+  return changed;
+}
+
+AccessSummaryAnalysis::FunctionInfo *
+AccessSummaryAnalysis::getFunctionInfo(SILFunction *F) {
+  FunctionInfo *&FInfo = FunctionInfos[F];
+  if (!FInfo) {
+    FInfo = new (Allocator.Allocate()) FunctionInfo(F);
+  }
+  return FInfo;
+}
+
+const AccessSummaryAnalysis::FunctionSummary &
+AccessSummaryAnalysis::getOrCreateSummary(SILFunction *fn) {
+  FunctionInfo *info = getFunctionInfo(fn);
+  if (!info->isValid())
+    recompute(info);
+
+  return info->getSummary();
+}
+
+void AccessSummaryAnalysis::AccessSummaryAnalysis::invalidate() {
+  FunctionInfos.clear();
+  Allocator.DestroyAll();
+  delete SubPathTrie;
+  SubPathTrie = new IndexTrieNode();
+}
+
+void AccessSummaryAnalysis::invalidate(SILFunction *F, InvalidationKind K) {
+  FunctionInfos.erase(F);
+}
+
+SILAnalysis *swift::createAccessSummaryAnalysis(SILModule *M) {
+  return new AccessSummaryAnalysis();
+}
+
+raw_ostream &swift::
+operator<<(raw_ostream &os,
+           const AccessSummaryAnalysis::FunctionSummary &summary) {
+  unsigned argCount = summary.getArgumentCount();
+  os << "(";
+
+  if (argCount > 0) {
+    os << summary.getAccessForArgument(0).getDescription();
+    for (unsigned i = 1; i < argCount; i++) {
+      os << ",  " << summary.getAccessForArgument(i).getDescription();
+    }
+  }
+
+  os << ")";
+  return os;
+}
diff --git a/lib/SILOptimizer/Analysis/CMakeLists.txt b/lib/SILOptimizer/Analysis/CMakeLists.txt
index c401a24..fd68ea9 100644
--- a/lib/SILOptimizer/Analysis/CMakeLists.txt
+++ b/lib/SILOptimizer/Analysis/CMakeLists.txt
@@ -1,5 +1,6 @@
 set(ANALYSIS_SOURCES
   Analysis/ARCAnalysis.cpp
+  Analysis/AccessSummaryAnalysis.cpp
   Analysis/AliasAnalysis.cpp
   Analysis/Analysis.cpp
   Analysis/ArraySemantic.cpp
diff --git a/lib/SILOptimizer/IPO/CapturePromotion.cpp b/lib/SILOptimizer/IPO/CapturePromotion.cpp
index f8b8054..b8aa3f4 100644
--- a/lib/SILOptimizer/IPO/CapturePromotion.cpp
+++ b/lib/SILOptimizer/IPO/CapturePromotion.cpp
@@ -676,13 +676,21 @@
   if (SILValue Val = getProjectBoxMappedVal(SEAI->getOperand())) {
     // Loads of a struct_element_addr of an argument get replaced with a
     // struct_extract of the new passed in value. The value should be borrowed
-    // already.
+    // already, so we can just extract the value.
     SILBuilderWithPostProcess<ClosureCloner, 1> B(this, LI);
     assert(B.getFunction().hasUnqualifiedOwnership() ||
            Val.getOwnershipKind().isTrivialOr(ValueOwnershipKind::Guaranteed));
-    SILValue V =
+    Val =
         B.emitStructExtract(LI->getLoc(), Val, SEAI->getField(), LI->getType());
-    ValueMap.insert(std::make_pair(LI, V));
+
+    // If we were performing a load [copy], then we need to a perform a copy
+    // here since when cloning, we do not eliminate the destroy on the copied
+    // value.
+    if (LI->getFunction()->hasQualifiedOwnership()
+        && LI->getOwnershipQualifier() == LoadOwnershipQualifier::Copy) {
+      Val = getBuilder().createCopyValue(LI->getLoc(), Val);
+    }
+    ValueMap.insert(std::make_pair(LI, Val));
     return;
   }
   SILCloner<ClosureCloner>::visitLoadInst(LI);
@@ -694,6 +702,13 @@
   return Entry.getArgument(Index);
 }
 
+static bool isNonMutatingLoad(SILInstruction *I) {
+  auto *LI = dyn_cast<LoadInst>(I);
+  if (!LI)
+    return false;
+  return LI->getOwnershipQualifier() != LoadOwnershipQualifier::Take;
+}
+
 /// \brief Given a partial_apply instruction and the argument index into its
 /// callee's argument list of a box argument (which is followed by an argument
 /// for the address of the box's contents), return true if the closure is known
@@ -701,7 +716,7 @@
 static bool
 isNonMutatingCapture(SILArgument *BoxArg) {
   SmallVector<ProjectBoxInst*, 2> Projections;
-  
+
   // Conservatively do not allow any use of the box argument other than a
   // strong_release or projection, since this is the pattern expected from
   // SILGen.
@@ -724,27 +739,30 @@
   // TODO: This seems overly limited.  Why not projections of tuples and other
   // stuff?  Also, why not recursive struct elements?  This should be a helper
   // function that mirrors isNonEscapingUse.
-  auto checkAddrUse = [](SILInstruction *AddrInst) {
+  auto isAddrUseMutating = [](SILInstruction *AddrInst) {
     if (auto *SEAI = dyn_cast<StructElementAddrInst>(AddrInst)) {
-      for (auto *UseOper : SEAI->getUses()) {
-        if (isa<LoadInst>(UseOper->getUser()))
-          return true;
-      }
-    } else if (isa<LoadInst>(AddrInst) || isa<DebugValueAddrInst>(AddrInst)
-               || isa<MarkFunctionEscapeInst>(AddrInst)
-               || isa<EndAccessInst>(AddrInst)) {
-      return true;
+      return all_of(SEAI->getUses(),
+                    [](Operand *Op) -> bool {
+                      return isNonMutatingLoad(Op->getUser());
+                    });
     }
-    return false;
+
+    return isNonMutatingLoad(AddrInst) || isa<DebugValueAddrInst>(AddrInst)
+           || isa<MarkFunctionEscapeInst>(AddrInst)
+           || isa<EndAccessInst>(AddrInst);
   };
+
   for (auto *Projection : Projections) {
     for (auto *UseOper : Projection->getUses()) {
       if (auto *Access = dyn_cast<BeginAccessInst>(UseOper->getUser())) {
         for (auto *AccessUseOper : Access->getUses()) {
-          if (!checkAddrUse(AccessUseOper->getUser()))
+          if (!isAddrUseMutating(AccessUseOper->getUser()))
             return false;
         }
-      } else if (!checkAddrUse(UseOper->getUser()))
+        continue;
+      }
+
+      if (!isAddrUseMutating(UseOper->getUser()))
         return false;
     }
   }
diff --git a/lib/SILOptimizer/IPO/ClosureSpecializer.cpp b/lib/SILOptimizer/IPO/ClosureSpecializer.cpp
index 9ccab94..8715fc1 100644
--- a/lib/SILOptimizer/IPO/ClosureSpecializer.cpp
+++ b/lib/SILOptimizer/IPO/ClosureSpecializer.cpp
@@ -49,9 +49,9 @@
 ///    that the release occurs in the epilog after any retains associated with
 ///    @owned return values.
 ///
-/// 3. Handling addresses. We currently do not handle address types. We can in
-///    the future by introducing alloc_stacks.
-///
+/// 3. We do not support specialization of closures with arguments passed using
+///    any indirect calling conventions besides @inout and @inout_aliasable.
+///    This is a temporary limitation.
 //===----------------------------------------------------------------------===//
 
 #define DEBUG_TYPE "closure-specialization"
@@ -247,7 +247,8 @@
   }
 
   /// Extend the lifetime of 'Arg' to the lifetime of the closure.
-  void extendArgumentLifetime(SILValue Arg) const;
+  void extendArgumentLifetime(SILValue Arg,
+                              SILArgumentConvention ArgConvention) const;
 };
 } // end anonymous namespace
 
@@ -268,6 +269,13 @@
   return CInfo->Closure;
 }
 
+static bool isNonInoutIndirectSILArgument(SILValue Arg,
+                                          SILArgumentConvention ArgConvention) {
+  return !Arg->getType().isObject() && ArgConvention.isIndirectConvention() &&
+         ArgConvention != SILArgumentConvention::Indirect_Inout &&
+         ArgConvention != SILArgumentConvention::Indirect_InoutAliasable;
+}
+
 /// Update the callsite to pass in the correct arguments.
 static void rewriteApplyInst(const CallSiteDescriptor &CSDesc,
                              SILFunction *NewF) {
@@ -290,14 +298,34 @@
   // implicit release of all captured arguments that occurs when the partial
   // apply is destroyed.
   SILModule &M = NewF->getModule();
+  auto ClosureCalleeConv = CSDesc.getClosureCallee()->getConventions();
+  unsigned ClosureArgIdx =
+      ClosureCalleeConv.getNumSILArguments() - CSDesc.getNumArguments();
   for (auto Arg : CSDesc.getArguments()) {
-    NewArgs.push_back(Arg);
-
     SILType ArgTy = Arg->getType();
 
     // If our argument is of trivial type, continue...
-    if (ArgTy.isTrivial(M))
+    if (ArgTy.isTrivial(M)) {
+      NewArgs.push_back(Arg);
+      ++ClosureArgIdx;
       continue;
+    }
+
+    auto ArgConvention =
+        ClosureCalleeConv.getSILArgumentConvention(ClosureArgIdx);
+
+    // Non-inout indirect arguments are not supported yet.
+    assert(ArgTy.isObject() ||
+           !isNonInoutIndirectSILArgument(Arg, ArgConvention));
+
+    // If argument is not an object and it is an inout parameter,
+    // continue...
+    if (!ArgTy.isObject() &&
+        !isNonInoutIndirectSILArgument(Arg, ArgConvention)) {
+      NewArgs.push_back(Arg);
+      ++ClosureArgIdx;
+      continue;
+    }
 
     // TODO: When we support address types, this code path will need to be
     // updated.
@@ -340,15 +368,21 @@
     if (AI.getParent() != Closure->getParent()) {
       // Emit the retain and release that keeps the argument life across the
       // callee using the closure.
-      CSDesc.extendArgumentLifetime(Arg);
+      CSDesc.extendArgumentLifetime(Arg, ArgConvention);
 
-      // Emit the retain that matches the captured argument by the partial_apply
+      // Emit the retain that matches the captured argument by the
+      // partial_apply
       // in the callee that is consumed by the partial_apply.
       Builder.setInsertionPoint(AI.getInstruction());
-      Builder.createRetainValue(Closure->getLoc(), Arg, Builder.getDefaultAtomicity());
+      Builder.createRetainValue(Closure->getLoc(), Arg,
+                                Builder.getDefaultAtomicity());
     } else {
-      Builder.createRetainValue(Closure->getLoc(), Arg, Builder.getDefaultAtomicity());
+      Builder.createRetainValue(Closure->getLoc(), Arg,
+                                Builder.getDefaultAtomicity());
     }
+
+    NewArgs.push_back(Arg);
+    ++ClosureArgIdx;
   }
 
   Builder.setInsertionPoint(AI.getInstruction());
@@ -409,16 +443,27 @@
   return Mangler.mangle();
 }
 
-void CallSiteDescriptor::extendArgumentLifetime(SILValue Arg) const {
+void CallSiteDescriptor::extendArgumentLifetime(
+    SILValue Arg, SILArgumentConvention ArgConvention) const {
   assert(!CInfo->LifetimeFrontier.empty() &&
          "Need a post-dominating release(s)");
 
+  auto ArgTy = Arg->getType();
+
   // Extend the lifetime of a captured argument to cover the callee.
   SILBuilderWithScope Builder(getClosure());
-  Builder.createRetainValue(getClosure()->getLoc(), Arg, Builder.getDefaultAtomicity());
-  for (auto *I : CInfo->LifetimeFrontier) {
-    Builder.setInsertionPoint(I);
-    Builder.createReleaseValue(getClosure()->getLoc(), Arg, Builder.getDefaultAtomicity());
+
+  // Indirect non-inout arguments are not supported yet.
+  assert(!isNonInoutIndirectSILArgument(Arg, ArgConvention));
+
+  if (ArgTy.isObject()) {
+    Builder.createRetainValue(getClosure()->getLoc(), Arg,
+                              Builder.getDefaultAtomicity());
+    for (auto *I : CInfo->LifetimeFrontier) {
+      Builder.setInsertionPoint(I);
+      Builder.createReleaseValue(getClosure()->getLoc(), Arg,
+                                 Builder.getDefaultAtomicity());
+    }
   }
 }
 
@@ -437,12 +482,6 @@
     if (PAI->hasSubstitutions())
       return false;
 
-    // If any arguments are not objects, return false. This is a temporary
-    // limitation.
-    for (SILValue Arg : PAI->getArguments())
-      if (!Arg->getType().isObject())
-        return false;
-
     // Ok, it is a closure we support, set Callee.
     Callee = PAI->getCallee();
 
@@ -459,6 +498,31 @@
   if (!FRI)
     return false;
 
+  if (auto *PAI = dyn_cast<PartialApplyInst>(Closure)) {
+    // Bail if any of the arguments are passed by address and
+    // are not @inout.
+    // This is a temporary limitation.
+    auto ClosureCallee = FRI->getReferencedFunction();
+    assert(ClosureCallee);
+    auto ClosureCalleeConv = ClosureCallee->getConventions();
+    unsigned ClosureArgIdx =
+        ClosureCalleeConv.getNumSILArguments() - PAI->getNumArguments();
+    for (auto Arg : PAI->getArguments()) {
+      SILType ArgTy = Arg->getType();
+      // If our argument is an object, continue...
+      if (ArgTy.isObject()) {
+        ++ClosureArgIdx;
+        continue;
+      }
+      auto ArgConvention =
+          ClosureCalleeConv.getSILArgumentConvention(ClosureArgIdx);
+      if (ArgConvention != SILArgumentConvention::Indirect_Inout &&
+          ArgConvention != SILArgumentConvention::Indirect_InoutAliasable)
+        return false;
+      ++ClosureArgIdx;
+    }
+  }
+
   // Otherwise, we do support specializing this closure.
   return true;
 }
@@ -503,23 +567,29 @@
   SILModule &M = ClosureUser->getModule();
 
   // Captured parameters are always appended to the function signature. If the
-  // type of the captured argument is trivial, pass the argument as
-  // Direct_Unowned. Otherwise pass it as Direct_Owned.
+  // type of the captured argument is:
+  // - direct and trivial, pass the argument as Direct_Unowned.
+  // - direct and non-trivial, pass the argument as Direct_Owned.
+  // - indirect, pass the argument using the same parameter convention as in the
+  // original closure.
   //
   // We use the type of the closure here since we allow for the closure to be an
   // external declaration.
   unsigned NumTotalParams = ClosedOverFunConv.getNumParameters();
   unsigned NumNotCaptured = NumTotalParams - CallSiteDesc.getNumArguments();
   for (auto &PInfo : ClosedOverFunConv.getParameters().slice(NumNotCaptured)) {
-    if (ClosedOverFunConv.getSILType(PInfo).isTrivial(M)) {
-      SILParameterInfo NewPInfo(PInfo.getType(),
-                                ParameterConvention::Direct_Unowned);
-      NewParameterInfoList.push_back(NewPInfo);
-      continue;
+    ParameterConvention ParamConv;
+    if (PInfo.isFormalIndirect()) {
+      ParamConv = PInfo.getConvention();
+      assert(ParamConv == ParameterConvention::Indirect_Inout ||
+             ParamConv == ParameterConvention::Indirect_InoutAliasable);
+    } else {
+      ParamConv = ClosedOverFunConv.getSILType(PInfo).isTrivial(M)
+                      ? ParameterConvention::Direct_Unowned
+                      : ParameterConvention::Direct_Owned;
     }
 
-    SILParameterInfo NewPInfo(PInfo.getType(),
-                              ParameterConvention::Direct_Owned);
+    SILParameterInfo NewPInfo(PInfo.getType(), ParamConv);
     NewParameterInfoList.push_back(NewPInfo);
   }
 
@@ -825,8 +895,12 @@
         //
         // We need this to make sure that we insert a release in the appropriate
         // locations to balance the +1 from the creation of the partial apply.
+        //
+        // However, thin_to_thick_function closures don't have a context and
+        // don't need to be released.
         llvm::TinyPtrVector<SILBasicBlock *> NonFailureExitBBs;
         if (ClosureParamInfo.isGuaranteed() &&
+            !isa<ThinToThickFunctionInst>(&II) &&
             !findAllNonFailureExitBBs(ApplyCallee, NonFailureExitBBs)) {
           continue;
         }
diff --git a/lib/SILOptimizer/IPO/EagerSpecializer.cpp b/lib/SILOptimizer/IPO/EagerSpecializer.cpp
index 1575e26..c549b0e 100644
--- a/lib/SILOptimizer/IPO/EagerSpecializer.cpp
+++ b/lib/SILOptimizer/IPO/EagerSpecializer.cpp
@@ -102,8 +102,7 @@
       // expects.
       auto *TupleI = cast<SILInstruction>(RetInst->getOperand(0));
       if (TupleI->hasOneUse()) {
-        TupleI->removeFromParent();
-        RetBB->insert(RetInst, TupleI);
+        TupleI->moveBefore(RetInst);
       } else {
         TupleI = TupleI->clone(RetInst);
         RetInst->setOperand(0, TupleI);
@@ -704,9 +703,13 @@
         dbgs() << "  Specialize Attr:";
         SA.print(dbgs()); dbgs() << "\n");
 
+  IsSerialized_t Serialized = IsNotSerialized;
+  if (GenericFunc->isSerialized())
+    Serialized = IsSerializable;
+
   GenericFuncSpecializer
         FuncSpecializer(GenericFunc, ReInfo.getClonerParamSubstitutions(),
-                        GenericFunc->isSerialized(), ReInfo);
+                        Serialized, ReInfo);
 
   SILFunction *NewFunc = FuncSpecializer.trySpecialization();
   if (!NewFunc)
diff --git a/lib/SILOptimizer/Mandatory/DIMemoryUseCollectorOwnership.cpp b/lib/SILOptimizer/Mandatory/DIMemoryUseCollectorOwnership.cpp
index 49ef519..59b2953 100644
--- a/lib/SILOptimizer/Mandatory/DIMemoryUseCollectorOwnership.cpp
+++ b/lib/SILOptimizer/Mandatory/DIMemoryUseCollectorOwnership.cpp
@@ -1166,6 +1166,28 @@
   return nullptr;
 }
 
+static bool isUninitializedMetatypeInst(SILInstruction *I) {
+  // A simple reference to "type(of:)" is always fine,
+  // even if self is uninitialized.
+  if (isa<ValueMetatypeInst>(I))
+    return true;
+
+  // Sometimes we get an upcast whose sole usage is a value_metatype_inst,
+  // for example when calling a convenience initializer from a superclass.
+  if (auto *UCI = dyn_cast<UpcastInst>(I)) {
+    for (auto *UI : UCI->getUses()) {
+      auto *User = UI->getUser();
+      if (isa<ValueMetatypeInst>(User))
+        continue;
+      return false;
+    }
+
+    return true;
+  }
+
+  return false;
+}
+
 /// isSelfInitUse - Return true if this apply_inst is a call to self.init.
 static bool isSelfInitUse(SILInstruction *I) {
   // If we're reading a .sil file, treat a call to "selfinit" as a
@@ -1354,11 +1376,8 @@
       Kind = DIUseKind::SelfInit;
       UseInfo.trackFailableInitCall(TheMemory, User);
     }
-
-    // If this is a ValueMetatypeInst, this is a simple reference
-    // to "type(of:)", which is always fine, even if self is
-    // uninitialized.
-    if (isa<ValueMetatypeInst>(User))
+    
+    if (isUninitializedMetatypeInst(User))
       continue;
 
     // If this is a partial application of self, then this is an escape point
@@ -1630,11 +1649,8 @@
       }
     }
 
-    // A simple reference to "type(of:)" is always fine,
-    // even if self is uninitialized.
-    if (isa<ValueMetatypeInst>(User)) {
+    if (isUninitializedMetatypeInst(User))
       continue;
-    }
 
     UseInfo.trackUse(DIMemoryUse(User, Kind, 0, 1));
   }
diff --git a/lib/SILOptimizer/Mandatory/DefiniteInitialization.cpp b/lib/SILOptimizer/Mandatory/DefiniteInitialization.cpp
index f2fb550..6a93b38 100644
--- a/lib/SILOptimizer/Mandatory/DefiniteInitialization.cpp
+++ b/lib/SILOptimizer/Mandatory/DefiniteInitialization.cpp
@@ -2237,8 +2237,7 @@
       }
       case DIKind::Yes:
         // super.init() already called, just release the value.
-        Release->removeFromParent();
-        B.getInsertionBB()->insert(B.getInsertionPoint(), Release);
+        Release->moveBefore(&*B.getInsertionPoint());
         continue;
       }
     }
diff --git a/lib/SILOptimizer/Mandatory/DiagnoseStaticExclusivity.cpp b/lib/SILOptimizer/Mandatory/DiagnoseStaticExclusivity.cpp
index 074211f..957ce58 100644
--- a/lib/SILOptimizer/Mandatory/DiagnoseStaticExclusivity.cpp
+++ b/lib/SILOptimizer/Mandatory/DiagnoseStaticExclusivity.cpp
@@ -35,6 +35,7 @@
 #include "swift/SIL/SILArgument.h"
 #include "swift/SIL/SILInstruction.h"
 #include "swift/SIL/Projection.h"
+#include "swift/SILOptimizer/Analysis/AccessSummaryAnalysis.h"
 #include "swift/SILOptimizer/Analysis/PostOrderAnalysis.h"
 #include "swift/SILOptimizer/PassManager/Passes.h"
 #include "swift/SILOptimizer/PassManager/Transforms.h"
@@ -162,8 +163,32 @@
   }
 };
 
-/// Models the in-progress accesses for a single storage location.
-class AccessInfo {
+/// Records an access to an address and the single subpath of projections
+/// that was performed on the address, if such a single subpath exists.
+class RecordedAccess {
+private:
+  BeginAccessInst *Inst;
+  const IndexTrieNode *SubPath;
+
+public:
+  RecordedAccess(BeginAccessInst *BAI, const IndexTrieNode *SubPath)
+      : Inst(BAI), SubPath(SubPath) {}
+
+  BeginAccessInst *getInstruction() const { return Inst; }
+
+  SILAccessKind getAccessKind() const { return Inst->getAccessKind(); }
+
+  SILLocation getAccessLoc() const { return Inst->getLoc(); }
+
+  const IndexTrieNode *getSubPath() const { return SubPath; }
+};
+
+/// Records the in-progress accesses to a given sub path.
+class SubAccessInfo {
+public:
+  SubAccessInfo(const IndexTrieNode *P) : Path(P) {}
+
+  const IndexTrieNode *Path;
 
   /// The number of in-progress 'read' accesses (that is 'begin_access [read]'
   /// instructions that have not yet had the corresponding 'end_access').
@@ -174,36 +199,14 @@
 
   /// The instruction that began the first in-progress access to the storage
   /// location. Used for diagnostic purposes.
-  const BeginAccessInst *FirstAccess = nullptr;
+  Optional<RecordedAccess> FirstAccess = None;
 
 public:
-  // Returns true when beginning an access of the given Kind will
-  // result in a conflict with a previous access.
-  bool conflictsWithAccess(SILAccessKind Kind) {
-    if (Kind == SILAccessKind::Read) {
-      // A read conflicts with any non-read accesses.
-      return NonReads > 0;
-    }
-
-    // A non-read access conflicts with any other access.
-    return NonReads > 0 || Reads > 0;
-  }
-
-  /// Returns true when there must have already been a conflict diagnosed
-  /// for an in-progress access. Used to suppress multiple diagnostics for
-  /// the same underlying access violation.
-  bool alreadyHadConflict() {
-    return (NonReads > 0 && Reads > 0) || (NonReads > 1);
-  }
-
-  /// Returns true when there are any accesses to this location in progress.
-  bool hasAccessesInProgress() { return Reads > 0 || NonReads > 0; }
-
   /// Increment the count for given access.
-  void beginAccess(const BeginAccessInst *BAI) {
+  void beginAccess(BeginAccessInst *BAI, const IndexTrieNode *SubPath) {
     if (!FirstAccess) {
       assert(Reads == 0 && NonReads == 0);
-      FirstAccess = BAI;
+      FirstAccess = RecordedAccess(BAI, SubPath);
     }
 
     if (BAI->getAccessKind() == SILAccessKind::Read)
@@ -213,7 +216,7 @@
   }
 
   /// Decrement the count for given access.
-  void endAccess(const EndAccessInst *EAI) {
+  void endAccess(EndAccessInst *EAI) {
     if (EAI->getBeginAccess()->getAccessKind() == SILAccessKind::Read)
       Reads--;
     else
@@ -222,11 +225,121 @@
     // If all open accesses are now ended, forget the location of the
     // first access.
     if (Reads == 0 && NonReads == 0)
-      FirstAccess = nullptr;
+      FirstAccess = None;
   }
 
-  /// Returns the instruction that began the first in-progress access.
-  const BeginAccessInst *getFirstAccess() { return FirstAccess; }
+  /// Returns true when there are any accesses to this location in progress.
+  bool hasAccessesInProgress() const { return Reads > 0 || NonReads > 0; }
+
+  /// Returns true when there must have already been a conflict diagnosed
+  /// for an in-progress access. Used to suppress multiple diagnostics for
+  /// the same underlying access violation.
+  bool alreadyHadConflict() const {
+    return (NonReads > 0 && Reads > 0) || (NonReads > 1);
+  }
+
+  // Returns true when beginning an access of the given Kind can
+  // result in a conflict with a previous access.
+  bool canConflictWithAccessOfKind(SILAccessKind Kind) const {
+    if (Kind == SILAccessKind::Read) {
+      // A read conflicts with any non-read accesses.
+      return NonReads > 0;
+    }
+
+    // A non-read access conflicts with any other access.
+    return NonReads > 0 || Reads > 0;
+  }
+
+  bool conflictsWithAccess(SILAccessKind Kind,
+                           const IndexTrieNode *SubPath) const {
+    if (!canConflictWithAccessOfKind(Kind))
+      return false;
+
+    return pathsConflict(Path, SubPath);
+  }
+
+  /// Returns true when the two subpaths access overlapping memory.
+  bool pathsConflict(const IndexTrieNode *Path1,
+                     const IndexTrieNode *Path2) const {
+    return Path1->isPrefixOf(Path2) || Path2->isPrefixOf(Path1);
+  }
+};
+
+/// Models the in-progress accesses for an address on which access has begun
+/// with a begin_access instruction. For a given address, tracks the
+/// count and kinds of accesses as well as the subpaths (i.e., projections) that
+/// were accessed.
+class AccessInfo {
+  using SubAccessVector = SmallVector<SubAccessInfo, 4>;
+
+  SubAccessVector SubAccesses;
+
+  /// Returns the SubAccess info for accessing at the given SubPath.
+  SubAccessInfo &findOrCreateSubAccessInfo(const IndexTrieNode *SubPath) {
+    for (auto &Info : SubAccesses) {
+      if (Info.Path == SubPath)
+        return Info;
+    }
+
+    SubAccesses.emplace_back(SubPath);
+    return SubAccesses.back();
+  }
+
+  SubAccessVector::const_iterator
+  findFirstSubPathWithConflict(SILAccessKind OtherKind,
+                               const IndexTrieNode *OtherSubPath) const {
+    // Note this iteration requires deterministic ordering for repeatable
+    // diagnostics.
+    for (auto I = SubAccesses.begin(), E = SubAccesses.end(); I != E; ++I) {
+      const SubAccessInfo &Access = *I;
+      if (Access.conflictsWithAccess(OtherKind, OtherSubPath))
+        return I;
+    }
+
+    return SubAccesses.end();
+  }
+
+public:
+  // Returns the previous access when beginning an access of the given Kind will
+  // result in a conflict with a previous access.
+  Optional<RecordedAccess>
+  conflictsWithAccess(SILAccessKind Kind, const IndexTrieNode *SubPath) const {
+    auto I = findFirstSubPathWithConflict(Kind, SubPath);
+    if (I == SubAccesses.end())
+      return None;
+
+    return I->FirstAccess;
+  }
+
+  /// Returns true if any subpath of has already had a conflict.
+  bool alreadyHadConflict() const {
+    for (const auto &SubAccess : SubAccesses) {
+      if (SubAccess.alreadyHadConflict())
+        return true;
+    }
+    return false;
+  }
+
+  /// Returns true when there are any accesses to this location in progress.
+  bool hasAccessesInProgress() const {
+    for (const auto &SubAccess : SubAccesses) {
+      if (SubAccess.hasAccessesInProgress())
+        return true;
+    }
+    return false;
+  }
+
+  /// Increment the count for given access.
+  void beginAccess(BeginAccessInst *BAI, const IndexTrieNode *SubPath) {
+    SubAccessInfo &SubAccess = findOrCreateSubAccessInfo(SubPath);
+    SubAccess.beginAccess(BAI, SubPath);
+  }
+
+  /// Decrement the count for given access.
+  void endAccess(EndAccessInst *EAI, const IndexTrieNode *SubPath) {
+    SubAccessInfo &SubAccess = findOrCreateSubAccessInfo(SubPath);
+    SubAccess.endAccess(EAI);
+  }
 };
 
 /// Indicates whether a 'begin_access' requires exclusive access
@@ -242,11 +355,17 @@
 /// Tracks the in-progress accesses on per-storage-location basis.
 using StorageMap = llvm::SmallDenseMap<AccessedStorage, AccessInfo, 4>;
 
-/// A pair of 'begin_access' instructions that conflict.
+/// Represents two accesses that conflict and their underlying storage.
 struct ConflictingAccess {
-  AccessedStorage Storage;
-  const BeginAccessInst *FirstAccess;
-  const BeginAccessInst *SecondAccess;
+public:
+  /// Create a conflict for two begin_access instructions in the same function.
+  ConflictingAccess(const AccessedStorage &Storage, const RecordedAccess &First,
+                    const RecordedAccess &Second)
+      : Storage(Storage), FirstAccess(First), SecondAccess(Second) {}
+
+  const AccessedStorage Storage;
+  const RecordedAccess FirstAccess;
+  const RecordedAccess SecondAccess;
 };
 
 } // end anonymous namespace
@@ -296,11 +415,10 @@
 
 } // end namespace llvm
 
-
-/// Returns whether a 'begin_access' requires exclusive or shared access
-/// to its storage.
-static ExclusiveOrShared_t getRequiredAccess(const BeginAccessInst *BAI) {
-  if (BAI->getAccessKind() == SILAccessKind::Read)
+/// Returns whether an access of the given kind requires exclusive or shared
+/// access to its storage.
+static ExclusiveOrShared_t getRequiredAccess(SILAccessKind Kind) {
+  if (Kind == SILAccessKind::Read)
     return ExclusiveOrShared_t::SharedAccess;
 
   return ExclusiveOrShared_t::ExclusiveAccess;
@@ -316,9 +434,9 @@
 /// Returns true when the call expression is a call to swap() in the Standard
 /// Library.
 /// This is a helper function that is only used in an assertion, which is why
-/// it is in a namespace rather than 'static'.
-namespace {
-bool isCallToStandardLibrarySwap(CallExpr *CE, ASTContext &Ctx) {
+/// it is in the ifndef.
+#ifndef NDEBUG
+static bool isCallToStandardLibrarySwap(CallExpr *CE, ASTContext &Ctx) {
   if (CE->getCalledValue() == Ctx.getSwap(nullptr))
     return true;
 
@@ -331,7 +449,7 @@
 
   return false;
 }
-} // end anonymous namespace
+#endif
 
 /// Do a sytactic pattern match to try to safely suggest a Fix-It to rewrite
 /// calls like swap(&collection[index1], &collection[index2]) to
@@ -461,63 +579,117 @@
   Diag.fixItReplace(FoundCall->getSourceRange(), FixItText);
 }
 
+/// Returns a string representation of the BaseName and the SubPath
+/// suitable for use in diagnostic text. Only supports the Projections
+/// that stored-property relaxation supports: struct stored properties
+/// and tuple elements.
+static std::string getPathDescription(DeclName BaseName, SILType BaseType,
+                                      const IndexTrieNode *SubPath,
+                                      SILModule &M) {
+  // Walk the trie to the root to collection the sequence (in reverse order).
+  llvm::SmallVector<unsigned, 4> ReversedIndices;
+  const IndexTrieNode *I = SubPath;
+  while (!I->isRoot()) {
+    ReversedIndices.push_back(I->getIndex());
+    I = I->getParent();
+  }
+
+  std::string sbuf;
+  llvm::raw_string_ostream os(sbuf);
+
+  os << "'" << BaseName;
+
+  SILType ContainingType = BaseType;
+  for (unsigned Index : reversed(ReversedIndices)) {
+    os << ".";
+
+    if (ContainingType.getAs<StructType>()) {
+      NominalTypeDecl *D = ContainingType.getNominalOrBoundGenericNominal();
+      auto Iter = D->getStoredProperties().begin();
+      std::advance(Iter, Index);
+      VarDecl *VD = *Iter;
+      os << VD->getBaseName();
+      ContainingType = ContainingType.getFieldType(VD, M);
+      continue;
+    }
+
+    if (auto TupleTy = ContainingType.getAs<TupleType>()) {
+      Identifier ElementName = TupleTy->getElement(Index).getName();
+      if (ElementName.empty())
+        os << Index;
+      else
+        os << ElementName;
+      ContainingType = ContainingType.getTupleElementType(Index);
+      continue;
+    }
+
+    llvm_unreachable("Unexpected type in projection SubPath!");
+  }
+
+  os << "'";
+
+  return os.str();
+}
+
 /// Emits a diagnostic if beginning an access with the given in-progress
 /// accesses violates the law of exclusivity. Returns true when a
 /// diagnostic was emitted.
-static void diagnoseExclusivityViolation(const AccessedStorage &Storage,
-                                         const BeginAccessInst *PriorAccess,
-                                         const BeginAccessInst *NewAccess,
+static void diagnoseExclusivityViolation(const ConflictingAccess &Violation,
                                          ArrayRef<ApplyInst *> CallsToSwap,
                                          ASTContext &Ctx) {
 
-  DEBUG(llvm::dbgs() << "Conflict on " << *PriorAccess
-        << "\n  vs " << *NewAccess
-        << "\n  in function " << *PriorAccess->getFunction());
+  const AccessedStorage &Storage = Violation.Storage;
+  const RecordedAccess &FirstAccess = Violation.FirstAccess;
+  const RecordedAccess &SecondAccess = Violation.SecondAccess;
+
+  DEBUG(llvm::dbgs() << "Conflict on " << *FirstAccess.getInstruction()
+                     << "\n  vs " << *SecondAccess.getInstruction()
+                     << "\n  in function "
+                     << *FirstAccess.getInstruction()->getFunction());
 
   // Can't have a conflict if both accesses are reads.
-  assert(!(PriorAccess->getAccessKind() == SILAccessKind::Read &&
-           NewAccess->getAccessKind() == SILAccessKind::Read));
+  assert(!(FirstAccess.getAccessKind() == SILAccessKind::Read &&
+           SecondAccess.getAccessKind() == SILAccessKind::Read));
 
-  ExclusiveOrShared_t PriorRequires = getRequiredAccess(PriorAccess);
+  ExclusiveOrShared_t FirstRequires =
+      getRequiredAccess(FirstAccess.getAccessKind());
 
   // Diagnose on the first access that requires exclusivity.
-  const BeginAccessInst *AccessForMainDiagnostic = PriorAccess;
-  const BeginAccessInst *AccessForNote = NewAccess;
-  if (PriorRequires != ExclusiveOrShared_t::ExclusiveAccess) {
-    AccessForMainDiagnostic = NewAccess;
-    AccessForNote = PriorAccess;
-  }
+  bool FirstIsMain = (FirstRequires == ExclusiveOrShared_t::ExclusiveAccess);
+  const RecordedAccess &MainAccess = (FirstIsMain ? FirstAccess : SecondAccess);
+  const RecordedAccess &NoteAccess = (FirstIsMain ? SecondAccess : FirstAccess);
 
-  SourceRange rangeForMain =
-    AccessForMainDiagnostic->getLoc().getSourceRange();
+  SourceRange RangeForMain = MainAccess.getAccessLoc().getSourceRange();
   unsigned AccessKindForMain =
-      static_cast<unsigned>(AccessForMainDiagnostic->getAccessKind());
+      static_cast<unsigned>(MainAccess.getAccessKind());
 
   if (const ValueDecl *VD = Storage.getStorageDecl()) {
     // We have a declaration, so mention the identifier in the diagnostic.
     auto DiagnosticID = (Ctx.LangOpts.isSwiftVersion3() ?
                          diag::exclusivity_access_required_swift3 :
                          diag::exclusivity_access_required);
-    auto D = diagnose(Ctx, AccessForMainDiagnostic->getLoc().getSourceLoc(),
-                       DiagnosticID,
-                       VD->getDescriptiveKind(),
-                       VD->getBaseName().getIdentifier(),
-                       AccessKindForMain);
-    D.highlight(rangeForMain);
-    tryFixItWithCallToCollectionSwapAt(PriorAccess, NewAccess,
+    SILType BaseType = FirstAccess.getInstruction()->getType().getAddressType();
+    SILModule &M = FirstAccess.getInstruction()->getModule();
+    std::string PathDescription = getPathDescription(
+        VD->getBaseName(), BaseType, MainAccess.getSubPath(), M);
+    auto D =
+        diagnose(Ctx, MainAccess.getAccessLoc().getSourceLoc(), DiagnosticID,
+                 PathDescription, AccessKindForMain);
+    D.highlight(RangeForMain);
+    tryFixItWithCallToCollectionSwapAt(FirstAccess.getInstruction(),
+                                       SecondAccess.getInstruction(),
                                        CallsToSwap, Ctx, D);
   } else {
     auto DiagnosticID = (Ctx.LangOpts.isSwiftVersion3() ?
                          diag::exclusivity_access_required_unknown_decl_swift3 :
                          diag::exclusivity_access_required_unknown_decl);
-    diagnose(Ctx, AccessForMainDiagnostic->getLoc().getSourceLoc(),
-             DiagnosticID,
+    diagnose(Ctx, MainAccess.getAccessLoc().getSourceLoc(), DiagnosticID,
              AccessKindForMain)
-        .highlight(rangeForMain);
+        .highlight(RangeForMain);
   }
-  diagnose(Ctx, AccessForNote->getLoc().getSourceLoc(),
+  diagnose(Ctx, NoteAccess.getAccessLoc().getSourceLoc(),
            diag::exclusivity_conflicting_access)
-      .highlight(AccessForNote->getLoc().getSourceRange());
+      .highlight(NoteAccess.getAccessLoc().getSourceRange());
 }
 
 /// Make a best effort to find the underlying object for the purpose
@@ -611,7 +783,7 @@
 /// Returns true when the apply calls the Standard Library swap().
 /// Used for fix-its to suggest replacing with Collection.swapAt()
 /// on exclusivity violations.
-bool isCallToStandardLibrarySwap(ApplyInst *AI, ASTContext &Ctx) {
+static bool isCallToStandardLibrarySwap(ApplyInst *AI, ASTContext &Ctx) {
   SILFunction *SF = AI->getReferencedFunction();
   if (!SF)
     return false;
@@ -626,7 +798,78 @@
   return FD == Ctx.getSwap(nullptr);
 }
 
-static void checkStaticExclusivity(SILFunction &Fn, PostOrderFunctionInfo *PO) {
+/// If the instruction is a field or tuple projection and it has a single
+/// user return a pair of the single user and the projection index.
+/// Otherwise, return a pair with the component nullptr and the second
+/// unspecified.
+static std::pair<SILInstruction *, unsigned>
+getSingleAddressProjectionUser(SILInstruction *I) {
+  SILInstruction *SingleUser = nullptr;
+  unsigned ProjectionIndex = 0;
+
+  for (Operand *Use : I->getUses()) {
+    SILInstruction *User = Use->getUser();
+    if (isa<BeginAccessInst>(I) && isa<EndAccessInst>(User))
+      continue;
+
+    // We have more than a single user so bail.
+    if (SingleUser)
+      return std::make_pair(nullptr, 0);
+
+    switch (User->getKind()) {
+    case ValueKind::StructElementAddrInst:
+      ProjectionIndex = cast<StructElementAddrInst>(User)->getFieldNo();
+      SingleUser = User;
+      break;
+    case ValueKind::TupleElementAddrInst:
+      ProjectionIndex = cast<TupleElementAddrInst>(User)->getFieldNo();
+      SingleUser = User;
+      break;
+    default:
+      return std::make_pair(nullptr, 0);
+    }
+  }
+
+  return std::make_pair(SingleUser, ProjectionIndex);
+}
+
+/// Returns an IndexTrieNode that represents the single subpath accessed from
+/// BAI or the root if no such node exists.
+static const IndexTrieNode *findSubPathAccessed(BeginAccessInst *BAI,
+                                                IndexTrieNode *Root) {
+  IndexTrieNode *SubPath = Root;
+
+  // For each single-user projection of BAI, construct or get a node
+  // from the trie representing the index of the field or tuple element
+  // accessed by that projection.
+  SILInstruction *Iter = BAI;
+  while (true) {
+    std::pair<SILInstruction *, unsigned> ProjectionUser =
+        getSingleAddressProjectionUser(Iter);
+    if (!ProjectionUser.first)
+      break;
+
+    SubPath = SubPath->getChild(ProjectionUser.second);
+    Iter = ProjectionUser.first;
+  }
+
+  return SubPath;
+}
+
+/// If making an access of the given kind at the given subpath would
+/// would conflict, returns the first recorded access it would conflict
+/// with. Otherwise, returns None.
+Optional<RecordedAccess> shouldReportAccess(const AccessInfo &Info,
+                                            swift::SILAccessKind Kind,
+                                            const IndexTrieNode *SubPath) {
+  if (Info.alreadyHadConflict())
+    return None;
+
+  return Info.conflictsWithAccess(Kind, SubPath);
+}
+
+static void checkStaticExclusivity(SILFunction &Fn, PostOrderFunctionInfo *PO,
+                                   AccessSummaryAnalysis *ASA) {
   // The implementation relies on the following SIL invariants:
   //    - All incoming edges to a block must have the same in-progress
   //      accesses. This enables the analysis to not perform a data flow merge
@@ -692,20 +935,25 @@
         SILAccessKind Kind = BAI->getAccessKind();
         const AccessedStorage &Storage = findAccessedStorage(BAI->getSource());
         AccessInfo &Info = Accesses[Storage];
-        if (Info.conflictsWithAccess(Kind) && !Info.alreadyHadConflict()) {
-          const BeginAccessInst *Conflict = Info.getFirstAccess();
-          assert(Conflict && "Must already have had access to conflict!");
-          ConflictingAccesses.push_back({ Storage, Conflict, BAI });
+        const IndexTrieNode *SubPath =
+            findSubPathAccessed(BAI, ASA->getSubPathTrieRoot());
+        if (auto Conflict = shouldReportAccess(Info, Kind, SubPath)) {
+          ConflictingAccesses.emplace_back(Storage, *Conflict,
+                                           RecordedAccess(BAI, SubPath));
         }
 
-        Info.beginAccess(BAI);
+        Info.beginAccess(BAI, SubPath);
         continue;
       }
 
       if (auto *EAI = dyn_cast<EndAccessInst>(&I)) {
         auto It = Accesses.find(findAccessedStorage(EAI->getSource()));
         AccessInfo &Info = It->getSecond();
-        Info.endAccess(EAI);
+
+        BeginAccessInst *BAI = EAI->getBeginAccess();
+        const IndexTrieNode *SubPath =
+            findSubPathAccessed(BAI, ASA->getSubPathTrieRoot());
+        Info.endAccess(EAI, SubPath);
 
         // If the storage location has no more in-progress accesses, remove
         // it to keep the StorageMap lean.
@@ -729,11 +977,7 @@
   // Now that we've collected violations and suppressed calls, emit
   // diagnostics.
   for (auto &Violation : ConflictingAccesses) {
-    const BeginAccessInst *PriorAccess = Violation.FirstAccess;
-    const BeginAccessInst *NewAccess = Violation.SecondAccess;
-
-    diagnoseExclusivityViolation(Violation.Storage, PriorAccess, NewAccess,
-                                 CallsToSwap, Fn.getASTContext());
+    diagnoseExclusivityViolation(Violation, CallsToSwap, Fn.getASTContext());
   }
 }
 
@@ -752,7 +996,8 @@
       return;
 
     PostOrderFunctionInfo *PO = getAnalysis<PostOrderAnalysis>()->get(Fn);
-    checkStaticExclusivity(*Fn, PO);
+    auto *ASA = getAnalysis<AccessSummaryAnalysis>();
+    checkStaticExclusivity(*Fn, PO, ASA);
   }
 };
 
diff --git a/lib/SILOptimizer/Mandatory/GuaranteedARCOpts.cpp b/lib/SILOptimizer/Mandatory/GuaranteedARCOpts.cpp
index cdd4503..94d6cdf 100644
--- a/lib/SILOptimizer/Mandatory/GuaranteedARCOpts.cpp
+++ b/lib/SILOptimizer/Mandatory/GuaranteedARCOpts.cpp
@@ -76,7 +76,9 @@
       isa<RetainValueInst>(Inst) || isa<UnownedRetainInst>(Inst) ||
       isa<UnownedReleaseInst>(Inst) || isa<StrongRetainUnownedInst>(Inst) ||
       isa<StoreWeakInst>(Inst) || isa<StrongRetainInst>(Inst) ||
-      isa<AllocStackInst>(Inst) || isa<DeallocStackInst>(Inst))
+      isa<AllocStackInst>(Inst) || isa<DeallocStackInst>(Inst) ||
+      isa<BeginAccessInst>(Inst) || isa<EndAccessInst>(Inst) ||
+      isa<BeginUnpairedAccessInst>(Inst) || isa<EndUnpairedAccessInst>(Inst))
     return false;
 
   // Assign and copyaddr of trivial types cannot drop refcounts, and 'inits'
diff --git a/lib/SILOptimizer/Transforms/DeadObjectElimination.cpp b/lib/SILOptimizer/Transforms/DeadObjectElimination.cpp
index 7cebda3..48214e9 100644
--- a/lib/SILOptimizer/Transforms/DeadObjectElimination.cpp
+++ b/lib/SILOptimizer/Transforms/DeadObjectElimination.cpp
@@ -36,6 +36,7 @@
 #include "swift/SIL/DebugUtils.h"
 #include "swift/SIL/InstructionUtils.h"
 #include "swift/SILOptimizer/Analysis/ArraySemantic.h"
+#include "swift/SILOptimizer/Utils/IndexTrie.h"
 #include "swift/SILOptimizer/Utils/Local.h"
 #include "swift/SILOptimizer/Utils/SILSSAUpdater.h"
 #include "swift/SILOptimizer/PassManager/Transforms.h"
@@ -278,50 +279,6 @@
 //===----------------------------------------------------------------------===//
 
 namespace {
-// Trie node representing a sequence of unsigned integer indices.
-class IndexTrieNode {
-  static const unsigned RootIdx = ~0U;
-  unsigned Index;
-  llvm::SmallVector<IndexTrieNode*, 8> Children;
-
-public:
-  IndexTrieNode(): Index(RootIdx) {}
-
-  explicit IndexTrieNode(unsigned V): Index(V) {}
-
-  IndexTrieNode(IndexTrieNode &) =delete;
-  IndexTrieNode &operator=(const IndexTrieNode&) =delete;
-
-  ~IndexTrieNode() {
-    for (auto *N : Children)
-      delete N;
-  }
-
-  bool isRoot() const { return Index == RootIdx; }
-
-  bool isLeaf() const { return Children.empty(); }
-
-  unsigned getIndex() const { return Index; }
-
-  IndexTrieNode *getChild(unsigned Idx) {
-    assert(Idx != RootIdx);
-
-    auto I = std::lower_bound(Children.begin(), Children.end(), Idx,
-                              [](IndexTrieNode *a, unsigned i) {
-                                return a->Index < i;
-                              });
-    if (I != Children.end() && (*I)->Index == Idx)
-      return *I;
-    auto *N = new IndexTrieNode(Idx);
-    Children.insert(I, N);
-    return N;
-  }
-
-  ArrayRef<IndexTrieNode*> getChildren() const { return Children; }
-};
-} // end anonymous namespace
-
-namespace {
 /// Determine if an object is dead. Compute its original lifetime. Find the
 /// lifetime endpoints reached by each store of a refcounted object into the
 /// object.
diff --git a/lib/SILOptimizer/UtilityPasses/AccessSummaryDumper.cpp b/lib/SILOptimizer/UtilityPasses/AccessSummaryDumper.cpp
new file mode 100644
index 0000000..4ad3663
--- /dev/null
+++ b/lib/SILOptimizer/UtilityPasses/AccessSummaryDumper.cpp
@@ -0,0 +1,51 @@
+//===--- AccessSummaryDumper.cpp - Dump access summaries for functions -----===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+#define DEBUG_TYPE "sil-access-summary-dumper"
+#include "swift/SIL/SILArgument.h"
+#include "swift/SIL/SILFunction.h"
+#include "swift/SIL/SILInstruction.h"
+#include "swift/SIL/SILValue.h"
+#include "swift/SILOptimizer/Analysis/AccessSummaryAnalysis.h"
+#include "swift/SILOptimizer/PassManager/Passes.h"
+#include "swift/SILOptimizer/PassManager/Transforms.h"
+#include "llvm/Support/Debug.h"
+
+using namespace swift;
+
+namespace {
+
+/// Dumps summaries of kinds of accesses a function performs on its
+/// @inout_aliasiable arguments.
+class AccessSummaryDumper : public SILModuleTransform {
+
+  void run() override {
+    auto *analysis = PM->getAnalysis<AccessSummaryAnalysis>();
+
+    for (auto &fn : *getModule()) {
+      llvm::outs() << "@" << fn.getName() << "\n";
+      if (fn.empty()) {
+        llvm::outs() << "<unknown>\n";
+        continue;
+      }
+      const AccessSummaryAnalysis::FunctionSummary &summary =
+          analysis->getOrCreateSummary(&fn);
+      llvm::outs() << summary << "\n";
+    }
+  }
+};
+
+} // end anonymous namespace
+
+SILTransform *swift::createAccessSummaryDumper() {
+  return new AccessSummaryDumper();
+}
diff --git a/lib/SILOptimizer/UtilityPasses/CMakeLists.txt b/lib/SILOptimizer/UtilityPasses/CMakeLists.txt
index b1b91be..265d73d 100644
--- a/lib/SILOptimizer/UtilityPasses/CMakeLists.txt
+++ b/lib/SILOptimizer/UtilityPasses/CMakeLists.txt
@@ -1,5 +1,6 @@
 set(UTILITYPASSES_SOURCES
   UtilityPasses/AADumper.cpp
+  UtilityPasses/AccessSummaryDumper.cpp
   UtilityPasses/BasicCalleePrinter.cpp
   UtilityPasses/BasicInstructionPropertyDumper.cpp
   UtilityPasses/BugReducerTester.cpp
diff --git a/lib/SILOptimizer/Utils/Generics.cpp b/lib/SILOptimizer/Utils/Generics.cpp
index 729fd34..0edd00e 100644
--- a/lib/SILOptimizer/Utils/Generics.cpp
+++ b/lib/SILOptimizer/Utils/Generics.cpp
@@ -170,7 +170,8 @@
 // ReabstractionInfo
 // =============================================================================
 
-static bool shouldNotSpecializeCallee(SILFunction *Callee) {
+static bool shouldNotSpecializeCallee(SILFunction *Callee,
+                                      SubstitutionList Subs = {}) {
   if (!Callee->shouldOptimize()) {
     DEBUG(llvm::dbgs() << "    Cannot specialize function " << Callee->getName()
           << " marked to be excluded from optimizations.\n");
@@ -180,6 +181,10 @@
   if (Callee->hasSemanticsAttr("optimize.sil.specialize.generic.never"))
     return true;
 
+  if (!Subs.empty() &&
+      Callee->hasSemanticsAttr("optimize.sil.specialize.generic.partial.never"))
+    return true;
+
   return false;
 }
 
@@ -291,6 +296,10 @@
     // We need a generic environment for the partial specialization.
     if (!CalleeGenericEnv)
       return false;
+
+    // Bail if the callee should not be partially specialized.
+    if (shouldNotSpecializeCallee(Callee, ParamSubs))
+      return false;
   }
 
   return true;
diff --git a/lib/SILOptimizer/Utils/PerformanceInlinerUtils.cpp b/lib/SILOptimizer/Utils/PerformanceInlinerUtils.cpp
index 7aecd66..860d0a3 100644
--- a/lib/SILOptimizer/Utils/PerformanceInlinerUtils.cpp
+++ b/lib/SILOptimizer/Utils/PerformanceInlinerUtils.cpp
@@ -591,6 +591,35 @@
   return false;
 }
 
+// Returns true if a given apply site should be skipped during the
+// early inlining pass.
+//
+// NOTE: Add here the checks for any specific @_semantics/@_effects
+// attributes causing a given callee to be excluded from the inlining
+// during the early inlining pass.
+static bool shouldSkipApplyDuringEarlyInlining(FullApplySite AI) {
+  // Add here the checks for any specific @_semantics attributes that need
+  // to be skipped during the early inlining pass.
+  ArraySemanticsCall ASC(AI.getInstruction());
+  if (ASC && !ASC.canInlineEarly())
+    return true;
+
+  SILFunction *Callee = AI.getReferencedFunction();
+  if (!Callee)
+    return false;
+
+  if (Callee->hasSemanticsAttr("self_no_escaping_closure") ||
+      Callee->hasSemanticsAttr("pair_no_escaping_closure"))
+    return true;
+
+  // Add here the checks for any specific @_effects attributes that need
+  // to be skipped during the early inlining pass.
+  if (Callee->hasEffectsKind())
+    return true;
+
+  return false;
+}
+
 // Returns the callee of an apply_inst if it is basically inlineable.
 SILFunction *swift::getEligibleFunction(FullApplySite AI,
                                         InlineSelection WhatToInline) {
@@ -606,8 +635,7 @@
   // attribute if the inliner is asked not to inline them.
   if (Callee->hasSemanticsAttrs() || Callee->hasEffectsKind()) {
     if (WhatToInline == InlineSelection::NoSemanticsAndGlobalInit) {
-      ArraySemanticsCall ASC(AI.getInstruction());
-      if (!ASC.canInlineEarly())
+      if (shouldSkipApplyDuringEarlyInlining(AI))
         return nullptr;
     }
     // The "availability" semantics attribute is treated like global-init.
diff --git a/lib/Sema/CSApply.cpp b/lib/Sema/CSApply.cpp
index e71f64f..4172612 100644
--- a/lib/Sema/CSApply.cpp
+++ b/lib/Sema/CSApply.cpp
@@ -259,20 +259,24 @@
                                allowOverwrite);
 }
 
-bool ConstraintSystem::isTypeReference(Expr *E) {
+bool ConstraintSystem::isTypeReference(const Expr *E) {
   return E->isTypeReference([&](const Expr *E) -> Type { return getType(E); });
 }
 
-bool ConstraintSystem::isStaticallyDerivedMetatype(Expr *E) {
+bool ConstraintSystem::isStaticallyDerivedMetatype(const Expr *E) {
   return E->isStaticallyDerivedMetatype(
       [&](const Expr *E) -> Type { return getType(E); });
 }
 
-Type ConstraintSystem::getInstanceType(TypeExpr *E) {
+Type ConstraintSystem::getInstanceType(const TypeExpr *E) {
   return E->getInstanceType([&](const Expr *E) -> bool { return hasType(E); },
                             [&](const Expr *E) -> Type { return getType(E); });
 }
 
+Type ConstraintSystem::getResultType(const AbstractClosureExpr *E) {
+  return E->getResultType([&](const Expr *E) -> Type { return getType(E); });
+}
+
 static bool buildObjCKeyPathString(KeyPathExpr *E,
                                    llvm::SmallVectorImpl<char> &buf) {
   for (auto &component : E->getComponents()) {
@@ -760,6 +764,12 @@
         if (result == nullptr) {
           result = new (tc.Context) ErrorExpr(range);
           cs.setType(result, erasedTy);
+          // The opaque value is no longer reachable in an AST walk as
+          // a result of the result above being replaced with an
+          // ErrorExpr, but there is code expecting to have a type set
+          // on it. Since we no longer have a reachable reference,
+          // we'll null this out.
+          record.OpaqueValue = nullptr;
         }
       }
 
@@ -768,7 +778,7 @@
       // means this is our only chance to propagate the l-value access kind
       // down to the original existential value.  Otherwise, propagateLVAK
       // will handle this.
-      if (record.OpaqueValue->hasLValueAccessKind())
+      if (record.OpaqueValue && record.OpaqueValue->hasLValueAccessKind())
         cs.propagateLValueAccessKind(record.ExistentialValue,
                                   record.OpaqueValue->getLValueAccessKind());
 
@@ -1217,9 +1227,7 @@
     Expr *coerceToType(Expr *expr, Type toType,
                        ConstraintLocatorBuilder locator,
                        Optional<Pattern*> typeFromPattern = None);
-
-    using LevelTy = llvm::PointerEmbeddedInt<unsigned, 2>;
-
+    
     /// \brief Coerce the given expression (which is the argument to a call) to
     /// the given parameter type.
     ///
@@ -1227,9 +1235,7 @@
     ///
     /// \param arg The argument expression.
     /// \param paramType The parameter type.
-    /// \param applyOrLevel For function applications, the ApplyExpr that forms
-    /// the call. Otherwise, a specific level describing which parameter level
-    /// we're applying.
+    /// \param apply The ApplyExpr that forms the call.
     /// \param argLabels The argument labels provided for the call.
     /// \param hasTrailingClosure Whether the last argument is a trailing
     /// closure.
@@ -1238,7 +1244,7 @@
     /// \returns the coerced expression, which will have type \c ToType.
     Expr *
     coerceCallArguments(Expr *arg, Type paramType,
-                        llvm::PointerUnion<ApplyExpr *, LevelTy> applyOrLevel,
+                        ApplyExpr *apply,
                         ArrayRef<Identifier> argLabels,
                         bool hasTrailingClosure,
                         ConstraintLocatorBuilder locator);
@@ -1303,7 +1309,7 @@
       // Apply a key path if we have one.
       if (choice.getKind() == OverloadChoiceKind::KeyPathApplication) {
         // The index argument should be (keyPath: KeyPath<Root, Value>).
-        auto keyPathTTy = index->getType()->castTo<TupleType>()
+        auto keyPathTTy = cs.getType(index)->castTo<TupleType>()
           ->getElementType(0);
         
         Type valueTy;
@@ -1341,7 +1347,7 @@
               base = cs.coerceToRValue(base);
             } else if (keyPathBGT->getDecl() ==
                          cs.getASTContext().getWritableKeyPathDecl()) {
-              resultIsLValue = base->getType()->isLValueType();
+              resultIsLValue = cs.getType(base)->hasLValueType();
             } else if (keyPathBGT->getDecl() ==
                        cs.getASTContext().getReferenceWritableKeyPathDecl()) {
               resultIsLValue = true;
@@ -1396,10 +1402,9 @@
       }
 
       // Coerce the index argument.
-      index = coerceCallArguments(
-          index, indexTy, LevelTy(1), argLabels,
-          hasTrailingClosure,
-          locator.withPathElement(ConstraintLocator::SubscriptIndex));
+      index = coerceToType(index, indexTy,
+                           locator.withPathElement(
+                             ConstraintLocator::SubscriptIndex));
       if (!index)
         return nullptr;
 
@@ -1517,42 +1522,12 @@
     Expr *bridgeErrorToObjectiveC(Expr *value) {
       auto &tc = cs.getTypeChecker();
 
-      // Use _bridgeErrorToNSError to convert to an NSError.
-      auto fn = tc.Context.getBridgeErrorToNSError(&tc);
-      SourceLoc loc = value->getLoc();
-      if (!fn) {
-        tc.diagnose(loc, diag::missing_nserror_bridging_function);
-        return nullptr;
-      }
-      tc.validateDecl(fn);
-
-      ConcreteDeclRef fnDeclRef(fn);
-      auto fnRef = new (tc.Context) DeclRefExpr(fnDeclRef, DeclNameLoc(loc),
-                                                /*Implicit=*/true);
-      cs.setType(fnRef, fn->getInterfaceType());
-      fnRef->setFunctionRefKind(FunctionRefKind::SingleApply);
-
-      auto getType = [&](const Expr *E) -> Type {
-        return cs.getType(E);
-      };
-
-      Expr *call = CallExpr::createImplicit(tc.Context, fnRef, { value }, { },
-                                            getType);
-      cs.cacheSubExprTypes(call);
-      cs.setSubExprTypes(call);
-      if (tc.typeCheckExpressionShallow(call, dc))
-        return nullptr;
-
-      cs.cacheExprTypes(call);
-
-      // The return type of _bridgeErrorToNSError is formally
-      // 'AnyObject' to avoid stdlib-to-Foundation dependencies, but it's
-      // really NSError.  Abuse CovariantReturnConversionExpr to fix this.
       auto nsErrorDecl = tc.Context.getNSErrorDecl();
       assert(nsErrorDecl && "Missing NSError?");
       Type nsErrorType = nsErrorDecl->getDeclaredInterfaceType();
-      return cs.cacheType(new (tc.Context)
-                              CovariantReturnConversionExpr(call, nsErrorType));
+
+      auto result = new (tc.Context) BridgeToObjCExpr(value, nsErrorType);
+      return cs.cacheType(result);
     }
 
     /// Bridge the given value to its corresponding Objective-C object
@@ -1561,80 +1536,11 @@
     /// This routine should only be used for bridging value types.
     ///
     /// \param value The value to be bridged.
-    Expr *bridgeToObjectiveC(Expr *value) {
-      // TODO: It would be nicer to represent this as a special AST node
-      // instead of inlining the bridging calls in the AST. Doing so would
-      // simplify the AST and make it easier for SILGen to peephole bridging
-      // conversions.
+    Expr *bridgeToObjectiveC(Expr *value, Type objcType) {
       auto &tc = cs.getTypeChecker();
 
-      // Find the _ObjectiveCBridgeable protocol.
-      auto bridgedProto
-        = tc.Context.getProtocol(KnownProtocolKind::ObjectiveCBridgeable);
-
-      // Find the conformance of the value type to _ObjectiveCBridgeable.
-      Type valueType = cs.getType(value)->getRValueType();
-      if (auto conformance =
-            tc.conformsToProtocol(valueType, bridgedProto, cs.DC,
-                                  (ConformanceCheckFlags::InExpression|
-                                   ConformanceCheckFlags::Used))) {
-        cs.setExprTypes(value);
-
-        // Form the call.
-        auto result =
-            tc.callWitness(value, cs.DC, bridgedProto, *conformance,
-                           tc.Context.Id_bridgeToObjectiveC,
-                           { }, diag::broken_bridged_to_objc_protocol);
-
-        if (result)
-          cs.cacheExprTypes(result);
-
-        return result;
-      }
-      
-      // If there is an Error conformance, try bridging as an error.
-      if (tc.isConvertibleTo(valueType,
-                             tc.Context.getProtocol(KnownProtocolKind::Error)
-                               ->getDeclaredType(),
-                             cs.DC))
-        return bridgeErrorToObjectiveC(value);
-
-      // Fall back to universal bridging.
-      auto bridgeAnything = tc.Context.getBridgeAnythingToObjectiveC(&tc);
-      value = cs.coerceToRValue(value);
-      auto valueSub = Substitution(valueType, {});
-      auto bridgeAnythingRef = ConcreteDeclRef(tc.Context, bridgeAnything,
-                                               valueSub);
-      auto valueParenTy = ParenType::get(tc.Context, cs.getType(value));
-      auto bridgeTy = tc.Context.getAnyObjectType();
-      auto bridgeFnTy = FunctionType::get(valueParenTy, bridgeTy);
-      // FIXME: Wrap in ParenExpr to prevent bogus "tuple passed as argument"
-      // errors.
-      auto valueParen = cs.cacheType(
-          new (tc.Context) ParenExpr(SourceLoc(),
-                                     value,
-                                     SourceLoc(),
-                                     /*trailing closure*/ false,
-                                     valueParenTy));
-
-      valueParen->setImplicit();
-      auto fnRef = cs.cacheType(
-          new (tc.Context) DeclRefExpr(bridgeAnythingRef,
-                                       DeclNameLoc(),
-                                       /*implicit*/ true,
-                                       AccessSemantics::Ordinary,
-                                       bridgeFnTy));
-
-      auto getType = [&](const Expr *E) -> Type {
-        return cs.getType(E);
-      };
-
-      fnRef->setFunctionRefKind(FunctionRefKind::SingleApply);
-      Expr *call = CallExpr::createImplicit(tc.Context, fnRef, valueParen,
-                                            { Identifier() }, getType);
-      cs.setType(call, bridgeTy);
-      cs.cacheExprTypes(call);
-      return call;
+      auto result = new (tc.Context) BridgeToObjCExpr(value, objcType);
+      return cs.cacheType(result);
     }
 
     /// Bridge the given object from Objective-C to its value type.
@@ -1655,6 +1561,11 @@
     Expr *bridgeFromObjectiveC(Expr *object, Type valueType, bool conditional) {
       auto &tc = cs.getTypeChecker();
 
+      if (!conditional) {
+        auto result = new (tc.Context) BridgeFromObjCExpr(object, valueType);
+        return cs.cacheType(result);
+      }
+
       // Find the _BridgedToObjectiveC protocol.
       auto bridgedProto
         = tc.Context.getProtocol(KnownProtocolKind::ObjectiveCBridgeable);
@@ -1710,45 +1621,12 @@
       genericSig->getSubstitutions(subMap, subs);
 
       ConcreteDeclRef fnSpecRef(tc.Context, fn, subs);
-      auto fnRef = new (tc.Context) DeclRefExpr(fnSpecRef,
-                                                DeclNameLoc(
-                                                  object->getStartLoc()),
-                                                /*Implicit=*/true);
-      fnRef->setFunctionRefKind(FunctionRefKind::SingleApply);
 
-      cs.setType(fnRef,
-                 fn->getInterfaceType()->castTo<GenericFunctionType>()
-                   ->substGenericArgs(subMap));
+      auto resultType = OptionalType::get(valueType);
 
-      // Form the arguments.
-      Expr *args[2] = {
-        cs.cacheType(object),
-        cs.cacheType(
-            new (tc.Context) DotSelfExpr(
-                TypeExpr::createImplicitHack(object->getLoc(),
-                                             valueType,
-                                             tc.Context),
-                object->getLoc(), object->getLoc(),
-                MetatypeType::get(valueType)))
-      };
-      args[1]->setImplicit();
-
-      // Form the call and type-check it.
-      auto getType = [&](const Expr *E) -> Type {
-        return cs.getType(E);
-      };
-
-      Expr *call = CallExpr::createImplicit(tc.Context, fnRef, args,
-                                            { Identifier(), Identifier() },
-                                            getType);
-      cs.cacheSubExprTypes(call);
-      cs.setSubExprTypes(call);
-
-      if (tc.typeCheckExpressionShallow(call, dc))
-        return nullptr;
-
-      cs.cacheExprTypes(call);
-      return call;
+      auto result = new (tc.Context) ConditionalBridgeFromObjCExpr(object,
+                                                        resultType, fnSpecRef);
+      return cs.cacheType(result);
     }
 
     /// Bridge the given object from Objective-C to its value type.
@@ -2148,6 +2026,26 @@
             diag::extended_grapheme_cluster_literal_broken_proto;
         brokenBuiltinProtocolDiag =
             diag::builtin_extended_grapheme_cluster_literal_broken_proto;
+
+        auto *builtinUTF16ExtendedGraphemeClusterProtocol = tc.getProtocol(
+            expr->getLoc(),
+            KnownProtocolKind::ExpressibleByBuiltinUTF16ExtendedGraphemeClusterLiteral);
+        if (tc.conformsToProtocol(type,
+                                  builtinUTF16ExtendedGraphemeClusterProtocol,
+                                  cs.DC, ConformanceCheckFlags::InExpression)) {
+          builtinLiteralFuncName
+            = DeclName(tc.Context, tc.Context.Id_init,
+                       { tc.Context.Id_builtinExtendedGraphemeClusterLiteral,
+                         tc.Context.getIdentifier("utf16CodeUnitCount") });
+
+          builtinProtocol = builtinUTF16ExtendedGraphemeClusterProtocol;
+          brokenBuiltinProtocolDiag =
+            diag::builtin_utf16_extended_grapheme_cluster_literal_broken_proto;
+          if (stringLiteral)
+            stringLiteral->setEncoding(StringLiteralExpr::UTF16);
+          else
+            magicLiteral->setStringEncoding(StringLiteralExpr::UTF16);
+        }
       } else {
         // Otherwise, we should have just one Unicode scalar.
         literalType = tc.Context.Id_UnicodeScalarLiteralType;
@@ -2637,19 +2535,20 @@
           baseTy = cs.getType(base)->getRValueType();
         }
 
-        if (auto baseMetaTy = baseTy->getAs<MetatypeType>()) {
-          auto &tc = cs.getTypeChecker();
-          auto &ctx = tc.Context;
-          auto classTy = ctx.getBridgedToObjC(cs.DC,
-                                              baseMetaTy->getInstanceType());
-          
+        auto &tc = cs.getTypeChecker();
+        auto &ctx = tc.Context;
+        auto baseMetaTy = baseTy->getAs<MetatypeType>();
+        auto baseInstTy = (baseMetaTy ? baseMetaTy->getInstanceType() : baseTy);
+        auto classTy = ctx.getBridgedToObjC(cs.DC, baseInstTy);
+
+        if (baseMetaTy) {
           // FIXME: We're dropping side effects in the base here!
           base = TypeExpr::createImplicitHack(base->getLoc(), classTy,
                                               tc.Context);
           cs.cacheExprTypes(base);
         } else {
           // Bridge the base to its corresponding Objective-C object.
-          base = bridgeToObjectiveC(base);
+          base = bridgeToObjectiveC(base, classTy);
         }
 
         // Fall through to build the member reference.
@@ -2690,7 +2589,7 @@
         // tuple coercion to properly load & set access kind on all underlying elements
         // before taking a single element.
         baseTy = cs.getType(base);
-        if (!toType->isLValueType() && baseTy->isLValueType())
+        if (!toType->hasLValueType() && baseTy->hasLValueType())
           base = coerceToType(base, baseTy->getRValueType(), cs.getConstraintLocator(base));
 
         return cs.cacheType(new (cs.getASTContext())
@@ -2816,8 +2715,10 @@
                             /*Implicit=*/true,
                             argType);
 
-      cs.cacheExprTypes(typeRef);
+      cs.cacheExprTypes(arg);
+
       cs.setExprTypes(typeRef);
+      cs.setExprTypes(arg);
 
       Expr *result = tc.callWitness(typeRef, dc, arrayProto, *conformance,
                                     name, arg, diag::array_protocol_broken);
@@ -2896,8 +2797,10 @@
                               /*Implicit=*/false,
                               argType);
 
-      cs.cacheExprTypes(typeRef);
+      cs.cacheExprTypes(arg);
+
       cs.setExprTypes(typeRef);
+      cs.setExprTypes(arg);
 
       Expr *result = tc.callWitness(typeRef, dc, dictionaryProto,
                                     *conformance, name, arg,
@@ -3611,7 +3514,7 @@
       // already.
       Expr *simplified = simplifyExprType(expr);
       if (!SuppressDiagnostics
-          && !simplified->getType()->is<UnresolvedType>()) {
+          && !cs.getType(simplified)->is<UnresolvedType>()) {
         cs.TC.diagnose(simplified->getLoc(), diag::pattern_in_expr,
                        expr->getSubPattern()->getKind());
       }
@@ -3877,7 +3780,7 @@
           return E;
         }
 
-        if (cs.getType(subExpr)->isLValueType()) {
+        if (cs.getType(subExpr)->hasLValueType()) {
           // Treat this like a read of the property.
           cs.propagateLValueAccessKind(subExpr, AccessKind::Read);
         }
@@ -3998,7 +3901,7 @@
 
       simplifyExprType(E);
       
-      if (E->getType()->hasError())
+      if (cs.getType(E)->hasError())
         return E;
 
       // If a component is already resolved, then all of them should be
@@ -4338,6 +4241,12 @@
       anchor = dotSyntax->getRHS();
       continue;
     }
+
+    if (auto *OEE = dyn_cast<OpenExistentialExpr>(anchor)) {
+      anchor = OEE->getSubExpr();
+      continue;
+    }
+
     break;
   } while (true);
   
@@ -4474,6 +4383,7 @@
     } else {
       newPath.push_back(ConstraintLocator::ApplyFunction);
     }
+
     assert(newPath.back().getNewSummaryFlags() == 0 &&
            "added element that changes the flags?");
     locator = cs.getConstraintLocator(locator->getAnchor(), newPath, newFlags);
@@ -5091,7 +5001,7 @@
 
   // Load tuples with lvalue elements.
   if (auto tupleType = fromType->getAs<TupleType>()) {
-    if (tupleType->isLValueType()) {
+    if (tupleType->hasLValueType()) {
       auto toTuple = tupleType->getRValueType()->castTo<TupleType>();
       SmallVector<int, 4> sources;
       SmallVector<unsigned, 4> variadicArgs;
@@ -5225,24 +5135,13 @@
   return false;
 }
 
-static unsigned computeCallLevel(
-    ConstraintSystem &cs, ConcreteDeclRef callee,
-    llvm::PointerUnion<ApplyExpr *, ExprRewriter::LevelTy> applyOrLevel) {
-  using LevelTy = ExprRewriter::LevelTy;
-
-  if (applyOrLevel.is<LevelTy>()) {
-    // Level specified by caller.
-    return applyOrLevel.get<LevelTy>();
-  }
-
+static unsigned computeCallLevel(ConstraintSystem &cs, ConcreteDeclRef callee,
+                                 ApplyExpr *apply) {
   // If we do not have a callee, return a level of 0.
   if (!callee) {
     return 0;
   }
 
-  // Determine the level based on the application itself.
-  auto *apply = applyOrLevel.get<ApplyExpr *>();
-
   // Only calls to members of types can have level > 0.
   auto calleeDecl = callee.getDecl();
   if (!calleeDecl->getDeclContext()->isTypeContext()) {
@@ -5270,7 +5169,7 @@
 
 Expr *ExprRewriter::coerceCallArguments(
     Expr *arg, Type paramType,
-    llvm::PointerUnion<ApplyExpr *, LevelTy> applyOrLevel,
+    ApplyExpr *apply,
     ArrayRef<Identifier> argLabels,
     bool hasTrailingClosure,
     ConstraintLocatorBuilder locator) {
@@ -5315,7 +5214,7 @@
     findCalleeDeclRef(cs, solution, cs.getConstraintLocator(locator));
 
   // Determine the level,
-  unsigned level = computeCallLevel(cs, callee, applyOrLevel);
+  unsigned level = computeCallLevel(cs, callee, apply);
 
   // Determine the parameter bindings.
   auto params = decomposeParamType(paramType, callee.getDecl(), level);
@@ -5580,6 +5479,18 @@
   return shuffle;
 }
 
+static ClosureExpr *getClosureLiteralExpr(Expr *expr) {
+  expr = expr->getSemanticsProvidingExpr();
+
+  if (auto *captureList = dyn_cast<CaptureListExpr>(expr))
+    return captureList->getClosureBody();
+
+  if (auto *closure = dyn_cast<ClosureExpr>(expr))
+    return closure;
+
+  return nullptr;
+}
+
 /// If the expression is an explicit closure expression (potentially wrapped in
 /// IdentityExprs), change the type of the closure and identities to the
 /// specified type and return true.  Otherwise, return false with no effect.
@@ -5592,11 +5503,19 @@
     return true;
   }
 
+  // Look through capture lists.
+  if (auto CLE = dyn_cast<CaptureListExpr>(expr)) {
+    if (!applyTypeToClosureExpr(cs, CLE->getClosureBody(), toType)) return false;
+    cs.setType(CLE, toType);
+    return true;
+  }
+
   // If we found an explicit ClosureExpr, update its type.
   if (auto CE = dyn_cast<ClosureExpr>(expr)) {
     cs.setType(CE, toType);
     return true;
   }
+
   // Otherwise fail.
   return false;
 }
@@ -5830,6 +5749,8 @@
 
 Expr *ExprRewriter::buildObjCBridgeExpr(Expr *expr, Type toType,
                                         ConstraintLocatorBuilder locator) {
+  auto &tc = cs.getTypeChecker();
+
   Type fromType = cs.getType(expr);
 
   // Bridged collection casts always succeed, so we treat them as
@@ -5848,10 +5769,24 @@
       (fromType->getRValueType()->isPotentiallyBridgedValueType() &&
        (toType->isBridgeableObjectType() || toType->isExistentialType()))) {
     // Bridging to Objective-C.
-    Expr *objcExpr = bridgeToObjectiveC(expr);
+    Expr *objcExpr = bridgeToObjectiveC(expr, toType);
     if (!objcExpr)
       return nullptr;
 
+    // We might have a coercion of a Swift type to a CF type toll-free
+    // bridged to Objective-C.
+    //
+    // FIXME: Ideally we would instead have already recorded a restriction
+    // when solving the constraint, and we wouldn't need to duplicate this
+    // part of coerceToType() here.
+    if (auto foreignClass = toType->getClassOrBoundGenericClass()) {
+      if (foreignClass->getForeignClassKind() ==
+            ClassDecl::ForeignKind::CFType) {
+        return cs.cacheType(
+          new (tc.Context) ForeignObjectConversionExpr(objcExpr, toType));
+      }
+    }
+
     return coerceToType(objcExpr, toType, locator);
   }
 
@@ -6747,6 +6682,9 @@
   
   auto fn = apply->getFn();
 
+  bool hasTrailingClosure =
+    isa<CallExpr>(apply) && cast<CallExpr>(apply)->hasTrailingClosure();
+
   auto finishApplyOfDeclWithSpecialTypeCheckingSemantics
     = [&](ApplyExpr *apply,
           ValueDecl *decl,
@@ -6755,9 +6693,26 @@
       case DeclTypeCheckingSemantics::TypeOf: {
         // Resolve into a DynamicTypeExpr.
         auto arg = apply->getArg();
+
+        SmallVector<Identifier, 2> argLabelsScratch;
+
+        auto fnType = cs.getType(fn)->getAs<FunctionType>();
+        arg = coerceCallArguments(arg, fnType->getInput(),
+                                  apply,
+                                  apply->getArgumentLabels(argLabelsScratch),
+                                  hasTrailingClosure,
+                                  locator.withPathElement(
+                                    ConstraintLocator::ApplyArgument));
+        if (!arg) {
+          return nullptr;
+        }
+
+        if (auto shuffle = dyn_cast<TupleShuffleExpr>(arg))
+          arg = shuffle->getSubExpr();
+
         if (auto tuple = dyn_cast<TupleExpr>(arg))
           arg = tuple->getElements()[0];
-        arg = cs.coerceToRValue(arg);
+
         auto replacement = new (tc.Context)
           DynamicTypeExpr(apply->getFn()->getLoc(),
                           apply->getArg()->getStartLoc(),
@@ -6901,7 +6856,16 @@
     // Use the subexpression as the function.
     fn = covariant->getSubExpr();
   }
-  
+
+  // An immediate application of a closure literal is always noescape.
+  if (getClosureLiteralExpr(fn)) {
+    if (auto fnTy = cs.getType(fn)->getAs<FunctionType>()) {
+      fnTy = cast<FunctionType>(
+        fnTy->withExtInfo(fnTy->getExtInfo().withNoEscape()));
+      fn = coerceToType(fn, fnTy, locator);
+    }
+  }
+
   apply->setFn(fn);
 
   // Check whether the argument is 'super'.
@@ -6912,8 +6876,6 @@
   SmallVector<Identifier, 2> argLabelsScratch;
   if (auto fnType = cs.getType(fn)->getAs<FunctionType>()) {
     auto origArg = apply->getArg();
-    bool hasTrailingClosure =
-      isa<CallExpr>(apply) && cast<CallExpr>(apply)->hasTrailingClosure();
     Expr *arg = coerceCallArguments(origArg, fnType->getInput(),
                                     apply,
                                     apply->getArgumentLabels(argLabelsScratch),
@@ -6999,18 +6961,22 @@
   auto metaTy = cs.getType(fn)->castTo<AnyMetatypeType>();
   auto ty = metaTy->getInstanceType();
 
-  // If this is an UnresolvedType in the system, preserve it.
-  if (ty->is<UnresolvedType>()) {
-    cs.setType(apply, ty);
-    return apply;
-  }
-
-  // If the metatype value isn't a type expression, the user should reference
-  // '.init' explicitly, for clarity.
   if (!cs.isTypeReference(fn)) {
-    cs.TC.diagnose(apply->getArg()->getStartLoc(),
-                   diag::missing_init_on_metatype_initialization)
-      .fixItInsert(apply->getArg()->getStartLoc(), ".init");
+    bool isExistentialType = false;
+    // If this is an attempt to initialize existential type.
+    if (auto metaType = cs.getType(fn)->getAs<MetatypeType>()) {
+      auto instanceType = metaType->getInstanceType();
+      isExistentialType = instanceType->isExistentialType();
+    }
+
+    if (!isExistentialType) {
+      // If the metatype value isn't a type expression,
+      // the user should reference '.init' explicitly, for clarity.
+      cs.TC
+          .diagnose(apply->getArg()->getStartLoc(),
+                    diag::missing_init_on_metatype_initialization)
+          .fixItInsert(apply->getArg()->getStartLoc(), ".init");
+    }
   }
 
   // If we're "constructing" a tuple type, it's simply a conversion.
@@ -7021,12 +6987,18 @@
 
   // We're constructing a value of nominal type. Look for the constructor or
   // enum element to use.
-  assert(ty->getNominalOrBoundGenericNominal() || ty->is<DynamicSelfType>() ||
-         ty->isExistentialType() || ty->is<ArchetypeType>());
   auto ctorLocator = cs.getConstraintLocator(
                  locator.withPathElement(ConstraintLocator::ApplyFunction)
                         .withPathElement(ConstraintLocator::ConstructorMember));
   auto selected = getOverloadChoiceIfAvailable(ctorLocator);
+  if (!selected) {
+    assert(ty->hasError() || ty->hasUnresolvedType());
+    cs.setType(apply, ty);
+    return apply;
+  }
+
+  assert(ty->getNominalOrBoundGenericNominal() || ty->is<DynamicSelfType>() ||
+         ty->isExistentialType() || ty->is<ArchetypeType>());
 
   // We have the constructor.
   auto choice = selected->choice;
@@ -7195,17 +7167,6 @@
   return exprNeedsParensOutsideFollowingOperator(TC, DC, expr, rootExpr, asPG);
 }
 
-static bool exprNeedsParensInsidePostfixOperator(TypeChecker &TC,
-                                                 DeclContext *DC,
-                                                 Expr *expr) {
-  // Prefix and infix operators will bind outside of a postfix operator.
-  // Postfix operators will get token-merged with a new postfix operator.
-  return (isa<PrefixUnaryExpr>(expr) ||
-          isa<PostfixUnaryExpr>(expr) ||
-          isa<OptionalEvaluationExpr>(expr) ||
-          expr->isInfixOperator());
-}
-
 namespace {
   class ExprWalker : public ASTWalker {
     ExprRewriter &Rewriter;
@@ -7308,32 +7269,15 @@
 } // end anonymous namespace
 
 Expr *ConstraintSystem::coerceToRValue(Expr *expr) {
-  // Can't load from an inout value.
-  if (auto *iot = getType(expr)->getAs<InOutType>()) {
-    // Emit a fixit if we can find the & expression that turned this into an
-    // inout.
-    auto &tc = getTypeChecker();
-    if (auto addrOf =
-        dyn_cast<InOutExpr>(expr->getSemanticsProvidingExpr())) {
-      tc.diagnose(expr->getLoc(), diag::load_of_explicit_lvalue,
-                  iot->getObjectType())
-        .fixItRemove(SourceRange(addrOf->getLoc()));
-      return coerceToRValue(addrOf->getSubExpr());
-    } else {
-      tc.diagnose(expr->getLoc(), diag::load_of_explicit_lvalue,
-                  iot->getObjectType());
-      return expr;
-    }
-  }
-
-  // If we already have an rvalue, we're done, otherwise emit a load.
-  if (auto lvalueTy = getType(expr)->getAs<LValueType>()) {
-    propagateLValueAccessKind(expr, AccessKind::Read);
-    return cacheType(new (getASTContext())
-                         LoadExpr(expr, lvalueTy->getObjectType()));
-  }
-
-  return expr;
+  auto &tc = getTypeChecker();
+  return tc.coerceToRValue(expr,
+                           [&](Expr *expr) {
+                             return getType(expr);
+                           },
+                           [&](Expr *expr, Type type) {
+                             expr->setType(type);
+                             cacheType(expr);
+                           });
 }
 
 /// Emit the fixes computed as part of the solution, returning true if we were
@@ -7403,14 +7347,11 @@
     } else {
       auto diag = TC.diagnose(affected->getLoc(),
                               diag::missing_unwrap_optional, type);
-      bool parensNeeded =
-        exprNeedsParensInsidePostfixOperator(TC, DC, affected);
-
-      if (parensNeeded) {
+      if (affected->canAppendPostfixExpression(true)) {
+        diag.fixItInsertAfter(affected->getEndLoc(), "!");
+      } else {
         diag.fixItInsert(affected->getStartLoc(), "(")
             .fixItInsertAfter(affected->getEndLoc(), ")!");
-      } else {
-        diag.fixItInsertAfter(affected->getEndLoc(), "!");
       }
     }
     return true;
@@ -7556,6 +7497,10 @@
     return nullptr;
   }
 
+  // Mark any normal conformances used in this solution as "used".
+  for (auto &e : solution.Conformances)
+    TC.markConformanceUsed(e.second, DC);
+
   ExprRewriter rewriter(*this, solution, suppressDiagnostics, skipClosures);
   ExprWalker walker(rewriter);
 
@@ -7571,7 +7516,7 @@
                                    getConstraintLocator(expr));
     if (!result)
       return nullptr;
-  } else if (getType(result)->isLValueType() && !discardedExpr) {
+  } else if (getType(result)->hasLValueType() && !discardedExpr) {
     // We referenced an lvalue. Load it.
     result = rewriter.coerceToType(result, getType(result)->getRValueType(),
                                    getConstraintLocator(expr));
diff --git a/lib/Sema/CSDiag.cpp b/lib/Sema/CSDiag.cpp
index 8eaefb4..d28b642 100644
--- a/lib/Sema/CSDiag.cpp
+++ b/lib/Sema/CSDiag.cpp
@@ -755,10 +755,11 @@
   
   if (auto *ICE = dyn_cast<ImplicitConversionExpr>(immInfo.first))
     if (isa<LoadExpr>(ICE->getSubExpr())) {
-      TC.diagnose(loc, diagID, "implicit conversion from '" +
-                  ICE->getSubExpr()->getType()->getString() + "' to '" +
-                  ICE->getType()->getString() + "' requires a temporary")
-        .highlight(ICE->getSourceRange());
+      TC.diagnose(loc, diagID,
+                  "implicit conversion from '" +
+                      CS.getType(ICE->getSubExpr())->getString() + "' to '" +
+                      CS.getType(ICE)->getString() + "' requires a temporary")
+          .highlight(ICE->getSourceRange());
       return;
     }
 
@@ -772,8 +773,8 @@
     }
   }
 
-  TC.diagnose(loc, unknownDiagID, destExpr->getType())
-    .highlight(immInfo.first->getSourceRange());
+  TC.diagnose(loc, unknownDiagID, CS.getType(destExpr))
+      .highlight(immInfo.first->getSourceRange());
 }
 
 /// Helper to gather the argument labels from a tuple or paren type, for use
@@ -868,11 +869,9 @@
         }
       }
     }
-    UncurriedCandidate(Expr *expr)
-      : declOrExpr(expr), level(0), entityType(expr->getType()),
-        substituted(true) {
-    }
- 
+    UncurriedCandidate(Expr *expr, Type type)
+        : declOrExpr(expr), level(0), entityType(type), substituted(true) {}
+
     ValueDecl *getDecl() const {
       return declOrExpr.dyn_cast<ValueDecl*>();
     }
@@ -1439,7 +1438,7 @@
   // Check to see if the first argument expects an inout argument, but is not
   // an lvalue.
   Type firstArg = actualArgs[0].Ty;
-  if (candArgs[0].Ty->is<InOutType>() && !(firstArg->isLValueType() || firstArg->is<InOutType>()))
+  if (candArgs[0].Ty->is<InOutType>() && !(firstArg->hasLValueType() || firstArg->is<InOutType>()))
     return { CC_NonLValueInOut, {}};
   
   // If we have exactly one argument mismatching, classify it specially, so that
@@ -1564,8 +1563,8 @@
 
   if (auto TE = dyn_cast<TypeExpr>(fn)) {
     // It's always a metatype type, so use the instance type name.
-    auto instanceType = TE->getInstanceType();
-    
+    auto instanceType = CS->getInstanceType(TE);
+
     // TODO: figure out right value for isKnownPrivate
     if (instanceType->mayHaveMembers()) {
       auto ctors = CS->TC.lookupConstructors(CS->DC, instanceType,
@@ -1597,8 +1596,8 @@
       // substituted type, which resolves many generic arguments.
       Type baseType;
       if (isa<SelfApplyExpr>(AE) &&
-          !isUnresolvedOrTypeVarType(AE->getArg()->getType()))
-        baseType = AE->getArg()->getType()->getLValueOrInOutObjectType();
+          !isUnresolvedOrTypeVarType(CS->getType(AE->getArg())))
+        baseType = CS->getType(AE->getArg())->getLValueOrInOutObjectType();
 
       for (auto &C : candidates) {
         C.level += 1;
@@ -1661,7 +1660,7 @@
     // If we have useful information about the type we're
     // initializing, provide it.
     if (UDE->getName().getBaseName() == CS->TC.Context.Id_init) {
-      auto selfTy = UDE->getBase()->getType()->getLValueOrInOutObjectType();
+      auto selfTy = CS->getType(UDE->getBase())->getLValueOrInOutObjectType();
       if (!selfTy->hasTypeVariable())
         declName = selfTy.getString() + "." + declName;
     }
@@ -1696,7 +1695,7 @@
   }
   
   // Otherwise, just add the expression as a candidate.
-  candidates.push_back(fn);
+  candidates.push_back({fn, CS->getType(fn)});
 }
 
 /// After the candidate list is formed, it can be filtered down to discard
@@ -1871,8 +1870,8 @@
 /// archetype that has argument type errors, diagnose that error and
 /// return true.
 bool CalleeCandidateInfo::diagnoseGenericParameterErrors(Expr *badArgExpr) {
-  Type argType = badArgExpr->getType();
-  
+  Type argType = CS->getType(badArgExpr);
+
   // FIXME: For protocol argument types, could add specific error
   // similar to could_not_use_member_on_existential.
   if (argType->hasTypeVariable() || argType->is<ProtocolType>() ||
@@ -2037,7 +2036,7 @@
   Type getTypeOfTypeCheckedChildIndependently(Expr *subExpr,
                                             TCCOptions options = TCCOptions()) {
     auto e = typeCheckChildIndependently(subExpr, options);
-    return e ? e->getType() : Type();
+    return e ? CS->getType(e) : Type();
   }
 
   /// This is the same as typeCheckChildIndependently, but works on an arbitrary
@@ -2439,7 +2438,9 @@
   // Check if the expression is the matching operator ~=, most often used in
   // case statements. If so, try to provide a single dot fix-it
   const Expr *contextualTypeNode = nullptr;
+  ConstraintSystem *lastCS = nullptr;
   for (auto iterateCS = CS; iterateCS; iterateCS = iterateCS->baseCS) {
+    lastCS = iterateCS;
     contextualTypeNode = iterateCS->getContextualTypeNode();
   }
 
@@ -2456,7 +2457,8 @@
 
           // If the rhs of '~=' is the enum type, a single dot suffixes
           // since the type can be inferred
-          Type secondArgType = binaryExpr->getArg()->getElement(1)->getType();
+          Type secondArgType =
+              lastCS->getType(binaryExpr->getArg()->getElement(1));
           if (secondArgType->isEqual(baseObjTy)) {
             Diag->fixItInsert(loc, ".");
             return;
@@ -2790,7 +2792,7 @@
     // Technically we only need them if there's something in 'expr' with
     // lower precedence than '!=', but the code actually comes out nicer
     // in most cases with parens on anything non-trivial.
-    if (expr->canAppendCallParentheses()) {
+    if (expr->canAppendPostfixExpression()) {
       prefix = prefix.drop_back();
       suffix = suffix.drop_front();
     }
@@ -2832,7 +2834,7 @@
       
     auto sub = typeCheckArbitrarySubExprIndependently(anchor, options);
     if (!sub) return true;
-    fromType = sub->getType();
+    fromType = CS->getType(sub);
   }
 
   fromType = fromType->getRValueType();
@@ -2972,7 +2974,7 @@
       DeclName(CS->TC.Context.getIdentifier("boolValue")));
     if (!LookupResult.empty()) {
       if (isa<VarDecl>(LookupResult.begin()->Decl)) {
-        if (anchor->canAppendCallParentheses())
+        if (anchor->canAppendPostfixExpression())
           diagnose(anchor->getLoc(), diag::types_not_convertible_use_bool_value,
                    fromType, toType).fixItInsertAfter(anchor->getEndLoc(),
                                                       ".boolValue");
@@ -3001,10 +3003,10 @@
         constraint->getLocator()->getAnchor() == ECE->getSubExpr()) {
       if (!toType->isEqual(ECE->getCastTypeLoc().getType()))
         diagnose(expr->getLoc(), diag::in_cast_expr_types,
-                 ECE->getSubExpr()->getType()->getRValueType(),
+                 CS->getType(ECE->getSubExpr())->getRValueType(),
                  ECE->getCastTypeLoc().getType()->getRValueType())
-        .highlight(ECE->getSubExpr()->getSourceRange())
-        .highlight(ECE->getCastTypeLoc().getSourceRange());
+            .highlight(ECE->getSubExpr()->getSourceRange())
+            .highlight(ECE->getCastTypeLoc().getSourceRange());
   }
 
   return true;
@@ -3282,9 +3284,13 @@
   // expression (which may lead to infinite recursion).  If the client is
   // telling us that it knows what it is doing, then believe it.
   if (!options.contains(TCC_ForceRecheck)) {
-    if (Expr *res = CS->TC.isExprBeingDiagnosed(subExpr))
+    if (Expr *res = CS->TC.isExprBeingDiagnosed(subExpr)) {
+      // The types on the result might have already been cached into
+      // another CS, but likely not this one.
+      CS->cacheExprTypes(res);
       return res;
-  
+    }
+
     CS->TC.addExprForDiagnosis(subExpr, subExpr);
   }
 
@@ -3353,8 +3359,6 @@
                                              convertTypePurpose, TCEOptions,
                                              listener, CS);
 
-  CS->cacheExprTypes(subExpr);
-
   // This is a terrible hack to get around the fact that typeCheckExpression()
   // might change subExpr to point to a new OpenExistentialExpr. In that case,
   // since the caller passed subExpr by value here, they would be left
@@ -3376,6 +3380,8 @@
   }
   
   CS->TC.addExprForDiagnosis(preCheckedExpr, subExpr);
+  CS->cacheExprTypes(subExpr);
+
   return subExpr;
 }
 
@@ -3596,7 +3602,7 @@
     if (fromTypeIsOptional && toTypeIsOptional) {
       // Use optional's map function to convert conditionally, like so:
       //   expr.map{ T(rawValue: $0) }
-      bool needsParens = !expr->canAppendCallParentheses();
+      bool needsParens = !expr->canAppendPostfixExpression();
       std::string mapCodeFix;
       if (needsParens) {
         diag.fixItInsert(exprRange.Start, "(");
@@ -3611,6 +3617,24 @@
     } else if (!fromTypeIsOptional) {
       diag.fixItInsert(exprRange.Start, convWrapBefore);
       diag.fixItInsertAfter(exprRange.End, convWrapAfter);
+    } else {
+      SmallString<16> fixItBefore(convWrapBefore);
+      SmallString<16> fixItAfter;
+
+      if (!expr->canAppendPostfixExpression(true)) {
+        fixItBefore += "(";
+        fixItAfter = ")";
+      }
+
+      fixItAfter += "!" + convWrapAfter.str();
+
+      diag.flush();
+      CS->TC.diagnose(expr->getLoc(),
+                      diag::construct_raw_representable_from_unwrapped_value,
+                      toType, fromType)
+        .highlight(exprRange)
+        .fixItInsert(exprRange.Start, fixItBefore)
+        .fixItInsert(exprRange.End, fixItAfter);
     }
   };
 
@@ -3684,8 +3708,8 @@
   if (CS->TC.getLangOpts().FixStringToSubstringConversions) {
     // String -> Substring conversion
     // Add '[]' void subscript call to turn the whole String into a Substring
-    if (fromType->getCanonicalType() == String->getCanonicalType()) {
-      if (toType->getCanonicalType() == Substring->getCanonicalType()) {
+    if (fromType->isEqual(String)) {
+      if (toType->isEqual(Substring)) {
         diag.fixItInsertAfter(expr->getEndLoc (), "[]");
         return true;
       }
@@ -3694,8 +3718,8 @@
 
   // Substring -> String conversion
   // Wrap in String.init
-  if (fromType->getCanonicalType() == Substring->getCanonicalType()) {
-    if (toType->getCanonicalType() == String->getCanonicalType()) {
+  if (fromType->isEqual(Substring)) {
+    if (toType->isEqual(String)) {
       diag.fixItInsert(expr->getLoc(), "String(");
       diag.fixItInsertAfter(expr->getSourceRange().End, ")");
       return true;
@@ -3737,7 +3761,7 @@
   };
 
   if (Expr *innerE = getInnerCastedExpr()) {
-    Type innerTy = innerE->getType();
+    Type innerTy = CS->getType(innerE);
     if (CS->TC.isConvertibleTo(innerTy, toType, CS->DC)) {
       // Remove the unnecessary cast.
       diag.fixItRemoveChars(expr->getLoc(), innerE->getStartLoc())
@@ -3795,7 +3819,7 @@
   // Need to be referencing a parameter of function type
   auto declRef = dyn_cast<DeclRefExpr>(expr);
   if (!declRef || !isa<ParamDecl>(declRef->getDecl()) ||
-      !declRef->getType()->is<AnyFunctionType>())
+      !CS->getType(declRef)->is<AnyFunctionType>())
     return false;
 
   // Must be from non-escaping function to escaping function. For the
@@ -3828,8 +3852,7 @@
 
   // Give a note and fixit
   InFlightDiagnostic note = CS->TC.diagnose(
-      paramDecl->getLoc(), srcFT->isAutoClosure() ? diag::noescape_autoclosure
-                                                  : diag::noescape_parameter,
+      paramDecl->getLoc(), diag::noescape_parameter,
       paramDecl->getName());
 
   if (!srcFT->isAutoClosure()) {
@@ -3861,8 +3884,8 @@
     options |= TCC_AllowLValue;
 
   auto recheckedExpr = typeCheckChildIndependently(expr, options);
-  auto exprType = recheckedExpr ? recheckedExpr->getType() : Type();
-  
+  auto exprType = recheckedExpr ? CS->getType(recheckedExpr) : Type();
+
   // If it failed and diagnosed something, then we're done.
   if (!exprType) return true;
 
@@ -3939,10 +3962,10 @@
     auto &TC = CS->getTypeChecker();
     if (auto errorCodeProtocol =
             TC.Context.getProtocol(KnownProtocolKind::ErrorCodeProtocol)) {
-      if (auto conformance =
-            TC.conformsToProtocol(expr->getType(), errorCodeProtocol, CS->DC,
-                                  ConformanceCheckFlags::InExpression)) {
-        Type errorCodeType = expr->getType();
+      if (auto conformance = TC.conformsToProtocol(
+              CS->getType(expr), errorCodeProtocol, CS->DC,
+              ConformanceCheckFlags::InExpression)) {
+        Type errorCodeType = CS->getType(expr);
         Type errorType =
           ProtocolConformanceRef::getTypeWitnessByName(errorCodeType, *conformance,
                                                        TC.Context.Id_ErrorType,
@@ -4091,7 +4114,7 @@
                contextDecl == CS->TC.Context.getUnsafeRawPointerDecl() ||
                contextDecl == CS->TC.Context.getUnsafeMutableRawPointerDecl()) {
       for (Type arg : genericType->getGenericArgs()) {
-        if (arg->isEqual(exprType) && expr->getType()->isLValueType()) {
+        if (arg->isEqual(exprType) && CS->getType(expr)->hasLValueType()) {
           diagnose(expr->getLoc(), diagID, exprType, contextualType).
             fixItInsert(expr->getStartLoc(), "&");
           return true;
@@ -4520,27 +4543,24 @@
                 dyn_cast<InOutExpr>(exprResult->getSemanticsProvidingExpr())) {
             if (!currentParamType->is<InOutType>()) {
               diagnose(exprResult->getLoc(), diag::extra_address_of,
-                       exprResult->getType()->getInOutObjectType())
-                .highlight(exprResult->getSourceRange())
-                .fixItRemove(IOE->getStartLoc());
+                       CS->getType(exprResult)->getInOutObjectType())
+                  .highlight(exprResult->getSourceRange())
+                  .fixItRemove(IOE->getStartLoc());
               return nullptr;
             }
           }
 
           resultElts[inArgNo] = exprResult;
-          resultEltTys[inArgNo] = {
-            exprResult->getType(),
-            TE->getElementName(inArgNo)
-          };
+          resultEltTys[inArgNo] = {CS->getType(exprResult),
+                                   TE->getElementName(inArgNo)};
         }
       }
       
       auto TT = TupleType::get(resultEltTys, CS->getASTContext());
-      return TupleExpr::create(CS->getASTContext(), TE->getLParenLoc(),
-                               resultElts, TE->getElementNames(),
-                               TE->getElementNameLocs(),
-                               TE->getRParenLoc(), TE->hasTrailingClosure(),
-                               TE->isImplicit(), TT);
+      return CS->cacheType(TupleExpr::create(
+          CS->getASTContext(), TE->getLParenLoc(), resultElts,
+          TE->getElementNames(), TE->getElementNameLocs(), TE->getRParenLoc(),
+          TE->hasTrailingClosure(), TE->isImplicit(), TT));
     }
   }
   
@@ -4561,15 +4581,14 @@
     if (!elExpr) return nullptr; // already diagnosed.
     
     resultElts.push_back(elExpr);
-    resultEltTys.push_back({elExpr->getType(), TE->getElementName(i)});
+    resultEltTys.push_back({CS->getType(elExpr), TE->getElementName(i)});
   }
   
   auto TT = TupleType::get(resultEltTys, CS->getASTContext());
-  return TupleExpr::create(CS->getASTContext(), TE->getLParenLoc(),
-                           resultElts, TE->getElementNames(),
-                           TE->getElementNameLocs(),
-                           TE->getRParenLoc(), TE->hasTrailingClosure(),
-                           TE->isImplicit(), TT);
+  return CS->cacheType(TupleExpr::create(
+      CS->getASTContext(), TE->getLParenLoc(), resultElts,
+      TE->getElementNames(), TE->getElementNameLocs(), TE->getRParenLoc(),
+      TE->hasTrailingClosure(), TE->isImplicit(), TT));
 }
 
 static bool diagnoseImplicitSelfErrors(Expr *fnExpr, Expr *argExpr,
@@ -4613,7 +4632,7 @@
   // compiler would add implicit 'self.' prefix to the call of 'max'.
   ExprCleaner cleanup(argExpr);
 
-  auto argType = argExpr->getType();
+  auto argType = CS->getType(argExpr);
   // If argument wasn't properly type-checked, let's retry without changing AST.
   if (!argType || argType->hasUnresolvedType() || argType->hasTypeVariable() ||
       argType->hasTypeParameter()) {
@@ -4806,7 +4825,7 @@
 
   if (auto UDE = dyn_cast<UnresolvedDotExpr>(fnExpr)) {
     auto baseExpr = UDE->getBase();
-    auto baseType = baseExpr->getType();
+    auto baseType = CCI.CS->getType(baseExpr);
     if (auto *MT = baseType->getAs<MetatypeType>()) {
       auto DC = CCI.CS->DC;
       auto instanceType = MT->getInstanceType();
@@ -4850,7 +4869,7 @@
 
       // If this is a situation like this `self.foo(A())()` and self != A
       // let's say that `self` is not convertible to A.
-      if (auto nominalType = argExpr->getType()->getAs<NominalType>()) {
+      if (auto nominalType = CCI.CS->getType(argExpr)->getAs<NominalType>()) {
         if (!instanceType->isEqual(nominalType)) {
           TC.diagnose(argExpr->getStartLoc(), diag::types_not_convertible,
                       false, nominalType, instanceType);
@@ -4949,7 +4968,7 @@
       } else {
         TC.diagnose(argExpr->getLoc(),
                     diag::nested_tuple_parameter_destructuring, paramType,
-                    fnExpr->getType());
+                    CCI.CS->getType(fnExpr));
       }
       return true;
     }
@@ -4974,7 +4993,7 @@
   if (!argTy) return false;
 
   auto params = decomposeParamType(argTy, candidate.getDecl(), candidate.level);
-  auto args = decomposeArgType(argExpr->getType(), argLabels);
+  auto args = decomposeArgType(CCI.CS->getType(argExpr), argLabels);
 
   // Check the case where a raw-representable type is constructed from an
   // argument with the same type:
@@ -5014,7 +5033,7 @@
   }
 
   if (diagnoseTupleParameterMismatch(CCI, candidate.getArgumentType(),
-                                     argExpr->getType(), fnExpr, argExpr))
+                                     CCI.CS->getType(argExpr), fnExpr, argExpr))
     return true;
 
   // We only handle structural errors here.
@@ -5070,7 +5089,9 @@
         if (Paren) {
           SubExpr = Paren->getSubExpr();
         }
-        if (SubExpr && SubExpr->getType() && SubExpr->getType()->isVoid()) {
+
+        if (SubExpr && CandidateInfo.CS->getType(SubExpr) &&
+            CandidateInfo.CS->getType(SubExpr)->isVoid()) {
           TC.diagnose(loc, diag::extra_argument_to_nullary_call)
             .fixItRemove(SubExpr->getSourceRange());
         } else {
@@ -5185,11 +5206,13 @@
               TC.Context.SourceMgr, FnExpr->getEndLoc());
         }
       } else {
+        auto &CS = *CandidateInfo.CS;
+        (void)CS;
         // FIXME: Due to a quirk of CSApply, we can end up without a
         // ParenExpr if the argument has an '@lvalue TupleType'.
-        assert((isa<TupleType>(ArgExpr->getType().getPointer()) ||
-                isa<ParenType>(ArgExpr->getType().getPointer())) &&
-                "unexpected argument expression type");
+        assert((isa<TupleType>(CS.getType(ArgExpr).getPointer()) ||
+                isa<ParenType>(CS.getType(ArgExpr).getPointer())) &&
+               "unexpected argument expression type");
         insertLoc = ArgExpr->getLoc();
 
         // Can't be TupleShuffleExpr because this argExpr is not yet resolved.
@@ -5299,13 +5322,104 @@
       .diagnose();
 }
 
+static bool isRawRepresentableMismatch(Type fromType, Type toType,
+                                       KnownProtocolKind kind,
+                                       const ConstraintSystem *CS) {
+  toType = toType->lookThroughAllAnyOptionalTypes();
+  fromType = fromType->lookThroughAllAnyOptionalTypes();
+
+  // First check if this is an attempt to convert from something to
+  // raw representable.
+  if (conformsToKnownProtocol(fromType, kind, CS)) {
+    if (auto rawType = isRawRepresentable(toType, kind, CS))
+      return true;
+  }
+
+  // Otherwise, it might be an attempt to convert from raw representable
+  // to its raw value.
+  if (auto rawType = isRawRepresentable(fromType, kind, CS)) {
+    if (conformsToKnownProtocol(toType, kind, CS))
+      return true;
+  }
+
+  return false;
+}
+
+static bool diagnoseRawRepresentableMismatch(CalleeCandidateInfo &CCI,
+                                             Expr *argExpr,
+                                             ArrayRef<Identifier> argLabels) {
+  // We are only interested in cases which are
+  // unrelated to argument count or label mismatches.
+  switch (CCI.closeness) {
+    case CC_OneArgumentNearMismatch:
+    case CC_OneArgumentMismatch:
+    case CC_OneGenericArgumentNearMismatch:
+    case CC_OneGenericArgumentMismatch:
+    case CC_ArgumentNearMismatch:
+    case CC_ArgumentMismatch:
+      break;
+
+    default:
+      return false;
+  }
+
+  auto argType = CCI.CS->getType(argExpr);
+  if (!argType || argType->hasTypeVariable() || argType->hasUnresolvedType())
+    return false;
+
+  ArrayRef<KnownProtocolKind> rawRepresentableProtocols = {
+      KnownProtocolKind::ExpressibleByStringLiteral,
+      KnownProtocolKind::ExpressibleByIntegerLiteral};
+
+  const auto *CS = CCI.CS;
+  auto arguments = decomposeArgType(argType, argLabels);
+  auto *tupleArgs = dyn_cast<TupleExpr>(argExpr);
+
+  for (auto &candidate : CCI.candidates) {
+    auto *decl = candidate.getDecl();
+    if (!decl)
+      continue;
+
+    auto parameters =
+        decomposeParamType(candidate.getArgumentType(), decl, candidate.level);
+
+    if (parameters.size() != arguments.size())
+      continue;
+
+    for (unsigned i = 0, n = parameters.size(); i != n; ++i) {
+      auto paramType = parameters[i].Ty;
+      auto argType = arguments[i].Ty;
+
+      for (auto kind : rawRepresentableProtocols) {
+        // If trying to convert from raw type to raw representable,
+        // or vice versa from raw representable (e.g. enum) to raw type.
+        if (!isRawRepresentableMismatch(argType, paramType, kind, CS))
+          continue;
+
+        auto *expr = argExpr;
+        if (tupleArgs)
+          expr = tupleArgs->getElement(i);
+
+        auto diag =
+            CS->TC.diagnose(expr->getLoc(), diag::cannot_convert_argument_value,
+                            argType, paramType);
+
+        tryRawRepresentableFixIts(diag, CS, argType, paramType, kind, expr);
+        return true;
+      }
+    }
+  }
+
+  return false;
+}
+
 /// If the candidate set has been narrowed down to a specific structural
 /// problem, e.g. that there are too few parameters specified or that argument
 /// labels don't match up, diagnose that error and return true.
 bool FailureDiagnosis::diagnoseParameterErrors(CalleeCandidateInfo &CCI,
                                                Expr *fnExpr, Expr *argExpr,
                                                ArrayRef<Identifier> argLabels) {
-  if (auto *MTT = fnExpr->getType()->getAs<MetatypeType>()) {
+  if (auto *MTT = CS->getType(fnExpr)->getAs<MetatypeType>()) {
     auto instTy = MTT->getInstanceType();
     if (instTy->getAnyNominal()) {
       // If we are invoking a constructor on a nominal type and there are
@@ -5395,7 +5509,7 @@
 bool FailureDiagnosis::visitSubscriptExpr(SubscriptExpr *SE) {
   auto baseExpr = typeCheckChildIndependently(SE->getBase());
   if (!baseExpr) return true;
-  auto baseType = baseExpr->getType();
+  auto baseType = CS->getType(baseExpr);
 
   if (isa<NilLiteralExpr>(baseExpr)) {
     diagnose(baseExpr->getLoc(), diag::cannot_subscript_nil_literal)
@@ -5427,7 +5541,7 @@
     if (diagnoseParameterErrors(calleeInfo, SE, indexExpr, argLabels))
       return true;
 
-    auto indexType = indexExpr->getType();
+    auto indexType = CS->getType(indexExpr);
 
     auto decomposedBaseType = decomposeArgType(baseType, {Identifier()});
     auto decomposedIndexType = decomposeArgType(indexType, argLabels);
@@ -5567,8 +5681,8 @@
       auto locator = cs.getConstraintLocator(expr);
 
       // Add a conversion constraint between the types.
-      cs.addConstraint(ConstraintKind::Conversion, expr->getType(),
-                       fTy, locator, /*isFavored*/true);
+      cs.addConstraint(ConstraintKind::Conversion, cs.getType(expr), fTy,
+                       locator, /*isFavored*/ true);
       return false;
     }
   };
@@ -5608,7 +5722,7 @@
   if (isa<NilLiteralExpr>(otherExpr->getValueProvidingExpr()))
     return false;
 
-  auto otherType = otherExpr->getType()->getRValueType();
+  auto otherType = CS->getType(otherExpr)->getRValueType();
 
   // Bail if we were unable to determine the other type.
   if (isUnresolvedOrTypeVarType(otherType))
@@ -5645,7 +5759,7 @@
     return false;
 
   auto argExpr = callExpr->getArg();
-  auto argType = argExpr->getType();
+  auto argType = CS->getType(argExpr);
 
   // If type of the argument hasn't been established yet, we can't diagnose.
   if (!argType || isUnresolvedOrTypeVarType(argType))
@@ -5661,7 +5775,7 @@
   // might be related to function attributes which is best diagnosed by
   // unviable member candidates, if any.
   auto base = UDE->getBase();
-  auto baseType = base->getType();
+  auto baseType = CS->getType(base);
 
   // This handles following situation:
   // struct S {
@@ -5738,7 +5852,7 @@
   auto const &candidate = candidates.candidates[0];
   auto params = decomposeParamType(candidate.getArgumentType(),
                                    candidate.getDecl(), candidate.level);
-  auto args = decomposeArgType(argExpr->getType(), argLabels);
+  auto args = decomposeArgType(CS->getType(argExpr), argLabels);
 
   SmallVector<ParamBinding, 4> bindings;
   MatchCallArgumentListener listener;
@@ -5801,15 +5915,16 @@
 
 /// When initializing Unsafe[Mutable]Pointer<T> from Unsafe[Mutable]RawPointer,
 /// issue a diagnostic that refers to the API for binding memory to a type.
-static bool isCastToTypedPointer(ASTContext &Ctx, const Expr *Fn,
-                                 const Expr* Arg) {
+static bool isCastToTypedPointer(ConstraintSystem *CS, const Expr *Fn,
+                                 const Expr *Arg) {
+  auto &Ctx = CS->DC->getASTContext();
   auto *TypeExp = dyn_cast<TypeExpr>(Fn);
   auto *ParenExp = dyn_cast<ParenExpr>(Arg);
   if (!TypeExp || !ParenExp)
     return false;
 
-  auto InitType = TypeExp->getInstanceType();
-  auto ArgType = ParenExp->getSubExpr()->getType();
+  auto InitType = CS->getInstanceType(TypeExp);
+  auto ArgType = CS->getType(ParenExp->getSubExpr());
   if (InitType.isNull() || ArgType.isNull())
     return false;
 
@@ -5856,7 +5971,7 @@
     return fnType;
   };
 
-  auto fnType = getFuncType(fnExpr->getType());
+  auto fnType = getFuncType(CS->getType(fnExpr));
 
   // If we have a contextual type, and if we have an ambiguously typed function
   // result from our previous check, we re-type-check it using this contextual
@@ -5894,7 +6009,7 @@
       if (!fnExpr)
         return true;
 
-      fnType = getFuncType(fnExpr->getType());
+      fnType = getFuncType(CS->getType(fnExpr));
     }
   }
 
@@ -5906,9 +6021,9 @@
     auto arg = callExpr->getArg();
 
     {
-      auto diag = diagnose(arg->getStartLoc(),
-                           diag::cannot_call_non_function_value,
-                           fnExpr->getType());
+      auto diag =
+          diagnose(arg->getStartLoc(), diag::cannot_call_non_function_value,
+                   CS->getType(fnExpr));
       diag.highlight(fnExpr->getSourceRange());
 
       // If the argument is an empty tuple, then offer a
@@ -6007,7 +6122,7 @@
   if (!argExpr)
     return true; // already diagnosed.
 
-  calleeInfo.filterList(argExpr->getType(), argLabels);
+  calleeInfo.filterList(CS->getType(argExpr), argLabels);
 
   if (diagnoseParameterErrors(calleeInfo, callExpr->getFn(), argExpr,
                               argLabels))
@@ -6054,7 +6169,7 @@
   
   // Handle argument label mismatches when we have multiple candidates.
   if (calleeInfo.closeness == CC_ArgumentLabelMismatch) {
-    auto args = decomposeArgType(argExpr->getType(), argLabels);
+    auto args = decomposeArgType(CS->getType(argExpr), argLabels);
 
     // If we have multiple candidates that we fail to match, just say we have
     // the wrong labels and list the candidates out.
@@ -6103,8 +6218,8 @@
   if (isa<BinaryExpr>(callExpr) && isa<TupleExpr>(argExpr)) {
     auto argTuple = cast<TupleExpr>(argExpr);
     auto lhsExpr = argTuple->getElement(0), rhsExpr = argTuple->getElement(1);
-    auto lhsType = lhsExpr->getType()->getRValueType();
-    auto rhsType = rhsExpr->getType()->getRValueType();
+    auto lhsType = CS->getType(lhsExpr)->getRValueType();
+    auto rhsType = CS->getType(rhsExpr)->getRValueType();
 
     // Diagnose any comparisons with the nil literal.
     if (diagnoseNilLiteralComparison(lhsExpr, rhsExpr, calleeInfo,
@@ -6124,7 +6239,7 @@
       diag.highlight(rhsExpr->getSourceRange());
       if (auto optUnwrappedType = rhsType->getOptionalObjectType()) {
         if (lhsType->isEqual(optUnwrappedType)) {
-          diag.fixItInsert(lhsExpr->getEndLoc(), "?");
+          diag.fixItInsertAfter(lhsExpr->getEndLoc(), "?");
         }
       }
       return true;
@@ -6145,6 +6260,9 @@
     if (isContextualConversionFailure(argTuple))
       return false;
 
+    if (diagnoseRawRepresentableMismatch(calleeInfo, argExpr, argLabels))
+      return true;
+
     if (!lhsType->isEqual(rhsType)) {
       diagnose(callExpr->getLoc(), diag::cannot_apply_binop_to_args,
                overloadName, lhsType, rhsType)
@@ -6188,17 +6306,19 @@
   if (isa<PrefixUnaryExpr>(callExpr) || isa<PostfixUnaryExpr>(callExpr)) {
     assert(!overloadName.empty());
     diagnose(argExpr->getLoc(), diag::cannot_apply_unop_to_arg, overloadName,
-             argExpr->getType());
-    
+             CS->getType(argExpr));
+
     calleeInfo.suggestPotentialOverloads(argExpr->getLoc());
     return true;
   }
 
-  if (argExpr->getType()->hasUnresolvedType())
+  if (CS->getType(argExpr)->hasUnresolvedType())
     return false;
-  
-  
-  std::string argString = getTypeListString(argExpr->getType());
+
+  if (diagnoseRawRepresentableMismatch(calleeInfo, argExpr, argLabels))
+    return true;
+
+  std::string argString = getTypeListString(CS->getType(argExpr));
 
   // If we couldn't get the name of the callee, then it must be something of a
   // more complex "value of function type".
@@ -6248,7 +6368,7 @@
              overloadName, argString, isInitializer);
   }
 
-  if (isCastToTypedPointer(CS->DC->getASTContext(), fnExpr, argExpr)) {
+  if (isCastToTypedPointer(CS, fnExpr, argExpr)) {
     diagnose(fnExpr->getLoc(), diag::pointer_init_to_type)
       .highlight(argExpr->getSourceRange());
   }
@@ -6273,7 +6393,7 @@
                                               TCC_AllowLValue);
   if (!destExpr) return true;
 
-  auto destType = destExpr->getType();
+  auto destType = CS->getType(destExpr);
   if (destType->is<UnresolvedType>() || destType->hasTypeVariable()) {
     // Look closer into why destination has unresolved types since such
     // means that destination has diagnosable structural problems, and it's
@@ -6292,7 +6412,7 @@
 
   // If the result type is a non-lvalue, then we are failing because it is
   // immutable and that's not a great thing to assign to.
-  if (!destType->isLValueType()) {
+  if (!destType->hasLValueType()) {
     CS->diagnoseAssignmentFailure(destExpr, destType, assignExpr->getLoc());
     return true;
   }
@@ -6306,7 +6426,7 @@
   // If we are assigning to _ and have unresolved types on the RHS, then we have
   // an ambiguity problem.
   if (isa<DiscardAssignmentExpr>(destExpr->getSemanticsProvidingExpr()) &&
-      srcExpr->getType()->hasUnresolvedType()) {
+      CS->getType(srcExpr)->hasUnresolvedType()) {
     diagnoseAmbiguity(srcExpr);
     return true;
   }
@@ -6349,7 +6469,7 @@
       
       // Furthermore, if the subexpr type is already known to be an array type,
       // then we must have an attempt at an array to pointer conversion.
-      if (isKnownToBeArrayType(IOE->getSubExpr()->getType())) {
+      if (isKnownToBeArrayType(CS->getType(IOE->getSubExpr()))) {
         // If we're converting to an UnsafeMutablePointer, then the pointer to
         // the first element is being passed in.  The array is ok, so long as
         // it is mutable.
@@ -6382,10 +6502,10 @@
                                              TCC_AllowLValue);
   if (!subExpr) return true;
 
-  auto subExprType = subExpr->getType();
+  auto subExprType = CS->getType(subExpr);
 
   // The common cause is that the operand is not an lvalue.
-  if (!subExprType->isLValueType()) {
+  if (!subExprType->hasLValueType()) {
     diagnoseSubElementFailure(subExpr, IOE->getLoc(), *CS,
                               diag::cannot_pass_rvalue_inout_subelement,
                               diag::cannot_pass_rvalue_inout);
@@ -6408,7 +6528,7 @@
 bool FailureDiagnosis::visitForceValueExpr(ForceValueExpr *FVE) {
   auto argExpr = typeCheckChildIndependently(FVE->getSubExpr());
   if (!argExpr) return true;
-  auto argType = argExpr->getType();
+  auto argType = CS->getType(argExpr);
 
   // If the subexpression type checks as a non-optional type, then that is the
   // error.  Produce a specific diagnostic about this.
@@ -6426,7 +6546,7 @@
 bool FailureDiagnosis::visitBindOptionalExpr(BindOptionalExpr *BOE) {
   auto argExpr = typeCheckChildIndependently(BOE->getSubExpr());
   if (!argExpr) return true;
-  auto argType = argExpr->getType();
+  auto argType = CS->getType(argExpr);
 
   // If the subexpression type checks as a non-optional type, then that is the
   // error.  Produce a specific diagnostic about this.
@@ -6452,14 +6572,14 @@
   if (!falseExpr) return true;
 
   // If the true/false values already match, it must be a contextual problem.
-  if (trueExpr->getType()->isEqual(falseExpr->getType()))
+  if (CS->getType(trueExpr)->isEqual(CS->getType(falseExpr)))
     return false;
   
   // Otherwise, the true/false result types must not be matching.
   diagnose(IE->getColonLoc(), diag::if_expr_cases_mismatch,
-           trueExpr->getType(), falseExpr->getType())
-    .highlight(trueExpr->getSourceRange())
-    .highlight(falseExpr->getSourceRange());
+           CS->getType(trueExpr), CS->getType(falseExpr))
+      .highlight(trueExpr->getSourceRange())
+      .highlight(falseExpr->getSourceRange());
   return true;
 }
 
@@ -6561,7 +6681,7 @@
                                  diag::closure_tuple_parameter_destructuring,
                                  argTupleTy);
             Type actualArgType;
-            if (auto *actualFnType = CE->getType()->getAs<AnyFunctionType>())
+            if (auto *actualFnType = CS->getType(CE)->getAs<AnyFunctionType>())
               actualArgType = actualFnType->getInput();
 
             auto *closureBody = CE->getBody();
@@ -6634,7 +6754,7 @@
               //  - if the there is a result type associated with the closure;
               //  - and it's not a void type;
               //  - and it hasn't been explicitly written.
-              auto resultType = CE->getResultType();
+              auto resultType = CS->getResultType(CE);
               auto hasResult = [](Type resultType) -> bool {
                 return resultType && !resultType->isVoid();
               };
@@ -6674,6 +6794,11 @@
         }
       }
 
+      bool onlyAnonymousParams =
+      std::all_of(params->begin(), params->end(), [](ParamDecl *param) {
+        return !param->hasName();
+      });
+
       // Okay, the wrong number of arguments was used, complain about that.
       // Before doing so, strip attributes off the function type so that they
       // don't confuse the issue.
@@ -6682,15 +6807,22 @@
           params->getStartLoc(), diag::closure_argument_list_tuple, fnType,
           inferredArgCount, actualArgCount, (actualArgCount == 1));
 
+      // If closure expects no parameters but N was given,
+      // and all of them are anonymous let's suggest removing them.
+      if (inferredArgCount == 0 && onlyAnonymousParams) {
+        auto inLoc = CE->getInLoc();
+        auto &sourceMgr = CS->getASTContext().SourceMgr;
+
+        if (inLoc.isValid())
+          diag.fixItRemoveChars(params->getStartLoc(),
+                                Lexer::getLocForEndOfToken(sourceMgr, inLoc));
+        return true;
+      }
+
       // If the number of parameters is less than number of inferred
       // and all of the parameters are anonymous, let's suggest a fix-it
       // with the rest of the missing parameters.
       if (actualArgCount < inferredArgCount) {
-        bool onlyAnonymousParams =
-        std::all_of(params->begin(), params->end(), [](ParamDecl *param) {
-          return !param->hasName();
-        });
-
         SmallString<32> fixIt;
         llvm::raw_svector_ostream OS(fixIt);
 
@@ -6801,7 +6933,7 @@
   // doesn't do this for closures.
   if (contextualType) {
     auto fnType = contextualType->getAs<AnyFunctionType>();
-    if (!fnType || fnType->isEqual(CE->getType()))
+    if (!fnType || fnType->isEqual(CS->getType(CE)))
       return false;
 
     // If the closure had an explicitly written return type incompatible with
@@ -7654,7 +7786,7 @@
       // arguments,
       // then we fail with a nice error message.
       if (!candidateArgTy) {
-        if (argExpr->getType()->isVoid()) {
+        if (CS->getType(argExpr)->isVoid()) {
           diagnose(E->getNameLoc(),
                    diag::unexpected_parens_in_contextual_member, E->getName())
               .fixItRemove(E->getArgument()->getSourceRange());
@@ -7724,7 +7856,7 @@
     if (!baseExpr)
       return true;
 
-    baseTy = baseExpr->getType()->getLValueOrInOutObjectType();
+    baseTy = CS->getType(baseExpr)->getLValueOrInOutObjectType();
     baseObjTy = baseTy;
   }
 
@@ -8005,9 +8137,9 @@
           dyn_cast<InOutExpr>(exprResult->getSemanticsProvidingExpr())) {
       if (!actualType->is<InOutType>()) {
         diagnose(exprResult->getLoc(), diag::extra_address_of,
-                 exprResult->getType()->getInOutObjectType())
-        .highlight(exprResult->getSourceRange())
-        .fixItRemove(IOE->getStartLoc());
+                 CS->getType(exprResult)->getInOutObjectType())
+            .highlight(exprResult->getSourceRange())
+            .fixItRemove(IOE->getStartLoc());
         return true;
       }
     }
@@ -8328,7 +8460,7 @@
       closure->hasExplicitResultType())
     return false;
 
-  auto closureType = closure->getType()->getAs<AnyFunctionType>();
+  auto closureType = CS->getType(closure)->getAs<AnyFunctionType>();
   if (!closureType ||
       !(closureType->getResult()->hasUnresolvedType() ||
         closureType->getResult()->hasTypeVariable()))
@@ -8390,9 +8522,9 @@
       // constraint system through declaration types.
       bool hasUnresolvedParams = false;
       resultExpr->forEachChildExpr([&](Expr *childExpr) -> Expr *{
-        if (auto DRE = dyn_cast<DeclRefExpr>(resultExpr)) {
+        if (auto DRE = dyn_cast<DeclRefExpr>(childExpr)) {
           if (auto param = dyn_cast<ParamDecl>(DRE->getDecl())) {
-            auto paramType = param->getType();
+            auto paramType = param->hasType() ? param->getType() : Type();
             if (!paramType || paramType->hasTypeVariable()) {
               hasUnresolvedParams = true;
               return nullptr;
diff --git a/lib/Sema/CSGen.cpp b/lib/Sema/CSGen.cpp
index bf45b69..3535edf 100644
--- a/lib/Sema/CSGen.cpp
+++ b/lib/Sema/CSGen.cpp
@@ -1710,7 +1710,7 @@
         unsigned index = 0;
         for (auto element : expr->getElements()) {
           CS.addConstraint(ConstraintKind::Conversion,
-                           element->getType(),
+                           CS.getType(element),
                            contextualArrayElementType,
                            CS.getConstraintLocator(expr,
                                                    LocatorPathElt::
@@ -1738,7 +1738,7 @@
       unsigned index = 0;
       for (auto element : expr->getElements()) {
         CS.addConstraint(ConstraintKind::Conversion,
-                         element->getType(),
+                         CS.getType(element),
                          arrayElementTy,
                          CS.getConstraintLocator(
                            expr,
@@ -2002,7 +2002,7 @@
         // This will avoid exponential typecheck behavior in the case of nested
         // array and dictionary literals.
         Type ty = haveBoundCollectionLiteral ?
-                    boundExpr->getType() :
+                    CS.getType(boundExpr) :
                     CS.createTypeVariable(CS.getConstraintLocator(locator),
                                           TVO_CanBindToInOut);
 
@@ -2060,7 +2060,7 @@
 
     Type visitCaptureListExpr(CaptureListExpr *expr) {
       // The type of the capture list is just the type of its closure.
-      return expr->getClosureBody()->getType();
+      return CS.getType(expr->getClosureBody());
     }
 
     /// \brief Walk a closure body to determine if it's possible for
@@ -2716,8 +2716,7 @@
     }
     
     Type visitEnumIsCaseExpr(EnumIsCaseExpr *expr) {
-      // Should already be type-checked.
-      return expr->getType();
+      return CS.getASTContext().getBoolDecl()->getDeclaredType();
     }
 
     Type visitEditorPlaceholderExpr(EditorPlaceholderExpr *E) {
@@ -2773,7 +2772,7 @@
 
     Type visitKeyPathExpr(KeyPathExpr *E) {
       if (E->isObjC())
-        return E->getObjCStringLiteralExpr()->getType();
+        return CS.getType(E->getObjCStringLiteralExpr());
       
       auto kpDecl = CS.getASTContext().getKeyPathDecl();
       
diff --git a/lib/Sema/CSRanking.cpp b/lib/Sema/CSRanking.cpp
index ba4600b..ce1cd3f 100644
--- a/lib/Sema/CSRanking.cpp
+++ b/lib/Sema/CSRanking.cpp
@@ -70,19 +70,15 @@
     case SK_ValueToOptional:
       log << "value to optional";
       break;
-
-    case SK_ArrayPointerConversion:
-      log << "array-to-pointer conversion";
-      break;
-    case SK_ScalarPointerConversion:
-      log << "scalar-to-pointer conversion";
-      break;
     case SK_EmptyExistentialConversion:
       log << "empty-existential conversion";
       break;
     case SK_KeyPathSubscript:
       log << "key path subscript";
       break;
+    case SK_ValueToPointerConversion:
+      log << "value-to-pointer conversion";
+      break;
     }
     log << ")\n";
   }
diff --git a/lib/Sema/CSSimplify.cpp b/lib/Sema/CSSimplify.cpp
index c7aa589..bd15bbf 100644
--- a/lib/Sema/CSSimplify.cpp
+++ b/lib/Sema/CSSimplify.cpp
@@ -1441,7 +1441,7 @@
         // If the left-hand type variable cannot bind to an lvalue,
         // but we still have an lvalue, fail.
         if (!typeVar1->getImpl().canBindToLValue() &&
-            type2->isLValueType())
+            type2->hasLValueType())
           return SolutionKind::Error;
 
         // Okay. Bind below.
@@ -1489,7 +1489,7 @@
       }
 
       if (!typeVar2->getImpl().canBindToLValue() &&
-          type1->isLValueType()) {
+          type1->hasLValueType()) {
         return SolutionKind::Error;
         
         // Okay. Bind below.
@@ -2080,7 +2080,7 @@
                 // Favor an UnsafeMutablePointer-to-UnsafeMutablePointer
                 // conversion.
                 if (type1PointerKind != pointerKind)
-                  increaseScore(ScoreKind::SK_ScalarPointerConversion);
+                  increaseScore(ScoreKind::SK_ValueToPointerConversion);
                 conversionsOrFixes.push_back(
                   ConversionRestrictionKind::PointerToPointer);
               }
@@ -2088,7 +2088,7 @@
               else if (type1PointerKind == PTK_UnsafeMutableRawPointer &&
                        pointerKind == PTK_UnsafeRawPointer) {
                 if (type1PointerKind != pointerKind)
-                  increaseScore(ScoreKind::SK_ScalarPointerConversion);
+                  increaseScore(ScoreKind::SK_ValueToPointerConversion);
                 conversionsOrFixes.push_back(
                   ConversionRestrictionKind::PointerToPointer);              
               }
@@ -2473,17 +2473,27 @@
   // separately.
   switch (kind) {
   case ConstraintKind::SelfObjectOfProtocol:
-    if (TC.containsProtocol(type, protocol, DC,
-                            ConformanceCheckFlags::InExpression))
+    if (auto conformance =
+          TC.containsProtocol(type, protocol, DC,
+                              ConformanceCheckFlags::InExpression)) {
+      CheckedConformances.push_back({getConstraintLocator(locator),
+                                     *conformance});
       return SolutionKind::Solved;
+    }
     break;
   case ConstraintKind::ConformsTo:
-  case ConstraintKind::LiteralConformsTo:
+  case ConstraintKind::LiteralConformsTo: {
     // Check whether this type conforms to the protocol.
-    if (TC.conformsToProtocol(type, protocol, DC,
-                              ConformanceCheckFlags::InExpression))
+    if (auto conformance =
+          TC.conformsToProtocol(type, protocol, DC,
+                                ConformanceCheckFlags::InExpression)) {
+      CheckedConformances.push_back({getConstraintLocator(locator),
+                                     *conformance});
       return SolutionKind::Solved;
+    }
     break;
+  }
+
   default:
     llvm_unreachable("bad constraint kind");
   }
@@ -2980,8 +2990,8 @@
           }
         }
       }
-      
-      // If the invocation's argument expression has a favored constraint,
+
+      // If the invocation's argument expression has a favored type,
       // use that information to determine whether a specific overload for
       // the initializer should be favored.
       if (favoredType && result.FavoredChoice == ~0U) {
@@ -2996,7 +3006,8 @@
             argType = ctor.Decl->getInnermostDeclContext()
                 ->mapTypeIntoContext(argType);
             if (argType->isEqual(favoredType))
-              result.FavoredChoice = result.ViableCandidates.size();
+              if (!ctor->getAttrs().isUnavailable(getASTContext()))
+                result.FavoredChoice = result.ViableCandidates.size();
           }
         }
       }
@@ -4111,14 +4122,6 @@
           == SolutionKind::Error)
       return SolutionKind::Error;
 
-    // If our type constraints is for a FunctionType, move over the @noescape
-    // flag.
-    if (func1->isNoEscape() &&
-        !func2->isNoEscape() &&
-        func2->hasTypeVariable()) {
-      auto &extraExtInfo = extraFunctionAttrs[func2];
-      extraExtInfo = extraExtInfo.withNoEscape();
-    }
     return SolutionKind::Solved;
   }
 
@@ -4386,6 +4389,7 @@
     auto baseType1 = getFixedTypeRecursive(*isArrayType(obj1), false, false);
     auto baseType2 = getBaseTypeForPointer(*this, t2);
 
+    increaseScore(ScoreKind::SK_ValueToPointerConversion);
     return matchTypes(baseType1, baseType2,
                       ConstraintKind::BindToPointerType,
                       subflags, locator);
@@ -4405,6 +4409,8 @@
     // If we haven't resolved the element type, generate constraints.
     if (baseType2->isTypeVariableOrMember()) {
       if (flags.contains(TMF_GenerateConstraints)) {
+        increaseScore(ScoreKind::SK_ValueToPointerConversion);
+
         auto int8Con = Constraint::create(*this, ConstraintKind::Bind,
                                        baseType2, TC.getInt8Type(DC),
                                        getConstraintLocator(locator));
@@ -4426,6 +4432,8 @@
     if (!isStringCompatiblePointerBaseType(TC, DC, baseType2)) {
       return SolutionKind::Error;
     }
+
+    increaseScore(ScoreKind::SK_ValueToPointerConversion);
     return SolutionKind::Solved;
   }
       
@@ -4440,6 +4448,7 @@
     
     // Set up the disjunction for the array or scalar cases.
 
+    increaseScore(ScoreKind::SK_ValueToPointerConversion);
     return matchTypes(baseType1, baseType2,
                       ConstraintKind::BindToPointerType,
                       subflags, locator);
diff --git a/lib/Sema/CSSolver.cpp b/lib/Sema/CSSolver.cpp
index 6de3dc3..3c4a82d 100644
--- a/lib/Sema/CSSolver.cpp
+++ b/lib/Sema/CSSolver.cpp
@@ -115,10 +115,6 @@
     solverState->BestScore = CurrentScore;
   }
 
-  // For any of the type variables that has no associated fixed type, assign a
-  // fresh generic type parameters.
-  // FIXME: We could gather the requirements on these as well.
-  unsigned index = 0;
   for (auto tv : TypeVariables) {
     if (getFixedType(tv))
       continue;
@@ -129,10 +125,6 @@
 
     case FreeTypeVariableBinding::Allow:
       break;
-
-    case FreeTypeVariableBinding::GenericParameters:
-      assignFixedType(tv, GenericTypeParamType::get(0, index++, TC.Context));
-      break;
         
     case FreeTypeVariableBinding::UnresolvedType:
       assignFixedType(tv, TC.Context.TheUnresolvedType);
@@ -209,6 +201,9 @@
   solution.DefaultedConstraints.insert(DefaultedConstraints.begin(),
                                        DefaultedConstraints.end());
 
+  for (auto &e : CheckedConformances)
+    solution.Conformances.push_back({e.first, e.second});
+
   return solution;
 }
 
@@ -269,6 +264,10 @@
   DefaultedConstraints.append(solution.DefaultedConstraints.begin(),
                               solution.DefaultedConstraints.end());
 
+  // Register the conformances checked along the way to arrive to solution.
+  for (auto &conformance : solution.Conformances)
+    CheckedConformances.push_back(conformance);
+
   // Register any fixes produced along this path.
   Fixes.append(solution.Fixes.begin(), solution.Fixes.end());
 }
@@ -460,6 +459,7 @@
   numOpenedTypes = cs.OpenedTypes.size();
   numOpenedExistentialTypes = cs.OpenedExistentialTypes.size();
   numDefaultedConstraints = cs.DefaultedConstraints.size();
+  numCheckedConformances = cs.CheckedConformances.size();
   PreviousScore = cs.CurrentScore;
 
   cs.solverState->registerScope(this);
@@ -510,7 +510,10 @@
 
   // Remove any defaulted type variables.
   truncate(cs.DefaultedConstraints, numDefaultedConstraints);
-  
+
+  // Remove any conformances checked along the current path.
+  truncate(cs.CheckedConformances, numCheckedConformances);
+
   // Reset the previous score.
   cs.CurrentScore = PreviousScore;
 
@@ -1387,7 +1390,7 @@
       // Handle simple subtype bindings.
       if (binding.Kind == AllowedBindingKind::Subtypes &&
           typeVar->getImpl().canBindToLValue() &&
-          !type->isLValueType() &&
+          !type->hasLValueType() &&
           !type->is<InOutType>()) {
         // Try lvalue qualification in addition to rvalue qualification.
         auto subtype = LValueType::get(type);
@@ -1469,7 +1472,8 @@
   return std::move(solutions[0]);
 }
 
-bool ConstraintSystem::Candidate::solve() {
+bool ConstraintSystem::Candidate::solve(
+    llvm::SmallDenseSet<Expr *> &shrunkExprs) {
   // Don't attempt to solve candidate if there is closure
   // expression involved, because it's handled specially
   // by parent constraint system (e.g. parameter lists).
@@ -1512,6 +1516,11 @@
     return true;
   }
 
+  // If this candidate is too complex given the number
+  // of the domains we have reduced so far, let's bail out early.
+  if (isTooComplexGiven(&cs, shrunkExprs))
+    return false;
+
   if (TC.getLangOpts().DebugConstraintSolver) {
     auto &log = cs.getASTContext().TypeCheckerDebug->getStream();
     log << "--- Solving candidate for shrinking at ";
@@ -1565,7 +1574,7 @@
   }
 
   // Record found solutions as suggestions.
-  this->applySolutions(solutions);
+  this->applySolutions(solutions, shrunkExprs);
 
   // Let's double-check if we have any implicit expressions
   // with type variables and nullify their types.
@@ -1577,7 +1586,8 @@
 }
 
 void ConstraintSystem::Candidate::applySolutions(
-                            llvm::SmallVectorImpl<Solution> &solutions) const {
+    llvm::SmallVectorImpl<Solution> &solutions,
+    llvm::SmallDenseSet<Expr *> &shrunkExprs) const {
   // A collection of OSRs with their newly reduced domains,
   // it's domains are sets because multiple solutions can have the same
   // choice for one of the type variables, and we want no duplication.
@@ -1624,6 +1634,9 @@
       = TC.Context.AllocateUninitialized<ValueDecl *>(choices.size());
     std::uninitialized_copy(choices.begin(), choices.end(), decls.begin());
     OSR->setDecls(decls);
+
+    // Record successfully shrunk expression.
+    shrunkExprs.insert(OSR);
   }
 }
 
@@ -1692,7 +1705,8 @@
         auto func = applyExpr->getFn();
         // Let's record this function application for post-processing
         // as well as if it contains overload set, see walkToExprPost.
-        ApplyExprs.push_back({applyExpr, isa<OverloadSetRefExpr>(func)});
+        ApplyExprs.push_back(
+            {applyExpr, isa<OverloadSetRefExpr>(func) || isa<TypeExpr>(func)});
       }
 
       return { true, expr };
@@ -1926,11 +1940,12 @@
   // so we can start solving them separately.
   expr->walk(collector);
 
+  llvm::SmallDenseSet<Expr *> shrunkExprs;
   for (auto &candidate : collector.Candidates) {
     // If there are no results, let's forget everything we know about the
     // system so far. This actually is ok, because some of the expressions
     // might require manual salvaging.
-    if (candidate.solve()) {
+    if (candidate.solve(shrunkExprs)) {
       // Let's restore all of the original OSR domains for this sub-expression,
       // this means that we can still make forward progress with solving of the
       // top sub-expressions.
@@ -1941,6 +1956,7 @@
             return childExpr;
 
           OSR->setDecls(domain->getSecond());
+          shrunkExprs.erase(OSR);
         }
 
         return childExpr;
@@ -2333,11 +2349,21 @@
 /// Whether we should short-circuit a disjunction that already has a
 /// solution when we encounter the given constraint.
 static bool shortCircuitDisjunctionAt(Constraint *constraint,
-                                      Constraint *successfulConstraint) {
-  
+                                      Constraint *successfulConstraint,
+                                      ASTContext &ctx) {
+
   // If the successfully applied constraint is favored, we'll consider that to
   // be the "best".
   if (successfulConstraint->isFavored() && !constraint->isFavored()) {
+#if !defined(NDEBUG)
+    if (successfulConstraint->getKind() == ConstraintKind::BindOverload) {
+      auto overloadChoice = successfulConstraint->getOverloadChoice();
+      assert((!overloadChoice.isDecl() ||
+              !overloadChoice.getDecl()->getAttrs().isUnavailable(ctx)) &&
+             "Unavailable decl should not be favored!");
+    }
+#endif
+
     return true;
   }
   
@@ -2488,8 +2514,9 @@
   auto afterDisjunction = InactiveConstraints.erase(disjunction);
   CG.removeConstraint(disjunction);
 
+  Score initialScore = CurrentScore;
   Optional<DisjunctionChoice> lastSolvedChoice;
-  Optional<DisjunctionChoice> firstNonGenericOperatorSolution;
+  Optional<Score> bestNonGenericScore;
 
   ++solverState->NumDisjunctions;
   auto constraints = disjunction->getNestedConstraints();
@@ -2515,15 +2542,20 @@
     //        already have a solution involving non-generic operators,
     //        but continue looking for a better non-generic operator
     //        solution.
-    if (firstNonGenericOperatorSolution &&
-        currentChoice.isGenericOperatorOrUnavailable())
-      continue;
+    if (bestNonGenericScore && currentChoice.isGenericOperatorOrUnavailable()) {
+      // If non-generic solution increased the score by applying any
+      // fixes or restrictions to the solution, let's not skip generic
+      // overloads because they could produce a better solution.
+      if (bestNonGenericScore <= initialScore)
+        continue;
+    }
 
     // We already have a solution; check whether we should
     // short-circuit the disjunction.
     if (lastSolvedChoice) {
       auto *lastChoice = lastSolvedChoice->getConstraint();
-      if (shortCircuitDisjunctionAt(&currentChoice, lastChoice))
+      if (shortCircuitDisjunctionAt(&currentChoice, lastChoice,
+                                    getASTContext()))
         break;
     }
 
@@ -2550,11 +2582,12 @@
       DisjunctionChoices.push_back({locator, index});
     }
 
-    if (currentChoice.solve(solutions, allowFreeTypeVariables)) {
-      if (!firstNonGenericOperatorSolution &&
-          !currentChoice.isGenericOperatorOrUnavailable() &&
-          currentChoice.isSymmetricOperator())
-        firstNonGenericOperatorSolution = currentChoice;
+    if (auto score = currentChoice.solve(solutions, allowFreeTypeVariables)) {
+      if (!currentChoice.isGenericOperatorOrUnavailable() &&
+          currentChoice.isSymmetricOperator()) {
+        if (!bestNonGenericScore || score < bestNonGenericScore)
+          bestNonGenericScore = score;
+      }
 
       lastSolvedChoice = currentChoice;
 
@@ -2586,10 +2619,12 @@
   return tooComplex || !lastSolvedChoice;
 }
 
-bool DisjunctionChoice::solve(SmallVectorImpl<Solution> &solutions,
-                              FreeTypeVariableBinding allowFreeTypeVariables) {
+Optional<Score>
+DisjunctionChoice::solve(SmallVectorImpl<Solution> &solutions,
+                         FreeTypeVariableBinding allowFreeTypeVariables) {
   CS->simplifyDisjunctionChoice(Choice);
-  return !CS->solveRec(solutions, allowFreeTypeVariables);
+  bool failed = CS->solveRec(solutions, allowFreeTypeVariables);
+  return failed ? None : Optional<Score>(CS->CurrentScore);
 }
 
 bool DisjunctionChoice::isGenericOperatorOrUnavailable() const {
diff --git a/lib/Sema/CodeSynthesis.cpp b/lib/Sema/CodeSynthesis.cpp
index 4158953..9fb20e1 100644
--- a/lib/Sema/CodeSynthesis.cpp
+++ b/lib/Sema/CodeSynthesis.cpp
@@ -186,10 +186,6 @@
   if (storage->isGetterMutating())
     getter->setMutating();
 
-  // If the var is marked final, then so is the getter.
-  if (storage->isFinal())
-    makeFinal(TC.Context, getter);
-
   if (storage->isStatic())
     getter->setStatic();
 
@@ -239,10 +235,6 @@
   if (isStatic)
     setter->setStatic();
 
-  // If the var is marked final, then so is the getter.
-  if (storage->isFinal())
-    makeFinal(TC.Context, setter);
-
   return setter;
 }
 
@@ -824,17 +816,10 @@
   // Okay, we have both the getter and setter.  Set them in VD.
   storage->addTrivialAccessors(getter, setter, nullptr);
 
-  bool isDynamic = (storage->isDynamic() && storage->isObjC());
-  if (isDynamic)
-    makeDynamic(TC.Context, getter);
-
   // Synthesize the body of the getter.
   synthesizeTrivialGetter(getter, storage, TC);
 
   if (setter) {
-    if (isDynamic)
-      makeDynamic(TC.Context, setter);
-
     // Synthesize the body of the setter.
     synthesizeTrivialSetter(setter, storage, setterValueParam, TC);
   }
diff --git a/lib/Sema/ConstraintSystem.cpp b/lib/Sema/ConstraintSystem.cpp
index 4f9a98e..d57d0e3 100644
--- a/lib/Sema/ConstraintSystem.cpp
+++ b/lib/Sema/ConstraintSystem.cpp
@@ -379,7 +379,7 @@
 
   if (parentTy) {
     auto subs = parentTy->getContextSubstitutions(
-      parentTy->getAnyNominal());
+      unboundDecl->getDeclContext());
     for (auto pair : subs) {
       auto found = replacements.find(
         cast<GenericTypeParamType>(pair.first));
@@ -1314,7 +1314,11 @@
                                        *favoredChoice,
                                        useDC,
                                        locator);
-    
+
+    assert((!favoredChoice->isDecl() ||
+            !favoredChoice->getDecl()->getAttrs().isUnavailable(
+                getASTContext())) &&
+           "Cannot make unavailable decl favored!");
     bindOverloadConstraint->setFavored();
     
     overloads.push_back(bindOverloadConstraint);
@@ -1700,36 +1704,19 @@
         lookupBaseType = objectType;
       }
 
-      if (!lookupBaseType->mayHaveMembers()) return type;
-
-      auto subs = lookupBaseType->getContextSubstitutionMap(
+      if (lookupBaseType->mayHaveMembers()) {
+        auto subs = lookupBaseType->getContextSubstitutionMap(
           cs.DC->getParentModule(),
-          assocType->getDeclContext());
-      auto result = assocType->getDeclaredInterfaceType().subst(subs);
+            assocType->getDeclContext());
+        auto result = assocType->getDeclaredInterfaceType().subst(subs);
 
-      if (result)
-        return result;
-
-      return DependentMemberType::get(ErrorType::get(newBase), assocType);
-    }
-
-    // If this is a FunctionType and we inferred new function attributes, apply
-    // them.
-    if (auto ft = dyn_cast<FunctionType>(type.getPointer())) {
-      auto it = cs.extraFunctionAttrs.find(ft);
-      if (it != cs.extraFunctionAttrs.end()) {
-        auto extInfo = ft->getExtInfo();
-        if (it->second.isNoEscape())
-          extInfo = extInfo.withNoEscape();
-        if (it->second.throws())
-          extInfo = extInfo.withThrows();
-        return FunctionType::get(
-            simplifyTypeImpl(cs, ft->getInput(), getFixedTypeFn),
-            simplifyTypeImpl(cs, ft->getResult(), getFixedTypeFn),
-            extInfo);
+        if (result)
+          return result;
       }
+
+      return DependentMemberType::get(lookupBaseType, assocType);
     }
-    
+
     return type;
   });
 }
@@ -1766,15 +1753,13 @@
 }
 
 size_t Solution::getTotalMemory() const {
-  return sizeof(*this) +
-    typeBindings.getMemorySize() +
-    overloadChoices.getMemorySize() +
-    ConstraintRestrictions.getMemorySize() +
-    llvm::capacity_in_bytes(Fixes) +
-    DisjunctionChoices.getMemorySize() +
-    OpenedTypes.getMemorySize() +
-    OpenedExistentialTypes.getMemorySize() +
-    (DefaultedConstraints.size() * sizeof(void*));
+  return sizeof(*this) + typeBindings.getMemorySize() +
+         overloadChoices.getMemorySize() +
+         ConstraintRestrictions.getMemorySize() +
+         llvm::capacity_in_bytes(Fixes) + DisjunctionChoices.getMemorySize() +
+         OpenedTypes.getMemorySize() + OpenedExistentialTypes.getMemorySize() +
+         (DefaultedConstraints.size() * sizeof(void *)) +
+         llvm::capacity_in_bytes(Conformances);
 }
 
 DeclName OverloadChoice::getName() const {
diff --git a/lib/Sema/ConstraintSystem.h b/lib/Sema/ConstraintSystem.h
index 0380b21..0bbd04b 100644
--- a/lib/Sema/ConstraintSystem.h
+++ b/lib/Sema/ConstraintSystem.h
@@ -408,16 +408,14 @@
   SK_CollectionUpcastConversion,
   /// A value-to-optional conversion.
   SK_ValueToOptional,
-  /// A conversion from an inout to a pointer of matching element type.
-  SK_ScalarPointerConversion,
-  /// A conversion from an array to a pointer of matching element type.
-  SK_ArrayPointerConversion,
   /// A conversion to an empty existential type ('Any' or '{}').
   SK_EmptyExistentialConversion,
   /// A key path application subscript.
   SK_KeyPathSubscript,
-  
-  SK_LastScoreKind = SK_EmptyExistentialConversion,
+  /// A conversion from a string, array, or inout to a pointer.
+  SK_ValueToPointerConversion,
+
+  SK_LastScoreKind = SK_ValueToPointerConversion,
 };
 
 /// The number of score kinds.
@@ -564,6 +562,9 @@
   /// The locators of \c Defaultable constraints whose defaults were used.
   llvm::SmallPtrSet<ConstraintLocator *, 8> DefaultedConstraints;
 
+  llvm::SmallVector<std::pair<ConstraintLocator *, ProtocolConformanceRef>, 8>
+      Conformances;
+
   /// \brief Simplify the given type by substituting all occurrences of
   /// type variables for their fixed types.
   Type simplifyType(Type type) const;
@@ -969,6 +970,9 @@
   SmallVector<std::pair<ConstraintLocator *, ArchetypeType *>, 4>
     OpenedExistentialTypes;
 
+  SmallVector<std::pair<ConstraintLocator *, ProtocolConformanceRef>, 8>
+      CheckedConformances;
+
 public:
   /// The locators of \c Defaultable constraints whose defaults were used.
   SmallVector<ConstraintLocator *, 8> DefaultedConstraints;
@@ -998,15 +1002,45 @@
     /// \brief Try to solve this candidate sub-expression
     /// and re-write it's OSR domains afterwards.
     ///
+    /// \param shrunkExprs The set of expressions which
+    /// domains have been successfully shrunk so far.
+    ///
     /// \returns true on solver failure, false otherwise.
-    bool solve();
+    bool solve(llvm::SmallDenseSet<Expr *> &shrunkExprs);
 
     /// \brief Apply solutions found by solver as reduced OSR sets for
     /// for current and all of it's sub-expressions.
     ///
     /// \param solutions The solutions found by running solver on the
     /// this candidate expression.
-    void applySolutions(llvm::SmallVectorImpl<Solution> &solutions) const;
+    ///
+    /// \param shrunkExprs The set of expressions which
+    /// domains have been successfully shrunk so far.
+    void applySolutions(llvm::SmallVectorImpl<Solution> &solutions,
+                        llvm::SmallDenseSet<Expr *> &shrunkExprs) const;
+
+    /// Check if attempt at solving of the candidate makes sense given
+    /// the current conditions - number of shrunk domains which is related
+    /// to the given candidate over the total number of disjunctions present.
+    static bool isTooComplexGiven(ConstraintSystem *const cs,
+                                  llvm::SmallDenseSet<Expr *> &shrunkExprs) {
+      SmallVector<Constraint *, 8> disjunctions;
+      cs->collectDisjunctions(disjunctions);
+
+      unsigned unsolvedDisjunctions = disjunctions.size();
+      for (auto *disjunction : disjunctions) {
+        auto *locator = disjunction->getLocator();
+        if (!locator)
+          continue;
+
+        if (auto *anchor = locator->getAnchor()) {
+          if (shrunkExprs.count(anchor) > 0)
+            --unsolvedDisjunctions;
+        }
+      }
+
+      return unsolvedDisjunctions >= 5;
+    }
   };
 
   /// \brief Describes the current solver state.
@@ -1196,14 +1230,6 @@
     SetExprTypes(Expr *expr, ConstraintSystem &cs, bool excludeRoot)
         : RootExpr(expr), CS(cs), ExcludeRoot(excludeRoot) {}
 
-    std::pair<bool, Expr *> walkToExprPre(Expr *expr) override {
-      if (auto *closure = dyn_cast<ClosureExpr>(expr))
-        if (!closure->hasSingleExpressionBody())
-          return { false, closure };
-
-      return { true, expr };
-    }
-
     Expr *walkToExprPost(Expr *expr) override {
       if (ExcludeRoot && expr == RootExpr)
         return expr;
@@ -1269,12 +1295,6 @@
   /// that locator.
   llvm::DenseMap<ConstraintLocator *, ArgumentLabelState> ArgumentLabels;
 
-  /// \brief The set of additional attributes inferred for a FunctionType.  Note
-  /// that this is not state kept as part of SolverState, so it only supports
-  /// function attributes that need to be set invariant of the actual typing of
-  /// the solution.
-  llvm::SmallDenseMap<FunctionType*, FunctionType::ExtInfo> extraFunctionAttrs;
-
   ResolvedOverloadSetListItem *getResolvedOverloadSets() const {
     return resolvedOverloadSets;
   }
@@ -1322,6 +1342,8 @@
     /// The length of \c DefaultedConstraints.
     unsigned numDefaultedConstraints;
 
+    unsigned numCheckedConformances;
+
     /// The previous score.
     Score PreviousScore;
 
@@ -1860,18 +1882,23 @@
   /// Call Expr::isTypeReference on the given expression, using a
   /// custom accessor for the type on the expression that reads the
   /// type from the ConstraintSystem expression type map.
-  bool isTypeReference(Expr *E);
+  bool isTypeReference(const Expr *E);
 
   /// Call Expr::isIsStaticallyDerivedMetatype on the given
   /// expression, using a custom accessor for the type on the
   /// expression that reads the type from the ConstraintSystem
   /// expression type map.
-  bool isStaticallyDerivedMetatype(Expr *E);
+  bool isStaticallyDerivedMetatype(const Expr *E);
 
-  /// Call Expr::getInstanceType on the given expression, using a
+  /// Call TypeExpr::getInstanceType on the given expression, using a
   /// custom accessor for the type on the expression that reads the
   /// type from the ConstraintSystem expression type map.
-  Type getInstanceType(TypeExpr *E);
+  Type getInstanceType(const TypeExpr *E);
+
+  /// Call AbstractClosureExpr::getResultType on the given expression,
+  /// using a custom accessor for the type on the expression that
+  /// reads the type from the ConstraintSystem expression type map.
+  Type getResultType(const AbstractClosureExpr *E);
 
 private:
   /// Introduce the constraints associated with the given type variable
@@ -2685,8 +2712,8 @@
   bool isSymmetricOperator() const;
 
   /// \brief Apply given choice to the system and try to solve it.
-  bool solve(SmallVectorImpl<Solution> &solutions,
-             FreeTypeVariableBinding allowFreeTypeVariables);
+  Optional<Score> solve(SmallVectorImpl<Solution> &solutions,
+                        FreeTypeVariableBinding allowFreeTypeVariables);
 
 private:
   static ValueDecl *getOperatorDecl(Constraint *constraint) {
diff --git a/lib/Sema/DerivedConformanceCodable.cpp b/lib/Sema/DerivedConformanceCodable.cpp
index c8b6b30..d5617a5 100644
--- a/lib/Sema/DerivedConformanceCodable.cpp
+++ b/lib/Sema/DerivedConformanceCodable.cpp
@@ -50,18 +50,18 @@
 ///
 /// \param target The \c ClassDecl whose superclass to check.
 static bool superclassIsEncodable(ClassDecl *target) {
-    auto &C = target->getASTContext();
-    return inheritsConformanceTo(target,
-                                 C.getProtocol(KnownProtocolKind::Encodable));
+  auto &C = target->getASTContext();
+  return inheritsConformanceTo(target,
+                               C.getProtocol(KnownProtocolKind::Encodable));
 }
 
 /// Returns whether the superclass of the given class conforms to Decodable.
 ///
 /// \param target The \c ClassDecl whose superclass to check.
 static bool superclassIsDecodable(ClassDecl *target) {
-    auto &C = target->getASTContext();
-    return inheritsConformanceTo(target,
-                                 C.getProtocol(KnownProtocolKind::Decodable));
+  auto &C = target->getASTContext();
+  return inheritsConformanceTo(target,
+                               C.getProtocol(KnownProtocolKind::Decodable));
 }
 
 /// Represents the possible outcomes of checking whether a decl conforms to
@@ -88,29 +88,34 @@
                                                     ProtocolDecl *proto) {
   // Some generic types need to be introspected to get at their "true" Codable
   // conformance.
-  auto canType = target->getCanonicalType();
-  if (auto genericType = dyn_cast<BoundGenericType>(canType)) {
+  if (auto referenceType = target->getAs<ReferenceStorageType>()) {
+    // This is a weak/unowned/unmanaged var. Get the inner type before checking
+    // conformance.
+    target = referenceType->getReferentType();
+  }
+
+  if (auto genericType = target->getAs<BoundGenericType>()) {
     auto *nominalTypeDecl = genericType->getAnyNominal();
 
     // Implicitly unwrapped optionals need to be unwrapped;
     // ImplicitlyUnwrappedOptional does not need to conform to Codable directly
     // -- only its inner type does.
     if (nominalTypeDecl == tc.Context.getImplicitlyUnwrappedOptionalDecl() ||
-         // FIXME: Remove the following when conditional conformance lands.
-         // Some generic types in the stdlib currently conform to Codable even
-         // when the type they are generic on does not [Optional, Array, Set,
-         // Dictionary].  For synthesizing conformance, we don't want to
-         // consider these types as Codable if the nested type is not Codable.
-         // Look through the generic type parameters of these types recursively
-         // to avoid synthesizing code that will crash at runtime.
-         //
-         // We only want to look through generic params for these types; other
-         // types may validly conform to Codable even if their generic param
-         // types do not.
-         nominalTypeDecl == tc.Context.getOptionalDecl() ||
-         nominalTypeDecl == tc.Context.getArrayDecl() ||
-         nominalTypeDecl == tc.Context.getSetDecl() ||
-         nominalTypeDecl == tc.Context.getDictionaryDecl()) {
+        // FIXME: Remove the following when conditional conformance lands.
+        // Some generic types in the stdlib currently conform to Codable even
+        // when the type they are generic on does not [Optional, Array, Set,
+        // Dictionary].  For synthesizing conformance, we don't want to
+        // consider these types as Codable if the nested type is not Codable.
+        // Look through the generic type parameters of these types recursively
+        // to avoid synthesizing code that will crash at runtime.
+        //
+        // We only want to look through generic params for these types; other
+        // types may validly conform to Codable even if their generic param
+        // types do not.
+        nominalTypeDecl == tc.Context.getOptionalDecl() ||
+        nominalTypeDecl == tc.Context.getArrayDecl() ||
+        nominalTypeDecl == tc.Context.getSetDecl() ||
+        nominalTypeDecl == tc.Context.getDictionaryDecl()) {
       for (auto paramType : genericType->getGenericArgs()) {
         if (typeConformsToCodable(tc, context, paramType, proto) != Conforms)
           return DoesNotConform;
@@ -301,9 +306,8 @@
   // CodingKeys may be a typealias. If so, follow the alias to its canonical
   // type.
   auto codingKeysType = codingKeysTypeDecl->getDeclaredInterfaceType();
-  if (isa<TypeAliasDecl>(codingKeysTypeDecl)) {
+  if (isa<TypeAliasDecl>(codingKeysTypeDecl))
     codingKeysTypeDecl = codingKeysType->getAnyNominal();
-  }
 
   // Ensure that the type we found conforms to the CodingKey protocol.
   auto *codingKeyProto = C.getProtocol(KnownProtocolKind::CodingKey);
@@ -435,9 +439,8 @@
     return nullptr;
 
   auto *codingKeysDecl = codingKeyDecls.front();
-  if (auto *typealiasDecl = dyn_cast<TypeAliasDecl>(codingKeysDecl)) {
+  if (auto *typealiasDecl = dyn_cast<TypeAliasDecl>(codingKeysDecl))
     codingKeysDecl = typealiasDecl->getDeclaredInterfaceType()->getAnyNominal();
-  }
 
   return dyn_cast<EnumDecl>(codingKeysDecl);
 }
@@ -622,6 +625,12 @@
     // encode(_:forKey:)/encodeIfPresent(_:forKey:)
     auto methodName = C.Id_encode;
     auto varType = cast<VarDecl>(matchingVars[0])->getType();
+    if (auto referenceType = varType->getAs<ReferenceStorageType>()) {
+      // This is a weak/unowned/unmanaged var. Get the inner type before
+      // checking optionality.
+      varType = referenceType->getReferentType();
+    }
+
     if (varType->getAnyNominal() == C.getOptionalDecl() ||
         varType->getAnyNominal() == C.getImplicitlyUnwrappedOptionalDecl()) {
       methodName = C.Id_encodeIfPresent;
@@ -759,8 +768,7 @@
   Type interfaceType;
   if (auto sig = target->getGenericSignatureOfContext()) {
     // Evaluate the below, but in a generic environment (if Self is generic).
-    encodeDecl->setGenericEnvironment(
-            target->getGenericEnvironmentOfContext());
+    encodeDecl->setGenericEnvironment(target->getGenericEnvironmentOfContext());
     interfaceType = GenericFunctionType::get(sig, selfType, innerType,
                                              FunctionType::ExtInfo());
   } else {
@@ -883,6 +891,12 @@
       // This is also true if the type is an ImplicitlyUnwrappedOptional.
       auto varType = varDecl->getType();
       auto methodName = C.Id_decode;
+      if (auto referenceType = varType->getAs<ReferenceStorageType>()) {
+        // This is a weak/unowned/unmanaged var. Get the inner type before
+        // checking optionality.
+        varType = referenceType->getReferentType();
+      }
+
       if (varType->getAnyNominal() == C.getOptionalDecl() ||
           varType->getAnyNominal() == C.getImplicitlyUnwrappedOptionalDecl()) {
         methodName = C.Id_decodeIfPresent;
@@ -1111,82 +1125,112 @@
 }
 
 ValueDecl *DerivedConformance::deriveEncodable(TypeChecker &tc,
-                                              Decl *parentDecl,
-                                              NominalTypeDecl *target,
-                                              ValueDecl *requirement) {
-    // We can only synthesize Encodable for structs and classes.
-    if (!isa<StructDecl>(target) && !isa<ClassDecl>(target))
-        return nullptr;
+                                               Decl *parentDecl,
+                                               NominalTypeDecl *target,
+                                               ValueDecl *requirement) {
+  // We can only synthesize Encodable for structs and classes.
+  if (!isa<StructDecl>(target) && !isa<ClassDecl>(target))
+    return nullptr;
 
-    if (requirement->getBaseName() != tc.Context.Id_encode) {
-        // Unknown requirement.
-        tc.diagnose(requirement->getLoc(), diag::broken_encodable_requirement);
-        return nullptr;
-    }
+  if (requirement->getBaseName() != tc.Context.Id_encode) {
+    // Unknown requirement.
+    tc.diagnose(requirement->getLoc(), diag::broken_encodable_requirement);
+    return nullptr;
+  }
 
-    // Conformance can't be synthesized in an extension.
-    auto encodableProto = tc.Context.getProtocol(KnownProtocolKind::Encodable);
-    auto encodableType = encodableProto->getDeclaredType();
-    if (target != parentDecl) {
-        tc.diagnose(parentDecl->getLoc(), diag::cannot_synthesize_in_extension,
-                    encodableType);
-        return nullptr;
-    }
-
-    // Check other preconditions for synthesized conformance.
-    // This synthesizes a CodingKeys enum if possible.
-    if (canSynthesize(tc, target, encodableProto))
-        return deriveEncodable_encode(tc, parentDecl, target);
-
-    // Known protocol requirement but could not synthesize.
-    // FIXME: We have to output at least one error diagnostic here because we
-    // returned true from NominalTypeDecl::derivesProtocolConformance; if we
-    // don't, we expect to return a witness here later and crash on an
-    // assertion.  Producing an error stops compilation before then.
-    tc.diagnose(target, diag::type_does_not_conform, target->getDeclaredType(),
+  // Conformance can't be synthesized in an extension.
+  auto encodableProto = tc.Context.getProtocol(KnownProtocolKind::Encodable);
+  auto encodableType = encodableProto->getDeclaredType();
+  if (target != parentDecl) {
+    tc.diagnose(parentDecl->getLoc(), diag::cannot_synthesize_in_extension,
                 encodableType);
+    return nullptr;
+  }
+
+  // We're about to try to synthesize Encodable. If something goes wrong,
+  // we'll have to output at least one error diagnostic because we returned
+  // true from NominalTypeDecl::derivesProtocolConformance; if we don't, we're
+  // expected to return a witness here later (and we crash on an assertion).
+  // Producing a diagnostic stops compilation before then.
+  //
+  // A synthesis attempt will produce NOTE diagnostics throughout, but we'll
+  // want to collect them before displaying -- we want NOTEs to display
+  // _after_ a main diagnostic so we don't get a NOTE before the error it
+  // relates to.
+  //
+  // We can do this with a diagnostic transaction -- first collect failure
+  // diagnostics, then potentially collect notes. If we succeed in
+  // synthesizing Encodable, we can cancel the transaction and get rid of the
+  // fake failures.
+  auto diagnosticTransaction = DiagnosticTransaction(tc.Context.Diags);
+  tc.diagnose(target, diag::type_does_not_conform, target->getDeclaredType(),
+              encodableType);
+
+  // Check other preconditions for synthesized conformance.
+  // This synthesizes a CodingKeys enum if possible.
+  ValueDecl *witness = nullptr;
+  if (canSynthesize(tc, target, encodableProto))
+    witness = deriveEncodable_encode(tc, parentDecl, target);
+
+  if (witness == nullptr) {
+    // We didn't end up synthesizing encode(to:).
     tc.diagnose(requirement, diag::no_witnesses, diag::RequirementKind::Func,
                 requirement->getFullName(), encodableType, /*AddFixIt=*/false);
-    return nullptr;
+  } else {
+    // We succeeded -- no need to output the false error generated above.
+    diagnosticTransaction.abort();
+  }
+
+  return witness;
 }
 
 ValueDecl *DerivedConformance::deriveDecodable(TypeChecker &tc,
                                                Decl *parentDecl,
                                                NominalTypeDecl *target,
                                                ValueDecl *requirement) {
-    // We can only synthesize Encodable for structs and classes.
-    if (!isa<StructDecl>(target) && !isa<ClassDecl>(target))
-        return nullptr;
+  // We can only synthesize Encodable for structs and classes.
+  if (!isa<StructDecl>(target) && !isa<ClassDecl>(target))
+    return nullptr;
 
-    if (requirement->getBaseName() != tc.Context.Id_init) {
-        // Unknown requirement.
-        tc.diagnose(requirement->getLoc(), diag::broken_decodable_requirement);
-        return nullptr;
-    }
+  if (requirement->getBaseName() != tc.Context.Id_init) {
+    // Unknown requirement.
+    tc.diagnose(requirement->getLoc(), diag::broken_decodable_requirement);
+    return nullptr;
+  }
 
-    // Conformance can't be synthesized in an extension.
-    auto decodableProto = tc.Context.getProtocol(KnownProtocolKind::Decodable);
-    auto decodableType = decodableProto->getDeclaredType();
-    if (target != parentDecl) {
-        tc.diagnose(parentDecl->getLoc(), diag::cannot_synthesize_in_extension,
-                    decodableType);
-        return nullptr;
-    }
-
-    // Check other preconditions for synthesized conformance.
-    // This synthesizes a CodingKeys enum if possible.
-    if (canSynthesize(tc, target, decodableProto))
-        return deriveDecodable_init(tc, parentDecl, target);
-
-    // Known protocol requirement but could not synthesize.
-    // FIXME: We have to output at least one error diagnostic here because we
-    // returned true from NominalTypeDecl::derivesProtocolConformance; if we
-    // don't, we expect to return a witness here later and crash on an
-    // assertion.  Producing an error stops compilation before then.
-    tc.diagnose(target, diag::type_does_not_conform, target->getDeclaredType(),
+  // Conformance can't be synthesized in an extension.
+  auto decodableProto = tc.Context.getProtocol(KnownProtocolKind::Decodable);
+  auto decodableType = decodableProto->getDeclaredType();
+  if (target != parentDecl) {
+    tc.diagnose(parentDecl->getLoc(), diag::cannot_synthesize_in_extension,
                 decodableType);
+    return nullptr;
+  }
+
+  // We're about to try to synthesize Decodable. If something goes wrong,
+  // we'll have to output at least one error diagnostic. We need to collate
+  // diagnostics produced by canSynthesize and deriveDecodable_init to produce
+  // them in the right order -- see the comment in deriveEncodable for
+  // background on this transaction.
+  auto diagnosticTransaction = DiagnosticTransaction(tc.Context.Diags);
+  tc.diagnose(target, diag::type_does_not_conform, target->getDeclaredType(),
+              decodableType);
+
+  // Check other preconditions for synthesized conformance.
+  // This synthesizes a CodingKeys enum if possible.
+  ValueDecl *witness = nullptr;
+  if (canSynthesize(tc, target, decodableProto))
+    witness = deriveDecodable_init(tc, parentDecl, target);
+
+  if (witness == nullptr) {
+    // We didn't end up synthesizing init(from:).
     tc.diagnose(requirement, diag::no_witnesses,
                 diag::RequirementKind::Constructor, requirement->getFullName(),
                 decodableType, /*AddFixIt=*/false);
-    return nullptr;
+  } else {
+    // We succeeded -- no need to output the false error generated above.
+    diagnosticTransaction.abort();
+  }
+
+  return witness;
 }
diff --git a/lib/Sema/GenericTypeResolver.h b/lib/Sema/GenericTypeResolver.h
index 63af3fb..02b63fc 100644
--- a/lib/Sema/GenericTypeResolver.h
+++ b/lib/Sema/GenericTypeResolver.h
@@ -36,16 +36,8 @@
 public:
   virtual ~GenericTypeResolver();
 
-  /// Resolve the given generic type parameter to its type.
-  ///
-  /// This routine is used whenever type checking encounters a reference to a
-  /// generic parameter. It can replace the generic parameter with (for example)
-  /// a concrete type or an archetype, depending on context.
-  ///
-  /// \param gp The generic parameter to resolve.
-  ///
-  /// \returns The resolved generic type parameter type, which may be \c gp.
-  virtual Type resolveGenericTypeParamType(GenericTypeParamType *gp) = 0;
+  /// Resolve the given interface type to a contextual type if necessary.
+  virtual Type mapTypeIntoContext(Type type) = 0;
 
   /// Resolve a qualified reference to a type member within a dependent type.
   ///
@@ -60,33 +52,6 @@
                                           SourceRange baseRange,
                                           ComponentIdentTypeRepr *ref) = 0;
 
-  /// Resolve an unqualified reference to an associated type of the 'Self' type
-  /// of a protocol.
-  ///
-  /// \param selfTy The base of the member access.
-  /// \param assocType The associated type.
-  ///
-  /// \returns A type that refers to the dependent member type, or an error
-  /// type if such a reference is ill-formed.
-  virtual Type resolveSelfAssociatedType(Type selfTy,
-                                         AssociatedTypeDecl *assocType) = 0;
-
-  /// Resolve the self type within the given context.
-  ///
-  /// \param dc A context in which type checking occurs, which must be a type
-  /// context (i.e., nominal type or extension thereof).
-  ///
-  /// \returns the type of context.
-  virtual Type resolveTypeOfContext(DeclContext *dc) = 0;
-
-  /// Retrieve the type when referring to the given type declaration within
-  /// its context.
-  ///
-  /// \param decl A type declaration.
-  ///
-  /// \returns the type of the declaration in context..
-  virtual Type resolveTypeOfDecl(TypeDecl *decl) = 0;
-
   /// Determine whether the given types are equivalent within the generic
   /// context.
   virtual bool areSameType(Type type1, Type type2) = 0;
@@ -100,28 +65,14 @@
 /// This generic type resolver leaves generic type parameter types alone
 /// and only trivially resolves dependent member types.
 class DependentGenericTypeResolver : public GenericTypeResolver {
-  GenericSignatureBuilder &Builder;
-  ArrayRef<GenericTypeParamType *> GenericParams;
-
 public:
-  DependentGenericTypeResolver(GenericSignatureBuilder &builder,
-                               ArrayRef<GenericTypeParamType *> genericParams)
-    : Builder(builder), GenericParams(genericParams) { }
-
-  virtual Type resolveGenericTypeParamType(GenericTypeParamType *gp);
+  virtual Type mapTypeIntoContext(Type type);
 
   virtual Type resolveDependentMemberType(Type baseTy,
                                           DeclContext *DC,
                                           SourceRange baseRange,
                                           ComponentIdentTypeRepr *ref);
 
-  virtual Type resolveSelfAssociatedType(Type selfTy,
-                                         AssociatedTypeDecl *assocType);
-
-  virtual Type resolveTypeOfContext(DeclContext *dc);
-
-  virtual Type resolveTypeOfDecl(TypeDecl *decl);
-
   virtual bool areSameType(Type type1, Type type2);
 
   virtual void recordParamType(ParamDecl *decl, Type ty);
@@ -142,19 +93,12 @@
   explicit GenericTypeToArchetypeResolver(DeclContext *dc)
       : GenericEnv(dc->getGenericEnvironmentOfContext()) { }
 
-  virtual Type resolveGenericTypeParamType(GenericTypeParamType *gp);
+  virtual Type mapTypeIntoContext(Type type);
 
   virtual Type resolveDependentMemberType(Type baseTy, DeclContext *DC,
                                           SourceRange baseRange,
                                           ComponentIdentTypeRepr *ref);
 
-  virtual Type resolveSelfAssociatedType(Type selfTy,
-                                         AssociatedTypeDecl *assocType);
-
-  virtual Type resolveTypeOfContext(DeclContext *dc);
-
-  virtual Type resolveTypeOfDecl(TypeDecl *decl);
-
   virtual bool areSameType(Type type1, Type type2);
 
   virtual void recordParamType(ParamDecl *decl, Type ty);
@@ -166,25 +110,13 @@
 /// This should only be used when resolving/validating where clauses in
 /// protocols.
 class ProtocolRequirementTypeResolver : public GenericTypeResolver {
-  ProtocolDecl *Proto;
-
 public:
-  explicit ProtocolRequirementTypeResolver(ProtocolDecl *proto)
-      : Proto(proto) {}
-
-  virtual Type resolveGenericTypeParamType(GenericTypeParamType *gp);
+  virtual Type mapTypeIntoContext(Type type);
 
   virtual Type resolveDependentMemberType(Type baseTy, DeclContext *DC,
                                           SourceRange baseRange,
                                           ComponentIdentTypeRepr *ref);
 
-  virtual Type resolveSelfAssociatedType(Type selfTy,
-                                         AssociatedTypeDecl *assocType);
-
-  virtual Type resolveTypeOfContext(DeclContext *dc);
-
-  virtual Type resolveTypeOfDecl(TypeDecl *decl);
-
   virtual bool areSameType(Type type1, Type type2);
 
   virtual void recordParamType(ParamDecl *decl, Type ty);
@@ -207,20 +139,13 @@
                               ArrayRef<GenericTypeParamType *> genericParams)
     : TC(tc), Builder(builder), GenericParams(genericParams) { }
 
-  virtual Type resolveGenericTypeParamType(GenericTypeParamType *gp);
+  virtual Type mapTypeIntoContext(Type type);
 
   virtual Type resolveDependentMemberType(Type baseTy,
                                           DeclContext *DC,
                                           SourceRange baseRange,
                                           ComponentIdentTypeRepr *ref);
 
-  virtual Type resolveSelfAssociatedType(Type selfTy,
-                                         AssociatedTypeDecl *assocType);
-
-  virtual Type resolveTypeOfContext(DeclContext *dc);
-
-  virtual Type resolveTypeOfDecl(TypeDecl *decl);
-
   virtual bool areSameType(Type type1, Type type2);
 
   virtual void recordParamType(ParamDecl *decl, Type ty);
diff --git a/lib/Sema/ITCDecl.cpp b/lib/Sema/ITCDecl.cpp
index 76ae9cc..a24cbd6 100644
--- a/lib/Sema/ITCDecl.cpp
+++ b/lib/Sema/ITCDecl.cpp
@@ -108,14 +108,22 @@
 
   // Validate the type of this inherited clause entry.
   // FIXME: Recursion into existing type checker.
-  GenericTypeToArchetypeResolver resolver(dc);
-  if (TC.validateType(*inherited, dc, options, &resolver,
+  ProtocolRequirementTypeResolver protoResolver;
+  GenericTypeToArchetypeResolver archetypeResolver(dc);
+  GenericTypeResolver *resolver;
+  if (isa<ProtocolDecl>(dc)) {
+    resolver = &protoResolver;
+  } else {
+    resolver = &archetypeResolver;
+  }
+
+  if (TC.validateType(*inherited, dc, options, resolver,
                       &unsatisfiedDependency)) {
     inherited->setInvalidType(getASTContext());
   }
 
   auto type = inherited->getType();
-  if (!type.isNull())
+  if (!type.isNull() && !isa<ProtocolDecl>(dc))
     inherited->setType(dc->mapTypeOutOfContext(type));
 }
 
@@ -332,8 +340,6 @@
   if (auto typeAliasDecl = dyn_cast<TypeAliasDecl>(typeDecl)) {
     if (typeAliasDecl->getDeclContext()->isModuleScopeContext() &&
         typeAliasDecl->getGenericParams() == nullptr) {
-      typeAliasDecl->setValidationStarted();
-
       TypeResolutionOptions options = TR_TypeAliasUnderlyingType;
       if (typeAliasDecl->getFormalAccess() <= Accessibility::FilePrivate)
         options |= TR_KnownNonCascadingDependency;
diff --git a/lib/Sema/MiscDiagnostics.cpp b/lib/Sema/MiscDiagnostics.cpp
index d04d1b3..698ffe4 100644
--- a/lib/Sema/MiscDiagnostics.cpp
+++ b/lib/Sema/MiscDiagnostics.cpp
@@ -136,9 +136,9 @@
       unsigned kind =
         fn->isInstanceMember() ? PartialApplication::MutatingMethod
                                : PartialApplication::Function;
-
+      
       // Functions with inout parameters cannot be partially applied.
-      if (expr->getArg()->getType()->hasInOut()) {
+      if (!expr->getArg()->getType()->isMaterializable()) {
         // We need to apply all argument clauses.
         InvalidPartialApplications.insert({
           fnExpr, {fn->getNumParameterLists(), kind}
@@ -474,16 +474,12 @@
 
       // If we're a parameter, emit a helpful fixit to add @escaping
       auto paramDecl = dyn_cast<ParamDecl>(DRE->getDecl());
-      auto isAutoClosure = AFT->isAutoClosure();
-      if (paramDecl && !isAutoClosure) {
+      if (paramDecl) {
         TC.diagnose(paramDecl->getStartLoc(), diag::noescape_parameter,
                     paramDecl->getName())
             .fixItInsert(paramDecl->getTypeLoc().getSourceRange().Start,
                          "@escaping ");
-      } else if (isAutoClosure)
-        // TODO: add in a fixit for autoclosure
-        TC.diagnose(DRE->getDecl()->getLoc(), diag::noescape_autoclosure,
-                    paramDecl->getName());
+      }
     }
 
     // Swift 3 mode produces a warning + Fix-It for the missing ".self"
@@ -548,7 +544,7 @@
         auto diag = TC.diagnose(E->getEndLoc(),
                                 diag::warn_value_of_metatype_missing_self,
                                 E->getType()->getRValueInstanceType());
-        if (E->canAppendCallParentheses()) {
+        if (E->canAppendPostfixExpression()) {
           diag.fixItInsertAfter(E->getEndLoc(), ".self");
         } else {
           diag.fixItInsert(E->getStartLoc(), "(");
@@ -578,7 +574,7 @@
 
       // Add fix-it to insert ".self".
       auto diag = TC.diagnose(E->getEndLoc(), diag::add_self_to_type);
-      if (E->canAppendCallParentheses()) {
+      if (E->canAppendPostfixExpression()) {
         diag.fixItInsertAfter(E->getEndLoc(), ".self");
       } else {
         diag.fixItInsert(E->getStartLoc(), "(");
@@ -2005,6 +2001,11 @@
     if (isa<TypeDecl>(D))
       return false;
       
+    // The body of #if clauses are not walked into, we need custom processing
+    // for them.
+    if (auto *ICD = dyn_cast<IfConfigDecl>(D))
+      handleIfConfig(ICD);
+      
     // If this is a VarDecl, then add it to our list of things to track.
     if (auto *vd = dyn_cast<VarDecl>(D))
       if (shouldTrackVarDecl(vd)) {
@@ -2075,15 +2076,10 @@
   std::pair<bool, Expr *> walkToExprPre(Expr *E) override;
 
   /// handle #if directives.
-  void handleIfConfig(IfConfigStmt *ICS);
+  void handleIfConfig(IfConfigDecl *ICD);
 
   /// Custom handling for statements.
   std::pair<bool, Stmt *> walkToStmtPre(Stmt *S) override {
-    // The body of #if statements are not walked into, we need custom processing
-    // for them.
-    if (auto *ICS = dyn_cast<IfConfigStmt>(S))
-      handleIfConfig(ICS);
-      
     // Keep track of an association between vardecls and the StmtCondition that
     // they are bound in for IfStmt, GuardStmt, WhileStmt, etc.
     if (auto LCS = dyn_cast<LabeledConditionalStmt>(S)) {
@@ -2190,7 +2186,7 @@
               if (isa<NamedPattern>(LP->getSubPattern())) {
                 auto initExpr = SC->getCond()[0].getInitializer();
                 if (initExpr->getStartLoc().isValid()) {
-                  unsigned noParens = initExpr->canAppendCallParentheses();
+                  unsigned noParens = initExpr->canAppendPostfixExpression();
                   
                   // If the subexpr is an "as?" cast, we can rewrite it to
                   // be an "is" test.
@@ -2247,7 +2243,7 @@
         // never mutated, but 'x' was.
         !isVarDeclPartOfPBDThatHadSomeMutation(var)) {
       SourceLoc FixItLoc;
-      
+
       // Try to find the location of the 'var' so we can produce a fixit.  If
       // this is a simple PatternBinding, use its location.
       if (auto *PBD = var->getParentPatternBinding()) {
@@ -2270,11 +2266,25 @@
       if (FixItLoc.isInvalid())
         Diags.diagnose(var->getLoc(), diag::variable_never_mutated,
                        var->getName(), varKind);
-      else
-        Diags.diagnose(var->getLoc(), diag::variable_never_mutated,
-                       var->getName(), varKind)
-          .fixItReplace(FixItLoc, "let");
-      continue;
+      else {
+        bool suggestLet = true;
+        if (auto *stmt = var->getParentPatternStmt()) {
+          // Don't try to suggest 'var' -> 'let' conversion
+          // in case of 'for' loop because it's an implicitly
+          // immutable context.
+          suggestLet = !isa<ForEachStmt>(stmt);
+        }
+
+        auto diag = Diags.diagnose(var->getLoc(), diag::variable_never_mutated,
+                                   var->getName(), varKind);
+
+        if (suggestLet)
+          diag.fixItReplace(FixItLoc, "let");
+        else
+          diag.fixItRemove(FixItLoc);
+
+        continue;
+      }
     }
     
     // If this is a variable that was only written to, emit a warning.
@@ -2292,7 +2302,7 @@
 markBaseOfAbstractStorageDeclStore(Expr *base, ConcreteDeclRef decl) {
   // If the base is a class or an rvalue, then this store just loads the base.
   if (base->getType()->isAnyClassReferenceType() ||
-      !(base->getType()->isLValueType() || base->getType()->is<InOutType>())) {
+      !(base->getType()->hasLValueType() || base->getType()->is<InOutType>())) {
     base->walk(*this);
     return;
   }
@@ -2351,6 +2361,17 @@
     return;
   }
   
+  // Likewise for key path applications. An application of a WritableKeyPath
+  // reads and writes its base.
+  if (auto *KPA = dyn_cast<KeyPathApplicationExpr>(E)) {
+    auto &C = KPA->getType()->getASTContext();
+    KPA->getKeyPath()->walk(*this);
+    if (KPA->getKeyPath()->getType()->getAnyNominal()
+          == C.getWritableKeyPathDecl())
+      markStoredOrInOutExpr(KPA->getBase(), RK_Written|RK_Read);
+    return;
+  }
+  
   if (auto *ioe = dyn_cast<InOutExpr>(E))
     return markStoredOrInOutExpr(ioe->getSubExpr(), RK_Written|RK_Read);
   
@@ -2426,7 +2447,7 @@
 /// handle #if directives.  All of the active clauses are already walked by the
 /// AST walker, but we also want to handle the inactive ones to avoid false
 /// positives.
-void VarDeclUsageChecker::handleIfConfig(IfConfigStmt *ICS) {
+void VarDeclUsageChecker::handleIfConfig(IfConfigDecl *ICD) {
   struct ConservativeDeclMarker : public ASTWalker {
     VarDeclUsageChecker &VDUC;
     ConservativeDeclMarker(VarDeclUsageChecker &VDUC) : VDUC(VDUC) {}
@@ -2441,7 +2462,7 @@
     }
   };
 
-  for (auto &clause : ICS->getClauses()) {
+  for (auto &clause : ICD->getClauses()) {
     // Active clauses are handled by the normal AST walk.
     if (clause.isActive) continue;
 
diff --git a/lib/Sema/ResilienceDiagnostics.cpp b/lib/Sema/ResilienceDiagnostics.cpp
index 9fd2894..8289069 100644
--- a/lib/Sema/ResilienceDiagnostics.cpp
+++ b/lib/Sema/ResilienceDiagnostics.cpp
@@ -91,7 +91,8 @@
     return false;
 
   // Public declarations are OK.
-  if (D->getEffectiveAccess() >= Accessibility::Public)
+  if (D->getFormalAccessScope(/*useDC=*/nullptr,
+                              /*respectVersionedAttr=*/true).isPublic())
     return false;
 
   // Enum cases are handled as part of their containing enum.
@@ -110,9 +111,27 @@
 
   diagnose(loc, diag::resilience_decl_unavailable,
            D->getDescriptiveKind(), D->getFullName(),
-           D->getFormalAccess(), getFragileFunctionKind(DC));
-  diagnose(D, diag::resilience_decl_declared_here,
-           D->getDescriptiveKind(), D->getFullName());
+           D->getFormalAccessScope().accessibilityForDiagnostics(),
+           getFragileFunctionKind(DC));
+
+  bool isDefaultArgument = false;
+  while (DC->isLocalContext()) {
+    if (isa<DefaultArgumentInitializer>(DC)) {
+      isDefaultArgument = true;
+      break;
+    }
+
+    DC = DC->getParent();
+  }
+
+  if (isDefaultArgument) {
+    diagnose(D, diag::resilience_decl_declared_here,
+             D->getDescriptiveKind(), D->getFullName());
+  } else {
+    diagnose(D, diag::resilience_decl_declared_here_versioned,
+             D->getDescriptiveKind(), D->getFullName());
+  }
+
   return true;
 }
 
diff --git a/lib/Sema/TypeCheckAttr.cpp b/lib/Sema/TypeCheckAttr.cpp
index 72ab751..8874bce 100644
--- a/lib/Sema/TypeCheckAttr.cpp
+++ b/lib/Sema/TypeCheckAttr.cpp
@@ -86,6 +86,7 @@
   IGNORED_ATTR(ObjC)
   IGNORED_ATTR(ObjCBridged)
   IGNORED_ATTR(ObjCNonLazyRealization)
+  IGNORED_ATTR(ObjCRuntimeName)
   IGNORED_ATTR(Optional)
   IGNORED_ATTR(Postfix)
   IGNORED_ATTR(Prefix)
@@ -104,9 +105,7 @@
   IGNORED_ATTR(ShowInInterface)
   IGNORED_ATTR(DiscardableResult)
   IGNORED_ATTR(Implements)
-  IGNORED_ATTR(NSKeyedArchiverClassName)
   IGNORED_ATTR(StaticInitializeObjCMetadata)
-  IGNORED_ATTR(NSKeyedArchiverEncodeNonGenericSubclassesOnly)
   IGNORED_ATTR(DowngradeExhaustivityCheck)
 #undef IGNORED_ATTR
 
@@ -769,6 +768,7 @@
     IGNORED_ATTR(ObjC)
     IGNORED_ATTR(ObjCBridged)
     IGNORED_ATTR(ObjCNonLazyRealization)
+    IGNORED_ATTR(ObjCRuntimeName)
     IGNORED_ATTR(Optional)
     IGNORED_ATTR(Ownership)
     IGNORED_ATTR(Override)
@@ -784,7 +784,6 @@
     IGNORED_ATTR(ShowInInterface)
     IGNORED_ATTR(ObjCMembers)
     IGNORED_ATTR(StaticInitializeObjCMetadata)
-    IGNORED_ATTR(NSKeyedArchiverEncodeNonGenericSubclassesOnly)
     IGNORED_ATTR(DowngradeExhaustivityCheck)
 #undef IGNORED_ATTR
 
@@ -827,7 +826,6 @@
   
   void visitDiscardableResultAttr(DiscardableResultAttr *attr);
   void visitImplementsAttr(ImplementsAttr *attr);
-  void visitNSKeyedArchiverClassNameAttr(NSKeyedArchiverClassNameAttr *attr);
 };
 } // end anonymous namespace
 
@@ -1826,19 +1824,16 @@
                                         /*allowConcreteGenericParams=*/true);
 }
 
-static Accessibility getAccessForDiagnostics(const ValueDecl *D) {
-  return std::min(D->getFormalAccess(),
-                  D->getEffectiveAccess());
-}
-
 void AttributeChecker::visitFixedLayoutAttr(FixedLayoutAttr *attr) {
   auto *VD = cast<ValueDecl>(D);
 
-  if (VD->getEffectiveAccess() < Accessibility::Public) {
+  auto access = VD->getFormalAccess(/*useDC=*/nullptr,
+                                    /*respectVersionedAttr=*/true);
+  if (access < Accessibility::Public) {
     TC.diagnose(attr->getLocation(),
                 diag::fixed_layout_attr_on_internal_type,
                 VD->getBaseName(),
-                getAccessForDiagnostics(VD))
+                access)
         .fixItRemove(attr->getRangeWithAt());
     attr->setInvalid();
   }
@@ -1888,13 +1883,13 @@
 
   // @_inlineable can only be applied to public or @_versioned
   // declarations.
-  if (VD->getFormalAccess() < Accessibility::Internal ||
-      (!VD->getAttrs().hasAttribute<VersionedAttr>() &&
-       VD->getFormalAccess() < Accessibility::Public)) {
+  auto access = VD->getFormalAccess(/*useDC=*/nullptr,
+                                    /*respectVersionedAttr=*/true);
+  if (access < Accessibility::Public) {
     TC.diagnose(attr->getLocation(),
                 diag::inlineable_decl_not_public,
                 VD->getBaseName(),
-                getAccessForDiagnostics(VD))
+                access)
         .fixItRemove(attr->getRangeWithAt());
     attr->setInvalid();
     return;
@@ -1961,18 +1956,6 @@
   }
 }
 
-void AttributeChecker::visitNSKeyedArchiverClassNameAttr(
-                                              NSKeyedArchiverClassNameAttr *attr) {
-  auto classDecl = dyn_cast<ClassDecl>(D);
-  if (!classDecl) return;
-
-  // Generic classes can't use @NSKeyedArchiverClassName.
-  if (classDecl->getGenericSignatureOfContext()) {
-    diagnoseAndRemoveAttr(attr, diag::attr_NSKeyedArchiverClassName_generic,
-                          classDecl->getDeclaredInterfaceType());
-  }
-}
-
 void TypeChecker::checkDeclAttributes(Decl *D) {
   AttributeChecker Checker(*this, D);
 
diff --git a/lib/Sema/TypeCheckAvailability.cpp b/lib/Sema/TypeCheckAvailability.cpp
index 99a5ccd..5d45530 100644
--- a/lib/Sema/TypeCheckAvailability.cpp
+++ b/lib/Sema/TypeCheckAvailability.cpp
@@ -1623,7 +1623,7 @@
     CharSourceRange selfExprRange =
         Lexer::getCharSourceRangeFromSourceRange(sourceMgr,
                                                  selfExpr->getSourceRange());
-    bool needsParens = !selfExpr->canAppendCallParentheses();
+    bool needsParens = !selfExpr->canAppendPostfixExpression();
 
     SmallString<64> selfReplace;
     if (needsParens)
diff --git a/lib/Sema/TypeCheckCaptures.cpp b/lib/Sema/TypeCheckCaptures.cpp
index 8ed6343..94af63b 100644
--- a/lib/Sema/TypeCheckCaptures.cpp
+++ b/lib/Sema/TypeCheckCaptures.cpp
@@ -211,17 +211,11 @@
 
       // If we're a parameter, emit a helpful fixit to add @escaping
       auto paramDecl = dyn_cast<ParamDecl>(VD);
-      bool isAutoClosure =
-          VD->getInterfaceType()->castTo<AnyFunctionType>()->isAutoClosure();
-      if (paramDecl && !isAutoClosure) {
+      if (paramDecl) {
         TC.diagnose(paramDecl->getStartLoc(), diag::noescape_parameter,
                     paramDecl->getName())
             .fixItInsert(paramDecl->getTypeLoc().getSourceRange().Start,
                          "@escaping ");
-      } else if (isAutoClosure) {
-        // TODO: add in a fixit for autoclosure
-        TC.diagnose(VD->getLoc(), diag::noescape_autoclosure,
-                    paramDecl->getName());
       }
     }
   }
@@ -229,10 +223,14 @@
   std::pair<bool, Expr *> walkToDeclRefExpr(DeclRefExpr *DRE) {
     auto *D = DRE->getDecl();
 
-    // Capture the generic parameters of the decl.
-    if (!AFR.isObjC() || !D->isObjC() || isa<ConstructorDecl>(D)) {
-      for (auto sub : DRE->getDeclRef().getSubstitutions()) {
-        checkType(sub.getReplacement(), DRE->getLoc());
+    // Capture the generic parameters of the decl, unless it's a
+    // local declaration in which case we will pick up generic
+    // parameter references transitively.
+    if (!D->getDeclContext()->isLocalContext()) {
+      if (!AFR.isObjC() || !D->isObjC() || isa<ConstructorDecl>(D)) {
+        for (auto sub : DRE->getDeclRef().getSubstitutions()) {
+          checkType(sub.getReplacement(), DRE->getLoc());
+        }
       }
     }
 
diff --git a/lib/Sema/TypeCheckConstraints.cpp b/lib/Sema/TypeCheckConstraints.cpp
index 795c09a..c2feff7 100644
--- a/lib/Sema/TypeCheckConstraints.cpp
+++ b/lib/Sema/TypeCheckConstraints.cpp
@@ -498,12 +498,28 @@
 
   // FIXME: Need to refactor the way we build an AST node from a lookup result!
 
+  // If we have an unambiguous reference to a type decl, form a TypeExpr.
+  if (Lookup.size() == 1 && UDRE->getRefKind() == DeclRefKind::Ordinary &&
+      isa<TypeDecl>(Lookup[0].Decl)) {
+    auto *D = cast<TypeDecl>(Lookup[0].Decl);
+    // FIXME: This is odd.
+    if (isa<ModuleDecl>(D)) {
+      return new (Context) DeclRefExpr(D, UDRE->getNameLoc(),
+                                       /*Implicit=*/false,
+                                       AccessSemantics::Ordinary,
+                                       D->getInterfaceType());
+    }
+
+    return TypeExpr::createForDecl(Loc, D,
+                                   UDRE->isImplicit());
+  }
+
   bool AllDeclRefs = true;
   SmallVector<ValueDecl*, 4> ResultValues;
   for (auto Result : Lookup) {
     // If we find a member, then all of the results aren't non-members.
     bool IsMember = Result.Base && !isa<ModuleDecl>(Result.Base);
-    if (IsMember && !isa<TypeDecl>(Result.Decl)) {
+    if (IsMember) {
       AllDeclRefs = false;
       break;
     }
@@ -532,21 +548,6 @@
     if (matchesDeclRefKind(D, UDRE->getRefKind()))
       ResultValues.push_back(D);
   }
-
-  // If we have an unambiguous reference to a type decl, form a TypeExpr.
-  if (ResultValues.size() == 1 && UDRE->getRefKind() == DeclRefKind::Ordinary &&
-      isa<TypeDecl>(ResultValues[0])) {
-    // FIXME: This is odd.
-    if (isa<ModuleDecl>(ResultValues[0])) {
-      return new (Context) DeclRefExpr(ResultValues[0], UDRE->getNameLoc(),
-                                       /*Implicit=*/false,
-                                       AccessSemantics::Ordinary,
-                                       ResultValues[0]->getInterfaceType());
-    }
-
-    return TypeExpr::createForDecl(Loc, cast<TypeDecl>(ResultValues[0]),
-                                   UDRE->isImplicit());
-  }
   
   if (AllDeclRefs) {
     // Diagnose uses of operators that found no matching candidates.
@@ -607,7 +608,11 @@
 
   if (AllMemberRefs) {
     Expr *BaseExpr;
-    if (auto NTD = dyn_cast<NominalTypeDecl>(Base)) {
+    if (auto PD = dyn_cast<ProtocolDecl>(Base)) {
+      BaseExpr = TypeExpr::createForDecl(Loc,
+                                         PD->getGenericParams()->getParams().front(),
+                                         /*isImplicit=*/true);
+    } else if (auto NTD = dyn_cast<NominalTypeDecl>(Base)) {
       BaseExpr = TypeExpr::createForDecl(Loc, NTD, /*isImplicit=*/true);
     } else {
       BaseExpr = new (Context) DeclRefExpr(Base, UDRE->getNameLoc(),
@@ -1495,6 +1500,7 @@
       } else if (auto OEE = dyn_cast<OptionalEvaluationExpr>(expr)) {
         // Do nothing: this is implied to exist as the last expression, by the
         // BindOptionalExprs, but is irrelevant to the components.
+        (void)outermostExpr;
         assert(OEE == outermostExpr);
         expr = OEE->getSubExpr();
       } else {
@@ -1774,22 +1780,35 @@
 
   class ExpressionTimer {
     Expr* E;
+    unsigned WarnLimit;
+    bool ShouldDump;
     ASTContext &Context;
     llvm::TimeRecord StartTime = llvm::TimeRecord::getCurrentTime();
 
   public:
-    ExpressionTimer(Expr *E, ASTContext &Context) : E(E), Context(Context) {}
+    ExpressionTimer(Expr *E, bool shouldDump, unsigned warnLimit,
+                    ASTContext &Context)
+        : E(E), WarnLimit(warnLimit), ShouldDump(shouldDump), Context(Context) {
+    }
 
     ~ExpressionTimer() {
       llvm::TimeRecord endTime = llvm::TimeRecord::getCurrentTime(false);
 
       auto elapsed = endTime.getProcessTime() - StartTime.getProcessTime();
+      unsigned elapsedMS = static_cast<unsigned>(elapsed * 1000);
 
-      // Round up to the nearest 100th of a millisecond.
-      llvm::errs() << llvm::format("%0.2f", ceil(elapsed * 100000) / 100)
-                   << "ms\t";
-      E->getLoc().print(llvm::errs(), Context.SourceMgr);
-      llvm::errs() << "\n";
+      if (ShouldDump) {
+        // Round up to the nearest 100th of a millisecond.
+        llvm::errs() << llvm::format("%0.2f", ceil(elapsed * 100000) / 100)
+                     << "ms\t";
+        E->getLoc().print(llvm::errs(), Context.SourceMgr);
+        llvm::errs() << "\n";
+      }
+
+      if (WarnLimit != 0 && elapsedMS >= WarnLimit && E->getLoc().isValid())
+        Context.Diags.diagnose(E->getLoc(), diag::debug_long_expression,
+                               elapsedMS, WarnLimit)
+          .highlight(E->getSourceRange());
     }
   };
 
@@ -1803,8 +1822,9 @@
                                       ExprTypeCheckListener *listener,
                                       ConstraintSystem *baseCS) {
   Optional<ExpressionTimer> timer;
-  if (DebugTimeExpressions)
-    timer.emplace(expr, Context);
+  if (DebugTimeExpressions || WarnLongExpressionTypeChecking)
+    timer.emplace(expr, DebugTimeExpressions, WarnLongExpressionTypeChecking,
+                  Context);
 
   PrettyStackTraceExpr stackTrace(Context, "type-checking", expr);
 
@@ -1952,7 +1972,8 @@
 
   // Get the expression's simplified type.
   auto &solution = viable[0];
-  Type exprType = solution.simplifyType(expr->getType());
+  auto &solutionCS = solution.getConstraintSystem();
+  Type exprType = solution.simplifyType(solutionCS.getType(expr));
 
   assert(exprType && !exprType->hasTypeVariable() &&
          "free type variable with FreeTypeVariableBinding::GenericParameters?");
@@ -2059,7 +2080,7 @@
 
   // Attempt to solve the constraint system.
   SmallVector<Solution, 4> viable;
-  if (CS.solve(viable, FreeTypeVariableBinding::GenericParameters))
+  if (CS.solve(viable, FreeTypeVariableBinding::UnresolvedType))
     return true;
 
   auto &solution = viable[0];
@@ -2069,8 +2090,16 @@
     solution.dump(log);
   }
 
-  expr->setType(solution.simplifyType(expr->getType()));
-  CCE->setType(solution.simplifyType(CCE->getType()));
+  auto &solutionCS = solution.getConstraintSystem();
+  expr->setType(solution.simplifyType(solutionCS.getType(expr)));
+  auto completionType = solution.simplifyType(solutionCS.getType(CCE));
+
+  // If completion expression is unresolved it doesn't provide
+  // any meaningful information so shouldn't be in the results.
+  if (completionType->is<UnresolvedType>())
+    return true;
+
+  CCE->setType(completionType);
   return false;
 }
 
@@ -2182,7 +2211,7 @@
         return nullptr;
       }
 
-      assert(expr->getType()->isEqual(InitType));
+      assert(solution.getConstraintSystem().getType(expr)->isEqual(InitType));
 
       initializer = expr;
       return expr;
@@ -2832,34 +2861,43 @@
   return true;
 }
 
-Expr *TypeChecker::coerceToMaterializable(Expr *expr) {
+Expr *TypeChecker::coerceToRValue(Expr *expr,
+                               llvm::function_ref<Type(Expr *)> getType,
+                               llvm::function_ref<void(Expr *, Type)> setType) {
+  Type exprTy = getType(expr);
+
   // If expr has no type, just assume it's the right expr.
+  if (!exprTy)
+    return expr;
+
   // If the type is already materializable, then we're already done.
-  if (!expr->getType() || expr->getType()->isMaterializable())
+  if (!exprTy->hasLValueType())
     return expr;
   
   // Load lvalues.
-  if (auto lvalue = expr->getType()->getAs<LValueType>()) {
+  if (auto lvalue = exprTy->getAs<LValueType>()) {
     expr->propagateLValueAccessKind(AccessKind::Read);
-    return new (Context) LoadExpr(expr, lvalue->getObjectType());
+    auto result = new (Context) LoadExpr(expr, lvalue->getObjectType());
+    setType(result, lvalue->getObjectType());
+    return result;
   }
 
   // Walk into parenthesized expressions to update the subexpression.
   if (auto paren = dyn_cast<IdentityExpr>(expr)) {
-    auto sub = coerceToMaterializable(paren->getSubExpr());
+    auto sub =  coerceToRValue(paren->getSubExpr(), getType, setType);
     paren->setSubExpr(sub);
-    paren->setType(sub->getType());
+    setType(paren, getType(sub));
     return paren;
   }
 
   // Walk into 'try' and 'try!' expressions to update the subexpression.
   if (auto tryExpr = dyn_cast<AnyTryExpr>(expr)) {
-    auto sub = coerceToMaterializable(tryExpr->getSubExpr());
+    auto sub = coerceToRValue(tryExpr->getSubExpr(), getType, setType);
     tryExpr->setSubExpr(sub);
-    if (isa<OptionalTryExpr>(tryExpr) && !sub->getType()->hasError())
-      tryExpr->setType(OptionalType::get(sub->getType()));
+    if (isa<OptionalTryExpr>(tryExpr) && !getType(sub)->hasError())
+      setType(tryExpr, OptionalType::get(getType(sub)));
     else
-      tryExpr->setType(sub->getType());
+      setType(tryExpr, getType(sub));
     return tryExpr;
   }
 
@@ -2868,11 +2906,11 @@
     bool anyChanged = false;
     for (auto &elt : tuple->getElements()) {
       // Materialize the element.
-      auto oldType = elt->getType();
-      elt = coerceToMaterializable(elt);
+      auto oldType = getType(elt);
+      elt = coerceToRValue(elt, getType, setType);
 
       // If the type changed at all, make a note of it.
-      if (elt->getType().getPointer() != oldType.getPointer()) {
+      if (getType(elt).getPointer() != oldType.getPointer()) {
         anyChanged = true;
       }
     }
@@ -2882,11 +2920,11 @@
       SmallVector<TupleTypeElt, 4> elements;
       elements.reserve(tuple->getElements().size());
       for (unsigned i = 0, n = tuple->getNumElements(); i != n; ++i) {
-        Type type = tuple->getElement(i)->getType();
+        Type type = getType(tuple->getElement(i));
         Identifier name = tuple->getElementName(i);
         elements.push_back(TupleTypeElt(type, name));
       }
-      tuple->setType(TupleType::get(elements, Context));
+      setType(tuple, TupleType::get(elements, Context));
     }
 
     return tuple;
@@ -3084,6 +3122,19 @@
       out << "\n";
     }
   }
+
+  if (!Conformances.empty()) {
+    out << "\nConformances:\n";
+    auto &cs = getConstraintSystem();
+    for (auto &e : Conformances) {
+      out.indent(2);
+      out << "At ";
+      e.first->dump(&cs.getASTContext().SourceMgr, out);
+      out << "\n";
+      e.second.dump(out);
+      out << "\n";
+    }
+  }
 }
 
 void ConstraintSystem::dump() {
@@ -3439,7 +3490,7 @@
             diag.fixItReplace(SourceRange(diagLoc, diagToRange.End), "!= nil");
 
             // Add parentheses if needed.
-            if (!fromExpr->canAppendCallParentheses()) {
+            if (!fromExpr->canAppendPostfixExpression()) {
               diag.fixItInsert(fromExpr->getStartLoc(), "(");
               diag.fixItInsertAfter(fromExpr->getEndLoc(), ")");
             }
diff --git a/lib/Sema/TypeCheckDecl.cpp b/lib/Sema/TypeCheckDecl.cpp
index fefdee7..83a925b 100644
--- a/lib/Sema/TypeCheckDecl.cpp
+++ b/lib/Sema/TypeCheckDecl.cpp
@@ -243,7 +243,7 @@
 }
 
 void TypeChecker::validateWhereClauses(ProtocolDecl *protocol) {
-  ProtocolRequirementTypeResolver resolver(protocol);
+  ProtocolRequirementTypeResolver resolver;
   TypeResolutionOptions options;
 
   if (auto whereClause = protocol->getTrailingWhereClause()) {
@@ -1751,11 +1751,12 @@
 
   AccessScope contextAccessScope = context->getFormalAccessScope();
   checkTypeAccessibilityImpl(TC, TL, contextAccessScope, DC,
-                             [=](AccessScope requiredAccessScope,
-                                 const TypeRepr *offendingTR,
-                                 DowngradeToWarning downgradeToWarning) {
+                             [=, &TC](AccessScope requiredAccessScope,
+                                      const TypeRepr *offendingTR,
+                                      DowngradeToWarning downgradeToWarning) {
     if (!contextAccessScope.isPublic() &&
-        !isa<ModuleDecl>(contextAccessScope.getDeclContext())) {
+        !isa<ModuleDecl>(contextAccessScope.getDeclContext()) &&
+        TC.getLangOpts().isSwiftVersion3()) {
       // Swift 3.0.0 mistakenly didn't diagnose any issues when the context
       // access scope represented a private or fileprivate level.
       downgradeToWarning = DowngradeToWarning::Yes;
@@ -1868,10 +1869,10 @@
 
   // Swift 3.0.0 mistakenly didn't diagnose any issues when the context access
   // scope represented a private or fileprivate level.
-  // FIXME: Conditionalize this on Swift 3 mode.
   if (downgradeToWarning == DowngradeToWarning::No) {
     if (!accessScope.isPublic() &&
-        !isa<ModuleDecl>(accessScope.getDeclContext())) {
+        !isa<ModuleDecl>(accessScope.getDeclContext()) &&
+        TC.getLangOpts().isSwiftVersion3()) {
       downgradeToWarning = DowngradeToWarning::Yes;
     }
   }
@@ -3830,11 +3831,8 @@
   if (ASD->hasAccessorFunctions())
     maybeAddMaterializeForSet(ASD, TC);
 
-  if (ASD->isFinal()) {
-    makeFinal(TC.Context, ASD->getGetter());
-    makeFinal(TC.Context, ASD->getSetter());
+  if (ASD->isFinal())
     makeFinal(TC.Context, ASD->getMaterializeForSetFunc());
-  }
 
   if (auto getter = ASD->getGetter())
     TC.validateDecl(getter);
@@ -5170,9 +5168,14 @@
           }
         }
 
-        // If the storage is dynamic, propagate to this accessor.
-        if (isObjC && storage->isDynamic() && !FD->isDynamic())
-          FD->getAttrs().add(new (TC.Context) DynamicAttr(/*implicit*/ true));
+        // If the storage is dynamic or final, propagate to this accessor.
+        if (isObjC &&
+            storage->isDynamic() &&
+            !storage->isFinal())
+          makeDynamic(TC.Context, FD);
+
+        if (storage->isFinal())
+          makeFinal(TC.Context, FD);
       }
 
       Optional<ForeignErrorConvention> errorConvention;
@@ -6138,10 +6141,9 @@
     UNINTERESTING_ATTR(DiscardableResult)
 
     UNINTERESTING_ATTR(ObjCMembers)
+    UNINTERESTING_ATTR(ObjCRuntimeName)
     UNINTERESTING_ATTR(Implements)
-    UNINTERESTING_ATTR(NSKeyedArchiverClassName)
     UNINTERESTING_ATTR(StaticInitializeObjCMetadata)
-    UNINTERESTING_ATTR(NSKeyedArchiverEncodeNonGenericSubclassesOnly)
     UNINTERESTING_ATTR(DowngradeExhaustivityCheck)
 #undef UNINTERESTING_ATTR
 
@@ -6191,10 +6193,7 @@
     }
 
     void visitDynamicAttr(DynamicAttr *attr) {
-      if (!Override->isDynamic())
-        // Dynamic is inherited.
-        Override->getAttrs().add(
-                                new (TC.Context) DynamicAttr(/*implicit*/true));
+      makeDynamic(TC.Context, Override);
     }
 
     void visitObjCAttr(ObjCAttr *attr) {
@@ -6574,11 +6573,14 @@
       return;
 
     // Require the carried type to be materializable.
-    auto IFacTy = EED->getArgumentInterfaceType();
-    if (IFacTy && !IFacTy->isMaterializable()) {
-      TC.diagnose(EED->getLoc(), diag::enum_element_not_materializable, IFacTy);
-      EED->setInterfaceType(ErrorType::get(TC.Context));
-      EED->setInvalid();
+    if (auto argTy = EED->getArgumentInterfaceType()) {
+      assert(!argTy->hasLValueType() && "enum element cannot carry @lvalue");
+      
+      if (!argTy->isMaterializable()) {
+        TC.diagnose(EED->getLoc(), diag::enum_element_not_materializable, argTy);
+        EED->setInterfaceType(ErrorType::get(TC.Context));
+        EED->setInvalid();
+      }
     }
     TC.checkDeclAttributes(EED);
   }
@@ -7024,6 +7026,13 @@
 
   if (auto attr = CD->getAttrs().getAttribute<ObjCAttr>()) {
     if (kind == ObjCClassKind::ObjCMembers) {
+      if (attr->hasName() && !CD->isGenericContext()) {
+        // @objc with a name on a non-generic subclass of a generic class is
+        // just controlling the runtime name. Don't diagnose this case.
+        CD->getAttrs().add(new (TC.Context) ObjCRuntimeNameAttr(*attr));
+        return None;
+      }
+
       TC.diagnose(attr->getLocation(), diag::objc_for_generic_class)
         .fixItRemove(attr->getRangeWithAt());
     }
@@ -7046,6 +7055,27 @@
   return None;
 }
 
+/// Validate the underlying type of the given typealias.
+static void validateTypealiasType(TypeChecker &tc, TypeAliasDecl *typeAlias) {
+  TypeResolutionOptions options = TR_TypeAliasUnderlyingType;
+  if (typeAlias->getFormalAccess() <= Accessibility::FilePrivate)
+    options |= TR_KnownNonCascadingDependency;
+
+  if (typeAlias->getDeclContext()->isModuleScopeContext() &&
+      typeAlias->getGenericParams() == nullptr) {
+    IterativeTypeChecker ITC(tc);
+    ITC.satisfy(requestResolveTypeDecl(typeAlias));
+  } else {
+    if (tc.validateType(typeAlias->getUnderlyingTypeLoc(),
+                        typeAlias, options)) {
+      typeAlias->setInvalid();
+      typeAlias->getUnderlyingTypeLoc().setInvalidType(tc.Context);
+    }
+
+    typeAlias->setUnderlyingType(typeAlias->getUnderlyingTypeLoc().getType());
+  }
+}
+
 void TypeChecker::validateDecl(ValueDecl *D) {
   // Generic parameters are validated as part of their context.
   if (isa<GenericTypeParamDecl>(D))
@@ -7153,25 +7183,7 @@
     SWIFT_DEFER { typeAlias->setIsBeingValidated(false); };
 
     validateGenericTypeSignature(typeAlias);
-
-    TypeResolutionOptions options = TR_TypeAliasUnderlyingType;
-    if (typeAlias->getFormalAccess() <= Accessibility::FilePrivate)
-      options |= TR_KnownNonCascadingDependency;
-
-    if (typeAlias->getDeclContext()->isModuleScopeContext() &&
-        typeAlias->getGenericParams() == nullptr) {
-      IterativeTypeChecker ITC(*this);
-      ITC.satisfy(requestResolveTypeDecl(typeAlias));
-    } else {
-      if (validateType(typeAlias->getUnderlyingTypeLoc(),
-                       typeAlias, options)) {
-        typeAlias->setInvalid();
-        typeAlias->getUnderlyingTypeLoc().setInvalidType(Context);
-      }
-
-      typeAlias->setUnderlyingType(typeAlias->getUnderlyingTypeLoc().getType());
-    }
-
+    validateTypealiasType(*this, typeAlias);
     break;
   }
 
@@ -7238,8 +7250,28 @@
     // FIXME: Hopefully this can all go away with the ITC.
     for (auto member : proto->getMembers()) {
       if (auto *aliasDecl = dyn_cast<TypeAliasDecl>(member)) {
-        if (!aliasDecl->isGeneric())
+        if (!aliasDecl->isGeneric()) {
           aliasDecl->setGenericEnvironment(proto->getGenericEnvironment());
+
+          // If the underlying alias declaration has a type parameter,
+          // we have unresolved dependent member types we will need to deal
+          // with. Wipe out the types and validate them again.
+          // FIXME: We never should have recorded such a type in the first
+          // place.
+          if (!aliasDecl->getUnderlyingTypeLoc().getType() ||
+              aliasDecl->getUnderlyingTypeLoc().getType()
+                ->findUnresolvedDependentMemberType()) {
+            aliasDecl->getUnderlyingTypeLoc().setType(Type(),
+                                                      /*validated=*/false);
+            validateAccessibility(aliasDecl);
+
+            // Check generic parameters, if needed.
+            aliasDecl->setIsBeingValidated();
+            SWIFT_DEFER { aliasDecl->setIsBeingValidated(false); };
+
+            validateTypealiasType(*this, aliasDecl);
+          }
+        }
       }
     }
 
@@ -7405,12 +7437,6 @@
       // Make sure the getter and setter have valid types, since they will be
       // used by SILGen for any accesses to this variable.
       validateAbstractStorageDecl(VD, *this);
-
-      if (VD->isDynamic()) {
-        makeDynamic(Context, VD->getGetter());
-        makeDynamic(Context, VD->getSetter());
-        // Skip materializeForSet -- it won't be used with a dynamic property.
-      }
     }
 
     break;
@@ -7495,9 +7521,9 @@
       return;
 
     // Perform earlier validation of typealiases in protocols.
-    if (auto proto = dyn_cast<ProtocolDecl>(dc)) {
+    if (isa<ProtocolDecl>(dc)) {
       if (!typealias->getGenericParams()) {
-        ProtocolRequirementTypeResolver resolver(proto);
+        ProtocolRequirementTypeResolver resolver;
         TypeResolutionOptions options;
 
         if (typealias->isBeingValidated()) return;
@@ -7681,7 +7707,8 @@
   // Local function used to infer requirements from the extended type.
   auto inferExtendedTypeReqs = [&](GenericSignatureBuilder &builder) {
     auto source =
-      GenericSignatureBuilder::FloatingRequirementSource::forInferred(nullptr);
+      GenericSignatureBuilder::FloatingRequirementSource::forInferred(
+                                          nullptr, /*quietly=*/false);
 
     builder.inferRequirements(*ext->getModuleContext(),
                               TypeLoc::withoutLoc(extInterfaceType),
diff --git a/lib/Sema/TypeCheckError.cpp b/lib/Sema/TypeCheckError.cpp
index aaa82a2..4271e0f 100644
--- a/lib/Sema/TypeCheckError.cpp
+++ b/lib/Sema/TypeCheckError.cpp
@@ -192,9 +192,14 @@
   Impl &asImpl() { return *static_cast<Impl*>(this); }
 public:
   bool walkToDeclPre(Decl *D) override {
+    ShouldRecurse_t recurse = ShouldRecurse;
     // Skip the implementations of all local declarations... except
     // PBD.  We should really just have a PatternBindingStmt.
-    return isa<PatternBindingDecl>(D);
+    if (auto ic = dyn_cast<IfConfigDecl>(D))
+      recurse = asImpl().checkIfConfig(ic);
+    else if (!isa<PatternBindingDecl>(D))
+      recurse = ShouldNotRecurse;
+    return bool(recurse);
   }
 
   std::pair<bool, Expr*> walkToExprPre(Expr *E) override {
@@ -230,8 +235,6 @@
       recurse = asImpl().checkDoCatch(doCatch);
     } else if (auto thr = dyn_cast<ThrowStmt>(S)) {
       recurse = asImpl().checkThrow(thr);
-    } else if (auto ic = dyn_cast<IfConfigStmt>(S)) {
-      recurse = asImpl().checkIfConfig(ic);
     } else {
       assert(!isa<CatchStmt>(S));
     }
@@ -606,7 +609,7 @@
       return ShouldRecurse;
     }
 
-    ShouldRecurse_t checkIfConfig(IfConfigStmt *S) {
+    ShouldRecurse_t checkIfConfig(IfConfigDecl *D) {
       return ShouldRecurse;
     }
 
@@ -1431,7 +1434,7 @@
     return !type || type->hasError() ? ShouldNotRecurse : ShouldRecurse;
   }
 
-  ShouldRecurse_t checkIfConfig(IfConfigStmt *S) {
+  ShouldRecurse_t checkIfConfig(IfConfigDecl *ICD) {
     // Check the inactive regions of a #if block to disable warnings that may
     // be due to platform specific code.
     struct ConservativeThrowChecker : public ASTWalker {
@@ -1452,7 +1455,7 @@
       }
     };
 
-    for (auto &clause : S->getClauses()) {
+    for (auto &clause : ICD->getClauses()) {
       // Active clauses are handled by the normal AST walk.
       if (clause.isActive) continue;
       
diff --git a/lib/Sema/TypeCheckGeneric.cpp b/lib/Sema/TypeCheckGeneric.cpp
index dd867d8..79ae427 100644
--- a/lib/Sema/TypeCheckGeneric.cpp
+++ b/lib/Sema/TypeCheckGeneric.cpp
@@ -29,12 +29,8 @@
 /// GenericTypeResolver implementations
 ///
 
-Type DependentGenericTypeResolver::resolveGenericTypeParamType(
-                                     GenericTypeParamType *gp) {
-  assert(gp->getDecl() && "Missing generic parameter declaration");
-
-  // Don't resolve generic parameters.
-  return gp;
+Type DependentGenericTypeResolver::mapTypeIntoContext(Type type) {
+  return type;
 }
 
 Type DependentGenericTypeResolver::resolveDependentMemberType(
@@ -42,55 +38,23 @@
                                      DeclContext *DC,
                                      SourceRange baseRange,
                                      ComponentIdentTypeRepr *ref) {
-  auto archetype =
-    Builder.resolveArchetype(baseTy, ArchetypeResolutionKind::AlwaysPartial);
-  assert(archetype && "Bad generic context nesting?");
-
-  return archetype
-           ->getNestedType(ref->getIdentifier(), Builder)
-           ->getDependentType(GenericParams, /*allowUnresolved=*/true);
-}
-
-Type DependentGenericTypeResolver::resolveSelfAssociatedType(
-       Type selfTy, AssociatedTypeDecl *assocType) {
-  auto archetype =
-    Builder.resolveArchetype(selfTy, ArchetypeResolutionKind::AlwaysPartial);
-  assert(archetype && "Bad generic context nesting?");
-  
-  return archetype
-           ->getNestedType(assocType, Builder)
-           ->getDependentType(GenericParams, /*allowUnresolved=*/true);
-}
-
-Type DependentGenericTypeResolver::resolveTypeOfContext(DeclContext *dc) {
-  return dc->getSelfInterfaceType();
-}
-
-Type DependentGenericTypeResolver::resolveTypeOfDecl(TypeDecl *decl) {
-  return decl->getDeclaredInterfaceType();
+  return DependentMemberType::get(baseTy, ref->getIdentifier());
 }
 
 bool DependentGenericTypeResolver::areSameType(Type type1, Type type2) {
   if (!type1->hasTypeParameter() && !type2->hasTypeParameter())
     return type1->isEqual(type2);
 
-  auto pa1 =
-    Builder.resolveArchetype(type1, ArchetypeResolutionKind::AlwaysPartial);
-  auto pa2 =
-    Builder.resolveArchetype(type2, ArchetypeResolutionKind::AlwaysPartial);
-  if (pa1 && pa2)
-    return pa1->isInSameEquivalenceClassAs(pa2);
-
-  return type1->isEqual(type2);
+  // Conservative answer: they could be the same.
+  return true;
 }
 
 void DependentGenericTypeResolver::recordParamType(ParamDecl *decl, Type type) {
   // Do nothing
 }
 
-Type GenericTypeToArchetypeResolver::resolveGenericTypeParamType(
-                                       GenericTypeParamType *gp) {
-  return GenericEnv->mapTypeIntoContext(gp);
+Type GenericTypeToArchetypeResolver::mapTypeIntoContext(Type type) {
+  return GenericEnvironment::mapTypeIntoContext(GenericEnv, type);
 }
 
 Type GenericTypeToArchetypeResolver::resolveDependentMemberType(
@@ -101,21 +65,6 @@
   llvm_unreachable("Dependent type after archetype substitution");
 }
 
-Type GenericTypeToArchetypeResolver::resolveSelfAssociatedType(
-       Type selfTy, AssociatedTypeDecl *assocType) {
-  llvm_unreachable("Dependent type after archetype substitution");  
-}
-
-Type GenericTypeToArchetypeResolver::resolveTypeOfContext(DeclContext *dc) {
-  return GenericEnvironment::mapTypeIntoContext(
-      GenericEnv, dc->getSelfInterfaceType());
-}
-
-Type GenericTypeToArchetypeResolver::resolveTypeOfDecl(TypeDecl *decl) {
-  return GenericEnvironment::mapTypeIntoContext(
-      GenericEnv, decl->getDeclaredInterfaceType());
-}
-
 bool GenericTypeToArchetypeResolver::areSameType(Type type1, Type type2) {
   return type1->isEqual(type2);
 }
@@ -134,11 +83,8 @@
         GenericEnv, type));
 }
 
-Type ProtocolRequirementTypeResolver::resolveGenericTypeParamType(
-    GenericTypeParamType *gp) {
-  assert(gp->isEqual(Proto->getSelfInterfaceType()) &&
-         "found non-Self-shaped GTPT when resolving protocol requirement");
-  return gp;
+Type ProtocolRequirementTypeResolver::mapTypeIntoContext(Type type) {
+  return type;
 }
 
 Type ProtocolRequirementTypeResolver::resolveDependentMemberType(
@@ -147,21 +93,6 @@
   return DependentMemberType::get(baseTy, ref->getIdentifier());
 }
 
-Type ProtocolRequirementTypeResolver::resolveSelfAssociatedType(
-    Type selfTy, AssociatedTypeDecl *assocType) {
-  assert(selfTy->isEqual(Proto->getSelfInterfaceType()));
-  (void)Proto;
-  return assocType->getDeclaredInterfaceType();
-}
-
-Type ProtocolRequirementTypeResolver::resolveTypeOfContext(DeclContext *dc) {
-  return dc->getSelfInterfaceType();
-}
-
-Type ProtocolRequirementTypeResolver::resolveTypeOfDecl(TypeDecl *decl) {
-  return decl->getDeclaredInterfaceType();
-}
-
 bool ProtocolRequirementTypeResolver::areSameType(Type type1, Type type2) {
   if (type1->isEqual(type2))
     return true;
@@ -185,13 +116,10 @@
       "recording a param type of a protocol requirement doesn't make sense");
 }
 
-Type CompleteGenericTypeResolver::resolveGenericTypeParamType(
-                                              GenericTypeParamType *gp) {
-  assert(gp->getDecl() && "Missing generic parameter declaration");
-  return gp;
+Type CompleteGenericTypeResolver::mapTypeIntoContext(Type type) {
+  return type;
 }
 
-
 Type CompleteGenericTypeResolver::resolveDependentMemberType(
                                     Type baseTy,
                                     DeclContext *DC,
@@ -227,65 +155,53 @@
     return DependentMemberType::get(baseTy, assocType);
   }
 
-  // If the nested type comes from a type alias, use either the alias's
-  // concrete type, or resolve its components down to another dependent member.
-  if (auto alias = nestedPA->getTypeAliasDecl()) {
-    assert(!alias->getGenericParams() && "Generic typealias in protocol");
-    ref->setValue(alias);
-    return TC.substMemberTypeWithBase(DC->getParentModule(), alias, baseTy);
-  }
-  
-  Identifier name = ref->getIdentifier();
-  SourceLoc nameLoc = ref->getIdLoc();
+  // If the nested type comes from a concrete type, substitute the base type
+  // into it.
+  if (auto concrete = nestedPA->getConcreteTypeDecl()) {
+    ref->setValue(concrete);
 
-  // Check whether the name can be found in the superclass.
-  // FIXME: The generic signature builder should be doing this and mapping down to a
-  // concrete type.
-  if (auto superclassTy = basePA->getSuperclass()) {
-    if (auto lookup = TC.lookupMemberType(DC, superclassTy, name)) {
-      if (lookup.isAmbiguous()) {
-        TC.diagnoseAmbiguousMemberType(baseTy, baseRange, name, nameLoc,
-                                       lookup);
-        return ErrorType::get(TC.Context);
+    if (baseTy->isTypeParameter()) {
+      if (auto proto =
+            concrete->getDeclContext()
+              ->getAsProtocolOrProtocolExtensionContext()) {
+        TC.validateDecl(proto);
+        auto subMap = SubstitutionMap::getProtocolSubstitutions(
+                        proto, baseTy, ProtocolConformanceRef(proto));
+        return concrete->getDeclaredInterfaceType().subst(subMap);
       }
 
-      ref->setValue(lookup.front().first);
-      // FIXME: Record (via type sugar) that this was referenced via baseTy.
-      return lookup.front().second;
+      if (auto superclass = basePA->getSuperclass()) {
+        return superclass->getTypeOfMember(
+                                         DC->getParentModule(), concrete,
+                                         concrete->getDeclaredInterfaceType());
+      }
+
+      llvm_unreachable("shouldn't have a concrete decl here");
     }
+
+    return TC.substMemberTypeWithBase(DC->getParentModule(), concrete, baseTy);
   }
 
+  assert(nestedPA->isUnresolved() && "meaningless unresolved type");
+
   // Complain that there is no suitable type.
+  Identifier name = ref->getIdentifier();
+  SourceLoc nameLoc = ref->getIdLoc();
   TC.diagnose(nameLoc, diag::invalid_member_type, name, baseTy)
     .highlight(baseRange);
   return ErrorType::get(TC.Context);
 }
 
-Type CompleteGenericTypeResolver::resolveSelfAssociatedType(
-       Type selfTy, AssociatedTypeDecl *assocType) {
-  return Builder.resolveArchetype(selfTy,
-                                  ArchetypeResolutionKind::CompleteWellFormed)
-           ->getNestedType(assocType, Builder)
-           ->getDependentType(GenericParams, /*allowUnresolved=*/false);
-}
-
-Type CompleteGenericTypeResolver::resolveTypeOfContext(DeclContext *dc) {
-  return dc->getSelfInterfaceType();
-}
-
-Type CompleteGenericTypeResolver::resolveTypeOfDecl(TypeDecl *decl) {
-  return decl->getDeclaredInterfaceType();
-}
-
 bool CompleteGenericTypeResolver::areSameType(Type type1, Type type2) {
   if (!type1->hasTypeParameter() && !type2->hasTypeParameter())
     return type1->isEqual(type2);
 
-  // FIXME: Want CompleteWellFormed here?
   auto pa1 =
-    Builder.resolveArchetype(type1, ArchetypeResolutionKind::AlwaysPartial);
+    Builder.resolveArchetype(type1,
+                             ArchetypeResolutionKind::CompleteWellFormed);
   auto pa2 =
-    Builder.resolveArchetype(type2, ArchetypeResolutionKind::AlwaysPartial);
+    Builder.resolveArchetype(type2,
+                             ArchetypeResolutionKind::CompleteWellFormed);
   if (pa1 && pa2)
     return pa1->isInSameEquivalenceClassAs(pa2);
 
@@ -538,7 +454,8 @@
           fn->getBodyResultTypeLoc().getTypeRepr()) {
         auto source =
           GenericSignatureBuilder::FloatingRequirementSource::forInferred(
-                                      fn->getBodyResultTypeLoc().getTypeRepr());
+              fn->getBodyResultTypeLoc().getTypeRepr(),
+              /*quietly=*/true);
         builder->inferRequirements(*func->getParentModule(),
                                    fn->getBodyResultTypeLoc(),
                                    source);
@@ -801,7 +718,7 @@
 
   // Type check the function declaration, treating all generic type
   // parameters as dependent, unresolved.
-  DependentGenericTypeResolver dependentResolver(builder, allGenericParams);
+  DependentGenericTypeResolver dependentResolver;
   if (checkGenericFuncSignature(*this, &builder, func, dependentResolver))
     invalid = true;
 
@@ -980,7 +897,8 @@
   if (genericParams && builder) {
     auto source =
       GenericSignatureBuilder::FloatingRequirementSource::forInferred(
-                                  subscript->getElementTypeLoc().getTypeRepr());
+          subscript->getElementTypeLoc().getTypeRepr(),
+          /*quietly=*/true);
 
     builder->inferRequirements(*subscript->getParentModule(),
                                subscript->getElementTypeLoc(),
@@ -995,9 +913,10 @@
                                        resolver);
 
   // Infer requirements from the pattern.
-  if (builder)
+  if (builder) {
     builder->inferRequirements(*subscript->getParentModule(), params,
                                genericParams);
+  }
 
   return badType;
 }
@@ -1032,7 +951,7 @@
 
   // Type check the function declaration, treating all generic type
   // parameters as dependent, unresolved.
-  DependentGenericTypeResolver dependentResolver(builder, allGenericParams);
+  DependentGenericTypeResolver dependentResolver;
   if (checkGenericSubscriptSignature(*this, &builder, subscript,
                                      dependentResolver))
     invalid = true;
@@ -1151,7 +1070,7 @@
 
   // Type check the generic parameters, treating all generic type
   // parameters as dependent, unresolved.
-  DependentGenericTypeResolver dependentResolver(builder, allGenericParams);
+  DependentGenericTypeResolver dependentResolver;
   if (recursivelyVisitGenericParams) {
     visitOuterToInner(genericParams,
                       [&](GenericParamList *gpList) {
diff --git a/lib/Sema/TypeCheckNameLookup.cpp b/lib/Sema/TypeCheckNameLookup.cpp
index 8471028..7dfa084 100644
--- a/lib/Sema/TypeCheckNameLookup.cpp
+++ b/lib/Sema/TypeCheckNameLookup.cpp
@@ -16,6 +16,7 @@
 //
 //===----------------------------------------------------------------------===//
 #include "TypeChecker.h"
+#include "swift/AST/Initializer.h"
 #include "swift/AST/NameLookup.h"
 #include "swift/AST/ProtocolConformance.h"
 #include "swift/Basic/TopCollection.h"
@@ -186,21 +187,19 @@
   for (const auto &found : lookup.Results) {
     // Determine which type we looked through to find this result.
     Type foundInType;
+
     if (!found.getBaseDecl()) {
       // Not found within a type.
-    } else if (auto baseParam = dyn_cast<ParamDecl>(found.getBaseDecl())) {
-      auto baseDC = baseParam->getDeclContext();
-      if (isa<AbstractFunctionDecl>(baseDC))
-        baseDC = baseDC->getParent();
-      foundInType = baseDC->getDeclaredTypeInContext();
     } else {
-      auto baseNominal = cast<NominalTypeDecl>(found.getBaseDecl());
-      for (auto currentDC = dc; currentDC; currentDC = currentDC->getParent()) {
-        if (currentDC->getAsNominalTypeOrNominalTypeExtensionContext()
-              == baseNominal) {
-          foundInType = currentDC->getDeclaredTypeInContext();
-        }
+      DeclContext *baseDC = nullptr;
+      if (auto baseParam = dyn_cast<ParamDecl>(found.getBaseDecl())) {
+        baseDC = baseParam->getDeclContext()->getParent();
+      } else {
+        baseDC = cast<NominalTypeDecl>(found.getBaseDecl());
       }
+
+      foundInType = dc->mapTypeIntoContext(
+        baseDC->getDeclaredInterfaceType());
       assert(foundInType && "bogus base declaration?");
     }
 
@@ -410,6 +409,14 @@
           continue;
         }
       }
+
+      // Nominal type members of protocols cannot be accessed with an
+      // archetype base, because we have no way to recover the correct
+      // substitutions.
+      if (type->is<ArchetypeType>() &&
+          isa<NominalTypeDecl>(typeDecl)) {
+        continue;
+      }
     }
 
     // Substitute the base into the member's type.
@@ -447,6 +454,13 @@
       // Use the type witness.
       auto concrete = conformance->getConcrete();
       Type memberType = concrete->getTypeWitness(assocType, this);
+
+      // This is the only case where NormalProtocolConformance::
+      // getTypeWitnessAndDecl() returns a null type.
+      if (concrete->getState() ==
+          ProtocolConformanceState::CheckingTypeWitnesses)
+        continue;
+
       assert(memberType && "Missing type witness?");
 
       // If we haven't seen this type result yet, add it to the result set.
diff --git a/lib/Sema/TypeCheckPattern.cpp b/lib/Sema/TypeCheckPattern.cpp
index 570bdda..54feb77 100644
--- a/lib/Sema/TypeCheckPattern.cpp
+++ b/lib/Sema/TypeCheckPattern.cpp
@@ -869,6 +869,12 @@
   case PatternKind::Typed: {
     TypedPattern *TP = cast<TypedPattern>(P);
     bool hadError = validateTypedPattern(*this, dc, TP, options, &resolver);
+
+    // If we have unbound generic types, don't apply them below; instead,
+    // the caller will call typeCheckBinding() later.
+    if (P->getType()->hasUnboundGenericType())
+      return hadError;
+
     Pattern *subPattern = TP->getSubPattern();
     if (coercePatternToType(subPattern, dc, P->getType(),
                             options|TR_FromNonInferredPattern, &resolver,
@@ -1450,16 +1456,54 @@
 
     // If there is a subpattern, push the enum element type down onto it.
     if (EEP->hasSubPattern()) {
+      Pattern *sub = EEP->getSubPattern();
+      if (!Context.isSwiftVersion3() && !elt->hasAssociatedValues()) {
+        diagnose(EEP->getLoc(),
+                 diag::enum_element_pattern_assoc_values_mismatch,
+                 EEP->getName());
+        diagnose(EEP->getLoc(), diag::enum_element_pattern_assoc_values_remove)
+          .fixItRemove(sub->getSourceRange());
+        return true;
+      }
+      
       Type elementType;
       if (auto argType = elt->getArgumentInterfaceType())
         elementType = enumTy->getTypeOfMember(elt->getModuleContext(),
                                               elt, argType);
       else
         elementType = TupleType::getEmpty(Context);
-      Pattern *sub = EEP->getSubPattern();
       if (coercePatternToType(sub, dc, elementType,
-                     subOptions|TR_FromNonInferredPattern|TR_EnumPatternPayload,
-                     resolver))
+                              subOptions|TR_FromNonInferredPattern|TR_EnumPatternPayload,
+                              resolver))
+        return true;
+      EEP->setSubPattern(sub);
+    } else if (auto argType = elt->getArgumentInterfaceType()) {
+      // Else if the element pattern has no sub-pattern but the element type has
+      // associated values, expand it to be semantically equivalent to an
+      // element pattern of wildcards.
+      Type elementType = enumTy->getTypeOfMember(elt->getModuleContext(),
+                                                 elt, argType);
+      SmallVector<TuplePatternElt, 8> elements;
+      if (auto *TTy = dyn_cast<TupleType>(elementType.getPointer())) {
+        for (auto &elt : TTy->getElements()) {
+          auto *subPattern = new (Context) AnyPattern(SourceLoc());
+          elements.push_back(TuplePatternElt(elt.getName(), SourceLoc(),
+                                             subPattern));
+        }
+      } else {
+        auto parenTy = dyn_cast<ParenType>(elementType.getPointer());
+        assert(parenTy && "Associated value type is neither paren nor tuple?");
+        
+        auto *subPattern = new (Context) AnyPattern(SourceLoc());
+        elements.push_back(TuplePatternElt(Identifier(), SourceLoc(),
+                                           subPattern));
+      }
+      Pattern *sub = TuplePattern::createSimple(Context, SourceLoc(),
+                                                elements, SourceLoc(),
+                                                /*implicit*/true);
+      if (coercePatternToType(sub, dc, elementType,
+                              subOptions|TR_FromNonInferredPattern|TR_EnumPatternPayload,
+                              resolver))
         return true;
       EEP->setSubPattern(sub);
     }
@@ -1578,11 +1622,12 @@
         param->setInterfaceType(CE->mapTypeOutOfContext(ty));
       }
     }
-
-    if (!ty->isMaterializable()) {
-      if (ty->is<InOutType>()) {
-        param->setLet(false);
-      } else if (param->hasName()) {
+    
+    assert(!ty->hasLValueType() && "Bound param type to @lvalue?");
+    if (ty->is<InOutType>()) {
+      param->setLet(false);
+    } else if (auto *TTy = ty->getAs<TupleType>()) {
+      if (param->hasName() && TTy->hasInOutElement()) {
         diagnose(param->getStartLoc(),
                  diag::param_type_non_materializable_tuple, ty);
       }
diff --git a/lib/Sema/TypeCheckProtocol.cpp b/lib/Sema/TypeCheckProtocol.cpp
index 8d6f64d..09981dd 100644
--- a/lib/Sema/TypeCheckProtocol.cpp
+++ b/lib/Sema/TypeCheckProtocol.cpp
@@ -2654,6 +2654,7 @@
     Options.PrintDocumentationComments = false;
     Options.AccessibilityFilter = Accessibility::Private;
     Options.PrintAccessibility = false;
+    Options.SkipAttributes = true;
     Options.FunctionBody = [](const ValueDecl *VD) { return getCodePlaceholder(); };
     Options.setBaseType(AdopterTy);
     Options.CurrentModule = Adopter->getParentModule();
@@ -3121,9 +3122,7 @@
           auto proto = Conformance->getProtocol();
           auto &diags = proto->getASTContext().Diags;
           diags.diagnose(witness->getLoc(),
-                         proto->getASTContext().LangOpts.isSwiftVersion3()
-                           ? diag::witness_self_same_type_warn
-                           : diag::witness_self_same_type,
+                         diag::witness_self_same_type,
                          witness->getDescriptiveKind(),
                          witness->getFullName(),
                          Conformance->getType(),
@@ -3286,15 +3285,21 @@
 ///
 /// \returns an empty result on success, or a description of the error.
 static CheckTypeWitnessResult checkTypeWitness(TypeChecker &tc, DeclContext *dc,
+                                               ProtocolDecl *proto,
                                                AssociatedTypeDecl *assocType, 
                                                Type type) {
-  if (auto superclass = assocType->getSuperclass()) {
+  auto *moduleDecl = dc->getParentModule();
+  auto *genericSig = proto->getGenericSignature();
+  auto *depTy = DependentMemberType::get(proto->getSelfInterfaceType(),
+                                         assocType);
+
+  if (auto superclass = genericSig->getSuperclassBound(depTy, *moduleDecl)) {
     if (!superclass->isExactSuperclassOf(type))
       return superclass->getAnyNominal();
   }
 
   // Check protocol conformances.
-  for (auto reqProto : assocType->getConformingProtocols()) {
+  for (auto reqProto : genericSig->getConformsTo(depTy, *moduleDecl)) {
     if (!tc.conformsToProtocol(type, reqProto, dc, None))
       return reqProto;
 
@@ -3323,6 +3328,11 @@
 /// Attempt to resolve a type witness via member name lookup.
 ResolveWitnessResult ConformanceChecker::resolveTypeWitnessViaLookup(
                        AssociatedTypeDecl *assocType) {
+  if (!Proto->isRequirementSignatureComputed()) {
+    Conformance->setInvalid();
+    return ResolveWitnessResult::Missing;
+  }
+
   // Look for a member type with the same name as the associated type.
   auto candidates = TC.lookupMemberType(DC, Adoptee, assocType->getName(),
                                         NameLookupFlags::ProtocolMembers);
@@ -3342,7 +3352,7 @@
         continue;
 
     // Check this type against the protocol requirements.
-    if (auto checkResult = checkTypeWitness(TC, DC, assocType, 
+    if (auto checkResult = checkTypeWitness(TC, DC, Proto, assocType,
                                             candidate.second)) {
       auto reqProto = checkResult.getProtocolOrClass();
       nonViable.push_back({candidate.first, reqProto});
@@ -3603,7 +3613,7 @@
       if (!canInferFromOtherAssociatedType) {
         // Check that the type witness meets the
         // requirements on the associated type.
-        if (auto failed = checkTypeWitness(TC, DC, result.first,
+        if (auto failed = checkTypeWitness(TC, DC, Proto, result.first,
                                            result.second)) {
           witnessResult.NonViable.push_back(
                               std::make_tuple(result.first,result.second,failed));
@@ -4189,14 +4199,20 @@
     }
 
     TC.validateDecl(assocType);
-    Type defaultType = assocType->getDefaultDefinitionLoc().getType().subst(
+    Type defaultType = assocType->getDefaultDefinitionLoc().getType();
+
+    // FIXME: Circularity
+    if (!defaultType)
+      return Type();
+
+    defaultType = defaultType.subst(
         QueryTypeSubstitutionMap{substitutions},
         LookUpConformanceInModule(DC->getParentModule()));
 
     if (!defaultType)
       return Type();
 
-    if (auto failed = checkTypeWitness(TC, DC, assocType, defaultType)) {
+    if (auto failed = checkTypeWitness(TC, DC, Proto, assocType, defaultType)) {
       // Record the failure, if we haven't seen one already.
       if (!failedDefaultedAssocType) {
         failedDefaultedAssocType = assocType;
@@ -4231,7 +4247,7 @@
       return Type();
 
     // Make sure that the derived type is sane.
-    if (checkTypeWitness(TC, DC, assocType, derivedType)) {
+    if (checkTypeWitness(TC, DC, Proto, assocType, derivedType)) {
       diagnoseOrDefer(assocType, true,
         [derivedType](NormalProtocolConformance *conformance) {
           // FIXME: give more detail here?
@@ -5174,6 +5190,23 @@
           Conformance->setInvalid();
           return;
         }
+
+        // If the @objc on the witness was inferred using the deprecated
+        // Swift 3 rules, warn if asked.
+        if (auto attr = witness->getAttrs().getAttribute<ObjCAttr>()) {
+          if (attr->isSwift3Inferred() &&
+              TC.Context.LangOpts.WarnSwift3ObjCInference
+                == Swift3ObjCInferenceWarnings::Minimal) {
+            TC.diagnose(Conformance->getLoc(),
+                        diag::witness_swift3_objc_inference,
+                        witness->getDescriptiveKind(), witness->getFullName(),
+                        Conformance->getProtocol()->getDeclaredInterfaceType());
+            TC.diagnose(witness, diag::make_decl_objc,
+                        witness->getDescriptiveKind())
+              .fixItInsert(witness->getAttributeInsertionLoc(false),
+                           "@objc ");
+          }
+        }
       }
     };
 
@@ -5436,20 +5469,8 @@
   }
 
   // If we're using this conformance, note that.
-  if (options.contains(ConformanceCheckFlags::Used) &&
-      lookupResult->isConcrete()) {
-    auto concrete = lookupResult->getConcrete();
-    auto normalConf = concrete->getRootNormalConformance();
-
-    // If the conformance is incomplete, queue it for completion.
-    if (normalConf->isIncomplete())
-      UsedConformances.insert(normalConf);
-
-    // Record the usage of this conformance in the enclosing source
-    // file.
-    if (auto sf = DC->getParentSourceFile()) {
-      sf->addUsedConformance(normalConf);
-    }
+  if (options.contains(ConformanceCheckFlags::Used)) {
+    markConformanceUsed(*lookupResult, DC);
   }
 
   // When requested, print the conformance access path used to find this
@@ -5512,6 +5533,24 @@
                      : ConformsToProtocolResult::failure();
 }
 
+void TypeChecker::markConformanceUsed(ProtocolConformanceRef conformance,
+                                      DeclContext *dc) {
+  if (conformance.isAbstract()) return;
+
+  auto normalConformance =
+    conformance.getConcrete()->getRootNormalConformance();
+
+  if (normalConformance->isComplete()) return;
+
+  UsedConformances.insert(normalConformance);
+
+  // Record the usage of this conformance in the enclosing source
+  // file.
+  if (auto sf = dc->getParentSourceFile()) {
+    sf->addUsedConformance(normalConformance);
+  }
+}
+
 Optional<ProtocolConformanceRef>
 TypeChecker::LookUpConformance::operator()(
                                        CanType dependentType,
@@ -6002,6 +6041,9 @@
 
 /// Whether the given class has an explicit '@objc' name.
 static bool hasExplicitObjCName(ClassDecl *classDecl) {
+  if (classDecl->getAttrs().hasAttribute<ObjCRuntimeNameAttr>())
+    return true;
+
   auto objcAttr = classDecl->getAttrs().getAttribute<ObjCAttr>();
   if (!objcAttr) return false;
 
@@ -6023,26 +6065,17 @@
 
 /// Infer the attribute tostatic-initialize the Objective-C metadata for the
 /// given class, if needed.
-static void inferStaticInitializeObjCMetadata(ClassDecl *classDecl,
-                                              bool requiresNSCodingAttr) {
+static void inferStaticInitializeObjCMetadata(ClassDecl *classDecl) {
   // If we already have the attribute, there's nothing to do.
   if (classDecl->getAttrs().hasAttribute<StaticInitializeObjCMetadataAttr>())
     return;
 
-  // A class with the @NSKeyedArchiverClassNameAttr will end up getting registered
-  // with the Objective-C runtime anyway.
-  if (classDecl->getAttrs().hasAttribute<NSKeyedArchiverClassNameAttr>())
-    return;
-
-  // A class with @NSKeyedArchiverEncodeNonGenericSubclassesOnly promises not to be archived,
-  // so don't static-initialize its Objective-C metadata.
-  if (classDecl->getAttrs().hasAttribute<NSKeyedArchiverEncodeNonGenericSubclassesOnlyAttr>())
-    return;
-
   // If we know that the Objective-C metadata will be statically registered,
   // there's nothing to do.
-  if (!requiresNSCodingAttr && !hasGenericAncestry(classDecl))
+  if (!hasGenericAncestry(classDecl) &&
+      classDecl->getDeclContext()->isModuleScopeContext()) {
     return;
+  }
 
   // Infer @_staticInitializeObjCMetadata.
   ASTContext &ctx = classDecl->getASTContext();
@@ -6101,27 +6134,30 @@
     // have unstable archival names.
     if (auto classDecl = dc->getAsClassOrClassExtensionContext()) {
       if (Context.LangOpts.EnableObjCInterop &&
-          isNSCoding(conformance->getProtocol())) {
+          isNSCoding(conformance->getProtocol()) &&
+          !classDecl->isGenericContext()) {
         // Note: these 'kind' values are synchronized with
         // diag::nscoding_unstable_mangled_name.
-        Optional<unsigned> kind;
-        bool isFixable = true;
-        if (classDecl->getGenericSignature()) {
-          kind = 4;
-          isFixable = false;
-        } else if (!classDecl->getDeclContext()->isModuleScopeContext()) {
+        enum class UnstableNameKind : unsigned {
+          Private = 0,
+          FilePrivate,
+          Nested,
+          Local,
+        };
+        Optional<UnstableNameKind> kind;
+        if (!classDecl->getDeclContext()->isModuleScopeContext()) {
           if (classDecl->getDeclContext()->isTypeContext())
-            kind = 2;
+            kind = UnstableNameKind::Nested;
           else
-            kind = 3;
+            kind = UnstableNameKind::Local;
         } else {
           switch (classDecl->getFormalAccess()) {
           case Accessibility::FilePrivate:
-            kind = 1;
+            kind = UnstableNameKind::FilePrivate;
             break;
 
           case Accessibility::Private:
-            kind = 0;
+            kind = UnstableNameKind::Private;
             break;
 
           case Accessibility::Internal:
@@ -6132,46 +6168,33 @@
         }
 
         if (kind && getLangOpts().EnableNSKeyedArchiverDiagnostics &&
-            !hasExplicitObjCName(classDecl) &&
-            !classDecl->getAttrs().hasAttribute<NSKeyedArchiverClassNameAttr>() &&
-            !classDecl->getAttrs()
-              .hasAttribute<NSKeyedArchiverEncodeNonGenericSubclassesOnlyAttr>()) {
-          SourceLoc loc;
-          if (auto normal = dyn_cast<NormalProtocolConformance>(conformance))
-            loc = normal->getLoc();
-          if (loc.isInvalid())
-            loc = currentDecl->getLoc();
-
+            isa<NormalProtocolConformance>(conformance) &&
+            !hasExplicitObjCName(classDecl)) {
           bool emitWarning = Context.LangOpts.isSwiftVersion3();
-          diagnose(loc,
+          diagnose(cast<NormalProtocolConformance>(conformance)->getLoc(),
                    emitWarning ? diag::nscoding_unstable_mangled_name_warn
                                : diag::nscoding_unstable_mangled_name,
-                   *kind, classDecl->TypeDecl::getDeclaredInterfaceType());
+                   static_cast<unsigned>(kind.getValue()),
+                   classDecl->getDeclaredInterfaceType());
           auto insertionLoc =
             classDecl->getAttributeInsertionLoc(/*forModifier=*/false);
-          if (isFixable) {
-            // Note: this is intentionally using the Swift 3 mangling,
-            // to provide compatibility with archives created in the Swift 3
-            // time frame.
-            Mangle::ASTMangler mangler;
-            diagnose(classDecl, diag::unstable_mangled_name_add_objc)
-              .fixItInsert(insertionLoc,
-                           "@objc(<#Objective-C class name#>)");
-            diagnose(classDecl,
-                     diag::unstable_mangled_name_add_NSKeyedArchiverClassName)
-              .fixItInsert(insertionLoc,
-                           "@NSKeyedArchiverClassName(\"" +
-                           mangler.mangleObjCRuntimeName(classDecl) +
-                           "\")");
-          } else {
-            diagnose(classDecl, diag::add_NSKeyedArchiverEncodeNonGenericSubclassesOnly_attr,
-                     classDecl->getDeclaredInterfaceType())
-              .fixItInsert(insertionLoc, "@NSKeyedArchiverEncodeNonGenericSubclassesOnly");
-          }
+          // Note: this is intentionally using the Swift 3 mangling,
+          // to provide compatibility with archives created in the Swift 3
+          // time frame.
+          Mangle::ASTMangler mangler;
+          std::string mangledName = mangler.mangleObjCRuntimeName(classDecl);
+          assert(Lexer::isIdentifier(mangledName) &&
+                 "mangled name is not an identifier; can't use @objc");
+          diagnose(classDecl, diag::unstable_mangled_name_add_objc)
+            .fixItInsert(insertionLoc,
+                         "@objc(" + mangledName + ")");
+          diagnose(classDecl, diag::unstable_mangled_name_add_objc_new)
+            .fixItInsert(insertionLoc,
+                         "@objc(<#prefixed Objective-C class name#>)");
         }
 
         // Infer @_staticInitializeObjCMetadata if needed.
-        inferStaticInitializeObjCMetadata(classDecl, kind.hasValue());
+        inferStaticInitializeObjCMetadata(classDecl);
       }
     }
   }
diff --git a/lib/Sema/TypeCheckREPL.cpp b/lib/Sema/TypeCheckREPL.cpp
index abd1711..d4bb655 100644
--- a/lib/Sema/TypeCheckREPL.cpp
+++ b/lib/Sema/TypeCheckREPL.cpp
@@ -217,7 +217,7 @@
 /// description of the pattern involved.
 void REPLChecker::generatePrintOfExpression(StringRef NameStr, Expr *E) {
   // Always print rvalues, not lvalues.
-  E = TC.coerceToMaterializable(E);
+  E = TC.coerceToRValue(E);
 
   SourceLoc Loc = E->getStartLoc();
   SourceLoc EndLoc = E->getEndLoc();
@@ -304,7 +304,7 @@
   // going to reparent it.
   auto TLCD = cast<TopLevelCodeDecl>(SF.Decls.back());
 
-  E = TC.coerceToMaterializable(E);
+  E = TC.coerceToRValue(E);
 
   // Create the meta-variable, let the typechecker name it.
   Identifier name = TC.getNextResponseVariableName(SF.getParentModule());
@@ -408,7 +408,7 @@
     // Replace the initializer of PBD with a reference to our repl temporary.
     Expr *E = TC.buildCheckedRefExpr(vd, &SF, DeclNameLoc(vd->getStartLoc()),
                                      /*Implicit=*/true);
-    E = TC.coerceToMaterializable(E);
+    E = TC.coerceToRValue(E);
     PBD->setInit(entryIdx, E);
     SF.Decls.push_back(PBTLCD);
     
diff --git a/lib/Sema/TypeCheckStmt.cpp b/lib/Sema/TypeCheckStmt.cpp
index 0cd11a2..203540d 100644
--- a/lib/Sema/TypeCheckStmt.cpp
+++ b/lib/Sema/TypeCheckStmt.cpp
@@ -512,14 +512,6 @@
     return GS;
   }
 
-  Stmt *visitIfConfigStmt(IfConfigStmt *ICS) {
-    
-    // Active members are attached to the enclosing declaration, so there's no
-    // need to walk anything within.
-    
-    return ICS;
-  }
-
   Stmt *visitDoStmt(DoStmt *DS) {
     AddLabeledStmt loopNest(*this, DS);
     Stmt *S = DS->getBody();
@@ -862,7 +854,7 @@
     // Type-check the subject expression.
     Expr *subjectExpr = S->getSubjectExpr();
     hadError |= TC.typeCheckExpression(subjectExpr, DC);
-    if (Expr *newSubjectExpr = TC.coerceToMaterializable(subjectExpr))
+    if (Expr *newSubjectExpr = TC.coerceToRValue(subjectExpr))
       subjectExpr = newSubjectExpr;
     S->setSubjectExpr(subjectExpr);
     Type subjectType = S->getSubjectExpr()->getType();
@@ -1080,7 +1072,7 @@
   }
 
   // Complain about l-values that are neither loaded nor stored.
-  if (E->getType()->isLValueType()) {
+  if (E->getType()->hasLValueType()) {
     diagnose(E->getLoc(), diag::expression_unused_lvalue)
       .highlight(E->getSourceRange());
     return;
@@ -1321,7 +1313,8 @@
   // caller.
   auto expansion = func->getResilienceExpansion();
   if (!tc.Context.isSwiftVersion3() &&
-      func->getEffectiveAccess() == Accessibility::Public)
+      func->getFormalAccessScope(/*useDC=*/nullptr,
+                                 /*respectVersionedAttr=*/true).isPublic())
     expansion = ResilienceExpansion::Minimal;
 
   for (auto &param : *params) {
diff --git a/lib/Sema/TypeCheckSwitchStmt.cpp b/lib/Sema/TypeCheckSwitchStmt.cpp
index 93cfaf6..d5594ca 100644
--- a/lib/Sema/TypeCheckSwitchStmt.cpp
+++ b/lib/Sema/TypeCheckSwitchStmt.cpp
@@ -71,7 +71,7 @@
     };
 
   #define PAIRCASE(XS, YS) case PairSwitch(XS, YS)
-
+    
     class Space final {
     private:
       SpaceKind Kind;
@@ -79,11 +79,70 @@
       Identifier Head;
       std::forward_list<Space> Spaces;
 
+      // NB: This constant is arbitrary.  Anecdotally, the Space Engine is
+      // capable of efficiently handling Spaces of around size 200, but it would
+      // potentially push an enormous fixit on the user.
+      static const size_t MAX_SPACE_SIZE = 128;
+
+      size_t computeSize(TypeChecker &TC,
+                         SmallPtrSetImpl<TypeBase *> &cache) const {
+        switch (getKind()) {
+        case SpaceKind::Empty:
+          return 0;
+        case SpaceKind::BooleanConstant:
+          return 1;
+        case SpaceKind::Type: {
+          if (!canDecompose(getType())) {
+            return 1;
+          }
+          cache.insert(getType().getPointer());
+
+          SmallVector<Space, 4> spaces;
+          decompose(TC, getType(), spaces);
+          size_t acc = 0;
+          for (auto &sp : spaces) {
+            // Decomposed pattern spaces grow with the sum of the subspaces.
+            acc += sp.computeSize(TC, cache);
+          }
+          
+          cache.erase(getType().getPointer());
+          return acc;
+        }
+        case SpaceKind::Constructor: {
+          size_t acc = 1;
+          for (auto &sp : getSpaces()) {
+            // Break self-recursive references among enum arguments.
+            if (sp.getKind() == SpaceKind::Type
+                  && cache.count(sp.getType().getPointer())) {
+              continue;
+            }
+            
+            // Constructor spaces grow with the product of their arguments.
+            acc *= sp.computeSize(TC, cache);
+          }
+          return acc;
+        }
+        case SpaceKind::Disjunct: {
+          size_t acc = 0;
+          for (auto &sp : getSpaces()) {
+            // Disjoint grow with the sum of the subspaces.
+            acc += sp.computeSize(TC, cache);
+          }
+          return acc;
+        }
+        }
+      }
+      
     public:
       explicit Space(Type T)
         : Kind(SpaceKind::Type), TypeAndVal(T, false), Head(Identifier()),
           Spaces({}){}
-      explicit Space(Type T, Identifier H, bool downgrade, SmallVectorImpl<Space> &SP)
+      explicit Space(Type T, Identifier H, bool downgrade,
+                     SmallVectorImpl<Space> &SP)
+        : Kind(SpaceKind::Constructor), TypeAndVal(T, downgrade), Head(H),
+          Spaces(SP.begin(), SP.end()) {}
+      explicit Space(Type T, Identifier H, bool downgrade,
+                     const std::forward_list<Space> &SP)
         : Kind(SpaceKind::Constructor), TypeAndVal(T, downgrade), Head(H),
           Spaces(SP.begin(), SP.end()) {}
       explicit Space(SmallVectorImpl<Space> &SP)
@@ -100,6 +159,15 @@
 
       void dump() const LLVM_ATTRIBUTE_USED;
 
+      size_t getSize(TypeChecker &TC) const {
+        SmallPtrSet<TypeBase *, 4> cache;
+        return computeSize(TC, cache);
+      }
+
+      static size_t getMaximumSize() {
+        return MAX_SPACE_SIZE;
+      }
+
       bool isEmpty() const { return getKind() == SpaceKind::Empty; }
       
       bool canDowngrade() const {
@@ -254,28 +322,13 @@
           if (this->Head.compare(other.Head) != 0) {
             return false;
           }
-
-          // Special Case: A constructor pattern may include the head but not
-          // the payload patterns.  In that case the space is covered.
-          // This also acts to short-circuit comparisons with payload-less
+          
+          // Special Case: Short-circuit comparisons with payload-less
           // constructors.
           if (other.getSpaces().empty()) {
             return true;
           }
 
-          // If 'this' constructor pattern has no payload and the other space
-          // does, then 'this' covers more of the space only if the other
-          // constructor isn't the explicit form.
-          //
-          // .case <= .case(_, _, _, ...)
-          if (this->getSpaces().empty()) {
-            return std::accumulate(other.getSpaces().begin(),
-                                   other.getSpaces().end(),
-                                   true, [](bool acc, const Space sp){
-              return acc && sp.getKind() == SpaceKind::Type;
-            });
-          }
-
           // H(a1, ..., an) <= H(b1, ..., bn) iff a1 <= b1 && ... && an <= bn
           auto i = this->getSpaces().begin();
           auto j = other.getSpaces().begin();
@@ -331,145 +384,144 @@
         };
 
         switch (PairSwitch(getKind(), other.getKind())) {
-          PAIRCASE (SpaceKind::Empty, SpaceKind::Disjunct):
-          PAIRCASE (SpaceKind::Type, SpaceKind::Disjunct):
-          PAIRCASE (SpaceKind::Constructor, SpaceKind::Disjunct):
-          PAIRCASE (SpaceKind::Disjunct, SpaceKind::Disjunct):
-          PAIRCASE (SpaceKind::BooleanConstant, SpaceKind::Disjunct): {
-            // S & (S1 || ... || Sn) iff (S & S1) && ... && (S & Sn)
-            SmallVector<Space, 4> intersectedCases;
-            std::transform(other.getSpaces().begin(), other.getSpaces().end(),
-                           std::back_inserter(intersectedCases),
-                           [&](const Space &s) {
-              return this->intersect(s, TC);
-            });
-            // Optimization: Remove all empty spaces.
-            SmallVector<Space, 4> filteredCases;
-            std::copy_if(intersectedCases.begin(), intersectedCases.end(),
-                         std::back_inserter(filteredCases),
+        PAIRCASE (SpaceKind::Empty, SpaceKind::Disjunct):
+        PAIRCASE (SpaceKind::Type, SpaceKind::Disjunct):
+        PAIRCASE (SpaceKind::Constructor, SpaceKind::Disjunct):
+        PAIRCASE (SpaceKind::Disjunct, SpaceKind::Disjunct):
+        PAIRCASE (SpaceKind::BooleanConstant, SpaceKind::Disjunct): {
+          // S & (S1 || ... || Sn) iff (S & S1) && ... && (S & Sn)
+          SmallVector<Space, 4> intersectedCases;
+          std::transform(other.getSpaces().begin(), other.getSpaces().end(),
+                         std::back_inserter(intersectedCases),
                          [&](const Space &s) {
-              return !s.isEmpty();
-            });
-            return examineDecomp(filteredCases);
-          }
+            return this->intersect(s, TC);
+          });
+          // Optimization: Remove all empty spaces.
+          SmallVector<Space, 4> filteredCases;
+          std::copy_if(intersectedCases.begin(), intersectedCases.end(),
+                       std::back_inserter(filteredCases),
+                       [&](const Space &s) {
+            return !s.isEmpty();
+          });
+          return examineDecomp(filteredCases);
+        }
 
-          PAIRCASE (SpaceKind::Disjunct, SpaceKind::Empty):
-          PAIRCASE (SpaceKind::Disjunct, SpaceKind::Type):
-          PAIRCASE (SpaceKind::Disjunct, SpaceKind::Constructor):
-          PAIRCASE (SpaceKind::Disjunct, SpaceKind::BooleanConstant): {
-            // (S1 || ... || Sn) & S iff (S & S1) && ... && (S & Sn)
-            SmallVector<Space, 4> intersectedCases;
-            std::transform(this->getSpaces().begin(), this->getSpaces().end(),
-                           std::back_inserter(intersectedCases),
-                           [&](const Space &s) {
-              return s.intersect(other, TC);
-            });
-            // Optimization: Remove all empty spaces.
-            SmallVector<Space, 4> filteredCases;
-            std::copy_if(intersectedCases.begin(), intersectedCases.end(),
-                         std::back_inserter(filteredCases),
+        PAIRCASE (SpaceKind::Disjunct, SpaceKind::Empty):
+        PAIRCASE (SpaceKind::Disjunct, SpaceKind::Type):
+        PAIRCASE (SpaceKind::Disjunct, SpaceKind::Constructor):
+        PAIRCASE (SpaceKind::Disjunct, SpaceKind::BooleanConstant): {
+          // (S1 || ... || Sn) & S iff (S & S1) && ... && (S & Sn)
+          SmallVector<Space, 4> intersectedCases;
+          std::transform(this->getSpaces().begin(), this->getSpaces().end(),
+                         std::back_inserter(intersectedCases),
                          [&](const Space &s) {
-              return !s.isEmpty();
-            });
-            return examineDecomp(filteredCases);
+            return s.intersect(other, TC);
+          });
+          // Optimization: Remove all empty spaces.
+          SmallVector<Space, 4> filteredCases;
+          std::copy_if(intersectedCases.begin(), intersectedCases.end(),
+                       std::back_inserter(filteredCases),
+                       [&](const Space &s) {
+            return !s.isEmpty();
+          });
+          return examineDecomp(filteredCases);
+        }
+        PAIRCASE (SpaceKind::Type, SpaceKind::Type): {
+          // Optimization: The intersection of equal types is that type.
+          if (this->getType()->isEqual(other.getType())) {
+            return other;
+          } else if (canDecompose(this->getType())) {
+            SmallVector<Space, 4> spaces;
+            decompose(TC, this->getType(), spaces);
+            auto decomposition = examineDecomp(spaces);
+            return decomposition.intersect(other, TC);
+          } else if (canDecompose(other.getType())) {
+            SmallVector<Space, 4> spaces;
+            decompose(TC, other.getType(), spaces);
+            auto disjunctSp = examineDecomp(spaces);
+            return this->intersect(disjunctSp, TC);
+          } else {
+            return other;
           }
-          PAIRCASE (SpaceKind::Type, SpaceKind::Type): {
-            // Optimization: The intersection of equal types is that type.
-            if (this->getType()->isEqual(other.getType())) {
-              return other;
-            } else if (canDecompose(this->getType())) {
-              SmallVector<Space, 4> spaces;
-              decompose(TC, this->getType(), spaces);
-              auto decomposition = examineDecomp(spaces);
-              return decomposition.intersect(other, TC);
-            } else if (canDecompose(other.getType())) {
-              SmallVector<Space, 4> spaces;
-              decompose(TC, other.getType(), spaces);
-              auto disjunctSp = examineDecomp(spaces);
-              return this->intersect(disjunctSp, TC);
-            } else {
-              return other;
-            }
+        }
+        PAIRCASE (SpaceKind::Type, SpaceKind::Constructor): {
+          if (canDecompose(this->getType())) {
+            SmallVector<Space, 4> spaces;
+            decompose(TC, this->getType(), spaces);
+            auto decomposition = examineDecomp(spaces);
+            return decomposition.intersect(other, TC);
+          } else {
+            return other;
           }
-          PAIRCASE (SpaceKind::Type, SpaceKind::Constructor): {
-            if (canDecompose(this->getType())) {
-              SmallVector<Space, 4> spaces;
-              decompose(TC, this->getType(), spaces);
-              auto decomposition = examineDecomp(spaces);
-              return decomposition.intersect(other, TC);
-            } else {
-              return other;
-            }
-          }
-          PAIRCASE (SpaceKind::Constructor, SpaceKind::Type):
-            return *this;
+        }
+        PAIRCASE (SpaceKind::Constructor, SpaceKind::Type):
+          return *this;
             
-          PAIRCASE (SpaceKind::Constructor, SpaceKind::Constructor): {
-            // Optimization: If the heads don't match, the intersection of
-            // the constructor spaces is empty.
-            if (this->getHead().compare(other.Head) != 0) {
+        PAIRCASE (SpaceKind::Constructor, SpaceKind::Constructor): {
+          // Optimization: If the heads don't match, the intersection of
+          // the constructor spaces is empty.
+          if (this->getHead().compare(other.Head) != 0) {
+            return Space();
+          }
+          
+          // Special Case: Short circuit patterns without payloads.  Their
+          // intersection is the whole space.
+          if (other.getSpaces().empty()) {
+            return *this;
+          }
+
+          SmallVector<Space, 4> paramSpace;
+          auto i = this->getSpaces().begin();
+          auto j = other.getSpaces().begin();
+          for (; i != this->getSpaces().end() && j != other.getSpaces().end();
+               ++i, ++j) {
+            auto intersection = (*i).intersect(*j, TC);
+            if (intersection.simplify(TC).isEmpty()) {
               return Space();
             }
-
-            // Special Case: A constructor pattern may include the head but not
-            // the payload patterns.  In that case, the intersection is the
-            // whole original space.
-            if (other.getSpaces().empty()) {
-              return *this;
-            }
-
-            SmallVector<Space, 4> paramSpace;
-            auto i = this->getSpaces().begin();
-            auto j = other.getSpaces().begin();
-            for (; i != this->getSpaces().end() && j != other.getSpaces().end();
-                 ++i, ++j) {
-              auto intersection = (*i).intersect(*j, TC);
-              if (intersection.simplify(TC).isEmpty()) {
-                return Space();
-              }
-              paramSpace.push_back(intersection);
-            }
-
-            return examineDecomp(paramSpace);
+            paramSpace.push_back(intersection);
           }
 
-          PAIRCASE (SpaceKind::BooleanConstant, SpaceKind::BooleanConstant):
-            return this->getBoolValue() == other.getBoolValue() ? *this : Space();
+          return examineDecomp(paramSpace);
+        }
 
-          PAIRCASE (SpaceKind::BooleanConstant, SpaceKind::Type): {
-            if (other.getType()->isBool()) {
-              return this->getKind() == SpaceKind::BooleanConstant ? *this : Space();
-            }
+        PAIRCASE (SpaceKind::BooleanConstant, SpaceKind::BooleanConstant):
+          return this->getBoolValue() == other.getBoolValue() ? *this : Space();
 
-            if (canDecompose(other.getType())) {
-              SmallVector<Space, 4> spaces;
-              decompose(TC, other.getType(), spaces);
-              auto disjunctSp = examineDecomp(spaces);
-              return this->intersect(disjunctSp, TC);
-            }
-            return Space();
-          }
-          PAIRCASE (SpaceKind::BooleanConstant, SpaceKind::Empty):
-          PAIRCASE (SpaceKind::BooleanConstant, SpaceKind::Constructor):
-            return Space();
-
-          PAIRCASE (SpaceKind::Type, SpaceKind::BooleanConstant): {
-            if (canDecompose(this->getType())) {
-              SmallVector<Space, 4> spaces;
-              decompose(TC, this->getType(), spaces);
-              auto disjunctSp = examineDecomp(spaces);
-              return disjunctSp.intersect(other, TC);
-            } else {
-              return Space();
-            }
+        PAIRCASE (SpaceKind::BooleanConstant, SpaceKind::Type): {
+          if (other.getType()->isBool()) {
+            return this->getKind() == SpaceKind::BooleanConstant ? *this : Space();
           }
 
-          PAIRCASE (SpaceKind::Empty, SpaceKind::BooleanConstant):
-          PAIRCASE (SpaceKind::Constructor, SpaceKind::BooleanConstant):
-            return Space();
+          if (canDecompose(other.getType())) {
+            SmallVector<Space, 4> spaces;
+            decompose(TC, other.getType(), spaces);
+            auto disjunctSp = examineDecomp(spaces);
+            return this->intersect(disjunctSp, TC);
+          }
+          return Space();
+        }
+        PAIRCASE (SpaceKind::BooleanConstant, SpaceKind::Empty):
+        PAIRCASE (SpaceKind::BooleanConstant, SpaceKind::Constructor):
+          return Space();
 
-          default:
-            llvm_unreachable("Uncovered pair found while computing intersect?");
+        PAIRCASE (SpaceKind::Type, SpaceKind::BooleanConstant): {
+          if (canDecompose(this->getType())) {
+            SmallVector<Space, 4> spaces;
+            decompose(TC, this->getType(), spaces);
+            auto disjunctSp = examineDecomp(spaces);
+            return disjunctSp.intersect(other, TC);
+          } else {
+            return Space();
+          }
+        }
+
+        PAIRCASE (SpaceKind::Empty, SpaceKind::BooleanConstant):
+        PAIRCASE (SpaceKind::Constructor, SpaceKind::BooleanConstant):
+          return Space();
+
+        default:
+          llvm_unreachable("Uncovered pair found while computing intersect?");
         }
       }
 
@@ -558,13 +610,12 @@
             return *this;
           }
 
-          // Special Case: A constructor pattern may include the head but not
-          // the payload patterns.  In that case, because the heads match, it
-          // covers the whole space.
+          // Special Case: Short circuit patterns without payloads.  Their
+          // difference is empty.
           if (other.getSpaces().empty()) {
             return Space();
           }
-
+          
           SmallVector<Space, 4> constrSpaces;
           bool foundBad = false;
           auto i = this->getSpaces().begin();
@@ -855,14 +906,16 @@
     void checkExhaustiveness(bool limitedChecking) {
       if (limitedChecking) {
         // Reject switch statements with empty blocks.
-        if (Switch->getCases().empty())
+        if (Switch->getCases().empty()) {
           SpaceEngine::diagnoseMissingCases(TC, Switch,
                                             /*justNeedsDefault*/true,
                                             SpaceEngine::Space());
+        }
         return;
       }
 
       bool sawDowngradablePattern = false;
+      bool sawRedundantPattern = false;
       SmallVector<Space, 4> spaces;
       for (unsigned i = 0, e = Switch->getCases().size(); i < e; ++i) {
         auto *caseBlock = Switch->getCases()[i];
@@ -880,6 +933,8 @@
                                            sawDowngradablePattern);
           if (projection.isUseful()
                 && projection.isSubspace(Space(spaces), TC)) {
+            sawRedundantPattern |= true;
+
             TC.diagnose(caseItem.getStartLoc(),
                           diag::redundant_particular_case)
               .highlight(caseItem.getSourceRange());
@@ -890,6 +945,23 @@
       
       Space totalSpace(Switch->getSubjectExpr()->getType());
       Space coveredSpace(spaces);
+      size_t totalSpaceSize = totalSpace.getSize(TC);
+      if (totalSpaceSize > Space::getMaximumSize()) {
+        // Because the space is large, we have to extend the size
+        // heuristic to compensate for actually exhaustively pattern matching
+        // over enormous spaces.  In this case, if the covered space covers
+        // as much as the total space, and there were no duplicates, then we
+        // can assume the user did the right thing and that they don't need
+        // a 'default' to be inserted.
+        if (!sawRedundantPattern
+            && coveredSpace.getSize(TC) >= totalSpaceSize) {
+          return;
+        }
+
+        diagnoseMissingCases(TC, Switch, /*justNeedsDefault*/true, Space());
+        return;
+      }
+      
       auto uncovered = totalSpace.minus(coveredSpace, TC).simplify(TC);
       if (uncovered.isEmpty()) {
         return;
@@ -925,27 +997,27 @@
     // @_downgrade_exhaustivity_check.
     static bool shouldDowngradeToWarning(const Space &masterSpace) {
       switch (masterSpace.getKind()) {
-        case SpaceKind::Type:
-        case SpaceKind::BooleanConstant:
-        case SpaceKind::Empty:
-          return false;
-        // Traverse the constructor and its subspaces.
-        case SpaceKind::Constructor:
-          return masterSpace.canDowngrade()
-              || std::accumulate(masterSpace.getSpaces().begin(),
-                                 masterSpace.getSpaces().end(),
-                                false,
-                                [](bool acc, const Space &space) {
-            return acc || shouldDowngradeToWarning(space);
-          });
-        case SpaceKind::Disjunct:
-          // Traverse the disjunct's subspaces.
-          return std::accumulate(masterSpace.getSpaces().begin(),
-                                 masterSpace.getSpaces().end(),
-                                 false,
-                                 [](bool acc, const Space &space) {
-                                   return acc || shouldDowngradeToWarning(space);
-                                 });
+      case SpaceKind::Type:
+      case SpaceKind::BooleanConstant:
+      case SpaceKind::Empty:
+        return false;
+      // Traverse the constructor and its subspaces.
+      case SpaceKind::Constructor:
+        return masterSpace.canDowngrade()
+            || std::accumulate(masterSpace.getSpaces().begin(),
+                               masterSpace.getSpaces().end(),
+                              false,
+                              [](bool acc, const Space &space) {
+          return acc || shouldDowngradeToWarning(space);
+        });
+      case SpaceKind::Disjunct:
+        // Traverse the disjunct's subspaces.
+        return std::accumulate(masterSpace.getSpaces().begin(),
+                               masterSpace.getSpaces().end(),
+                               false,
+                               [](bool acc, const Space &space) {
+                                 return acc || shouldDowngradeToWarning(space);
+                               });
       }
     }
 
@@ -1021,7 +1093,6 @@
         TC.diagnose(startLoc, diag::non_exhaustive_switch);
         TC.diagnose(startLoc, diag::missing_several_cases, false)
           .fixItInsert(endLoc, buffer.str());
-
       } else {
         TC.Context.Diags.diagnose(startLoc, mainDiagType);
 
@@ -1150,8 +1221,7 @@
       case PatternKind::Named:
         return Space(item->getType());
       case PatternKind::Bool: {
-        auto *BP = cast<BoolPattern>(item);
-        return Space(BP->getValue());
+        return Space(cast<BoolPattern>(item)->getValue());
       }
       case PatternKind::Is: {
         auto *IP = cast<IsPattern>(item);
@@ -1184,11 +1254,20 @@
       }
       case PatternKind::OptionalSome: {
         auto *OSP = cast<OptionalSomePattern>(item);
+        auto subSpace = projectPattern(TC, OSP->getSubPattern(),
+                                       sawDowngradablePattern);
+        // To match patterns like (_, _, ...)?, we must rewrite the underlying
+        // tuple pattern to .some(_, _, ...) first.
+        if (subSpace.getKind() == SpaceKind::Constructor
+            && subSpace.getHead().empty()) {
+          return Space(item->getType(), TC.Context.getIdentifier("some"),
+                       /*canDowngrade*/false, subSpace.getSpaces());
+        }
         SmallVector<Space, 1> payload = {
           projectPattern(TC, OSP->getSubPattern(), sawDowngradablePattern)
         };
-        return Space(item->getType(), TC.Context.getIdentifier("some"), /*canDowngrade*/false,
-                     payload);
+        return Space(item->getType(), TC.Context.getIdentifier("some"),
+                     /*canDowngrade*/false, payload);
       }
       case PatternKind::EnumElement: {
         auto *VP = cast<EnumElementPattern>(item);
@@ -1230,6 +1309,8 @@
           // Special Case: A constructor pattern may have all of its payload
           // matched by a single var pattern.  Project it like the tuple it
           // really is.
+          //
+          // FIXME: SE-0155 makes this case unreachable.
           if (SP->getKind() == PatternKind::Named
               || SP->getKind() == PatternKind::Any
               || SP->getKind() == PatternKind::Tuple) {
diff --git a/lib/Sema/TypeCheckType.cpp b/lib/Sema/TypeCheckType.cpp
index 9bb5c7f..f757a41 100644
--- a/lib/Sema/TypeCheckType.cpp
+++ b/lib/Sema/TypeCheckType.cpp
@@ -252,12 +252,13 @@
     // protocol extension, always use the nominal type and
     // not the protocol 'Self' type.
     if (isa<NominalTypeDecl>(typeDecl))
-      return resolver->resolveTypeOfDecl(
-        DC->getAsNominalTypeOrNominalTypeExtensionContext());
+      return resolver->mapTypeIntoContext(
+        DC->getDeclaredInterfaceType());
 
     // Otherwise, we want the protocol 'Self' type for
     // substituting into alias types and associated types.
-    return resolver->resolveTypeOfContext(DC);
+    return resolver->mapTypeIntoContext(
+      DC->getSelfInterfaceType());
   };
 
   // First, check for direct containment in one of our parent contexts.
@@ -357,7 +358,8 @@
       }
     } else {
       // Get the substituted superclass type, if any.
-      superclass = resolver->resolveTypeOfContext(parentDC)->getSuperclass();
+      superclass = resolver->mapTypeIntoContext(
+        parentDC->getSelfInterfaceType())->getSuperclass();
 
       // Start with the type of the current context.
       auto fromNominal = parentDC->getAsNominalTypeOrNominalTypeExtensionContext();
@@ -435,12 +437,14 @@
         auto *parentNominal =
           parentDC->getAsNominalTypeOrNominalTypeExtensionContext();
         if (parentNominal == nominalType)
-          return resolver->resolveTypeOfContext(parentDC);
+          return resolver->mapTypeIntoContext(
+            parentDC->getSelfInterfaceType());
         if (isa<ExtensionDecl>(parentDC)) {
           auto *extendedType = parentNominal;
           while (extendedType != nullptr) {
             if (extendedType == nominalType)
-              return resolver->resolveTypeOfDecl(extendedType);
+              return resolver->mapTypeIntoContext(
+                extendedType->getDeclaredInterfaceType());
             extendedType = extendedType->getParent()
               ->getAsNominalTypeOrNominalTypeExtensionContext();
           }
@@ -451,26 +455,24 @@
 
   // If we found a generic parameter, map to the archetype if there is one.
   if (auto genericParam = dyn_cast<GenericTypeParamDecl>(typeDecl)) {
-    return resolver->resolveGenericTypeParamType(
-        genericParam->getDeclaredInterfaceType()
-            ->castTo<GenericTypeParamType>());
+    assert(!selfType);
+    return resolver->mapTypeIntoContext(
+      genericParam->getDeclaredInterfaceType());
   }
 
-  bool hasDependentType = typeDecl->getDeclaredInterfaceType()
-    ->hasTypeParameter();
-
   // Simple case -- the type is not nested inside of another type.
   // However, it might be nested inside another generic context, so
   // we do want to write the type in terms of interface types or
   // context archetypes, depending on the resolver given to us.
-  if (!selfType || !hasDependentType) {
+  if (!selfType) {
     if (auto *aliasDecl = dyn_cast<TypeAliasDecl>(typeDecl)) {
       // For a generic typealias, return the unbound generic form of the type.
       if (aliasDecl->getGenericParams())
         return aliasDecl->getUnboundGenericType();
 
       // Otherwise, simply return the underlying type.
-      return resolver->resolveTypeOfDecl(aliasDecl);
+      return resolver->mapTypeIntoContext(
+        aliasDecl->getDeclaredInterfaceType());
     }
 
     // When a nominal type used outside its context, return the unbound
@@ -478,18 +480,10 @@
     if (auto *nominalDecl = dyn_cast<NominalTypeDecl>(typeDecl))
       return nominalDecl->getDeclaredType();
 
-    assert(!hasDependentType);
+    assert(isa<ModuleDecl>(typeDecl));
     return typeDecl->getDeclaredInterfaceType();
   }
 
-  // If we started from a protocol and found an associated type member
-  // of a (possibly inherited) protocol, resolve it via the resolver.
-  if (auto *assocType = dyn_cast<AssociatedTypeDecl>(typeDecl)) {
-    if (selfType->isTypeParameter())
-      return resolver->resolveSelfAssociatedType(
-          selfType, assocType);
-  }
-
   // Finally, substitute the base type into the member type.
   return substMemberTypeWithBase(fromDC->getParentModule(), typeDecl,
                                  selfType);
@@ -662,12 +656,21 @@
   // generic arguments.
   auto resultType = decl->getDeclaredInterfaceType();
 
+  bool hasTypeParameterOrVariable = false;
+
   // Get the substitutions for outer generic parameters from the parent
-  // type, but skip the step if the result type does not contain any
-  // substitutable type parameters.
-  if (resultType->hasTypeParameter())
-    if (auto parentType = unboundType->getParent())
-      subs = parentType->getContextSubstitutions(decl->getDeclContext());
+  // type.
+  if (auto parentType = unboundType->getParent()) {
+    if (parentType->hasUnboundGenericType()) {
+      assert(!resultType->hasTypeParameter());
+      return resultType;
+    }
+
+    subs = parentType->getContextSubstitutions(decl->getDeclContext());
+
+    hasTypeParameterOrVariable |=
+      (parentType->hasTypeParameter() || parentType->hasTypeVariable());
+  }
 
   SourceLoc noteLoc = decl->getLoc();
   if (noteLoc.isInvalid())
@@ -675,7 +678,6 @@
 
   // Realize the types of the generic arguments and add them to the
   // substitution map.
-  bool hasTypeParameterOrVariable = false;
   for (unsigned i = 0, e = genericArgs.size(); i < e; i++) {
     auto &genericArg = genericArgs[i];
 
@@ -863,7 +865,8 @@
 
         // Retrieve the nominal type and resolve it within this context.
         assert(!isa<ProtocolDecl>(nominal) && "Cannot be a protocol");
-        auto type = resolver->resolveTypeOfContext(dc->getInnermostTypeContext());
+        auto type = resolver->mapTypeIntoContext(
+          dc->getInnermostTypeContext()->getSelfInterfaceType());
         if (type->hasError())
           return type;
 
@@ -1158,7 +1161,8 @@
     // The issue is though that ComponentIdentTypeRepr only accepts a ValueDecl
     // while the 'Self' type is more than just a reference to a TypeDecl.
 
-    auto selfType = resolver->resolveTypeOfContext(func->getDeclContext());
+    auto selfType = resolver->mapTypeIntoContext(
+      func->getDeclContext()->getSelfInterfaceType());
     return DynamicSelfType::get(selfType, TC.Context);
   }
 
diff --git a/lib/Sema/TypeChecker.cpp b/lib/Sema/TypeChecker.cpp
index d0330fc..8e8ecd2 100644
--- a/lib/Sema/TypeChecker.cpp
+++ b/lib/Sema/TypeChecker.cpp
@@ -621,7 +621,8 @@
 void swift::performTypeChecking(SourceFile &SF, TopLevelContext &TLC,
                                 OptionSet<TypeCheckingFlags> Options,
                                 unsigned StartElem,
-                                unsigned WarnLongFunctionBodies) {
+                                unsigned WarnLongFunctionBodies,
+                                unsigned WarnLongExpressionTypeChecking) {
   if (SF.ASTStage == SourceFile::TypeChecked)
     return;
 
@@ -646,6 +647,7 @@
 
     if (MyTC) {
       MyTC->setWarnLongFunctionBodies(WarnLongFunctionBodies);
+      MyTC->setWarnLongExpressionTypeChecking(WarnLongExpressionTypeChecking);
       if (Options.contains(TypeCheckingFlags::DebugTimeFunctionBodies))
         MyTC->enableDebugTimeFunctionBodies();
 
@@ -853,7 +855,7 @@
 
   Type originalType = parsedExpr->getType();
   if (auto T = TC.getTypeOfExpressionWithoutApplying(parsedExpr, DC,
-                 referencedDecl, FreeTypeVariableBinding::GenericParameters))
+                 referencedDecl, FreeTypeVariableBinding::UnresolvedType))
     return T;
 
   // Try to recover if we've made any progress.
diff --git a/lib/Sema/TypeChecker.h b/lib/Sema/TypeChecker.h
index 3e80f5d..7fde357 100644
--- a/lib/Sema/TypeChecker.h
+++ b/lib/Sema/TypeChecker.h
@@ -305,8 +305,6 @@
   Disallow,
   /// Allow the free type variables to persist in the solution.
   Allow,
-  /// Bind the type variables to fresh generic parameters.
-  GenericParameters,
   /// Bind the type variables to UnresolvedType to represent the ambiguity.
   UnresolvedType
 };
@@ -831,6 +829,12 @@
   /// Intended for debugging purposes only.
   unsigned WarnLongFunctionBodies = 0;
 
+  /// If \p timeInMS is non-zero, warn when type-chcking an expression
+  /// takes longer than this many milliseconds.
+  ///
+  /// Intended for debugging purposes only.
+  unsigned WarnLongExpressionTypeChecking = 0;
+
   /// If true, the time it takes to type-check each function will be dumped
   /// to llvm::errs().
   bool DebugTimeFunctionBodies = false;
@@ -874,6 +878,14 @@
     WarnLongFunctionBodies = timeInMS;
   }
 
+  /// If \p timeInMS is non-zero, warn when type-chcking an expression
+  /// takes longer than this many milliseconds.
+  ///
+  /// Intended for debugging purposes only.
+  void setWarnLongExpressionTypeChecking(unsigned timeInMS) {
+    WarnLongExpressionTypeChecking = timeInMS;
+  }
+
   bool getInImmediateMode() {
     return InImmediateMode;
   }
@@ -1735,7 +1747,13 @@
 
   /// \brief Coerce the given expression to materializable type, if it
   /// isn't already.
-  Expr *coerceToMaterializable(Expr *expr);
+  Expr *coerceToRValue(Expr *expr,
+                       llvm::function_ref<Type(Expr *)> getType
+                         = [](Expr *expr) { return expr->getType(); },
+                       llvm::function_ref<void(Expr *, Type)> setType
+                         = [](Expr *expr, Type type) {
+                           expr->setType(type);
+                         });
 
   /// Require that the library intrinsics for working with Optional<T>
   /// exist.
@@ -1836,6 +1854,11 @@
                      ConformanceCheckOptions options, SourceLoc ComplainLoc,
                      UnsatisfiedDependency *unsatisfiedDependency);
 
+  /// Mark the given protocol conformance as "used" from the given declaration
+  /// context.
+  void markConformanceUsed(ProtocolConformanceRef conformance,
+                           DeclContext *dc);
+
   /// Functor class suitable for use as a \c LookupConformanceFn to look up a
   /// conformance through a particular declaration context using the given
   /// type checker.
diff --git a/lib/Serialization/Serialization.cpp b/lib/Serialization/Serialization.cpp
index d0a39f0..d144ea9 100644
--- a/lib/Serialization/Serialization.cpp
+++ b/lib/Serialization/Serialization.cpp
@@ -1955,11 +1955,12 @@
   case DAK_SetterAccessibility:
   case DAK_ObjCBridged:
   case DAK_SynthesizedProtocol:
-  case DAK_Count:
   case DAK_Implements:
-  case DAK_NSKeyedArchiverClassName:
+  case DAK_ObjCRuntimeName:
     llvm_unreachable("cannot serialize attribute");
-    return;
+
+  case DAK_Count:
+    llvm_unreachable("not a real attribute");
 
 #define SIMPLE_DECL_ATTR(_, CLASS, ...)\
   case DAK_##CLASS: { \
@@ -4468,8 +4469,7 @@
     for (auto TD : localTypeDecls) {
       hasLocalTypes = true;
       Mangle::ASTMangler Mangler;
-      std::string MangledName = Mangler.mangleTypeAsUSR(
-                                              TD->getDeclaredInterfaceType());
+      std::string MangledName = Mangler.mangleDeclAsUSR(TD, /*USRPrefix*/"");
       assert(!MangledName.empty() && "Mangled type came back empty!");
       localTypeGenerator.insert(MangledName, {
         addDeclRef(TD), TD->getLocalDiscriminator()
diff --git a/lib/Syntax/LegacyASTTransformer.cpp b/lib/Syntax/LegacyASTTransformer.cpp
index 5737261..2a6650f 100644
--- a/lib/Syntax/LegacyASTTransformer.cpp
+++ b/lib/Syntax/LegacyASTTransformer.cpp
@@ -161,7 +161,7 @@
   std::copy(ComprisingTokens.begin(),
             ComprisingTokens.end(),
             std::back_inserter(Layout));
-  auto Raw = RawSyntax::make(SyntaxKind::UnknownExpr,
+  auto Raw = RawSyntax::make(SyntaxKind::UnknownDecl,
                              Layout,
                              SourcePresence::Present);
   return UnknownDeclSyntaxData::make(Raw);
@@ -175,7 +175,7 @@
   std::copy(ComprisingTokens.begin(),
             ComprisingTokens.end(),
             std::back_inserter(Layout));
-  auto Raw = RawSyntax::make(SyntaxKind::UnknownExpr,
+  auto Raw = RawSyntax::make(SyntaxKind::UnknownStmt,
                              Layout,
                              SourcePresence::Present);
   return UnknownStmtSyntaxData::make(Raw);
@@ -599,13 +599,6 @@
 }
 
 RC<SyntaxData>
-LegacyASTTransformer::visitIfConfigStmt(IfConfigStmt *S,
-                                        const SyntaxData *Parent,
-                                        const CursorIndex IndexInParent) {
-  return getUnknownStmt(S);
-}
-
-RC<SyntaxData>
 LegacyASTTransformer::visitFailStmt(FailStmt *S,
                                     const SyntaxData *Parent,
                                     const CursorIndex IndexInParent) {
@@ -1105,6 +1098,30 @@
 }
 
 RC<SyntaxData>
+LegacyASTTransformer::visitConditionalBridgeFromObjCExpr(
+    ConditionalBridgeFromObjCExpr *E,
+    const SyntaxData *Parent,
+    const CursorIndex IndexInParent) {
+  return getUnknownExpr(E);
+}
+
+RC<SyntaxData>
+LegacyASTTransformer::visitBridgeFromObjCExpr(
+    BridgeFromObjCExpr *E,
+    const SyntaxData *Parent,
+    const CursorIndex IndexInParent) {
+  return getUnknownExpr(E);
+}
+
+RC<SyntaxData>
+LegacyASTTransformer::visitBridgeToObjCExpr(
+    BridgeToObjCExpr *E,
+    const SyntaxData *Parent,
+    const CursorIndex IndexInParent) {
+  return getUnknownExpr(E);
+}
+
+RC<SyntaxData>
 LegacyASTTransformer::visitClassMetatypeToObjectExpr(
     ClassMetatypeToObjectExpr *E,
     const SyntaxData *Parent,
diff --git a/stdlib/private/StdlibCollectionUnittest/MinimalCollections.swift.gyb b/stdlib/private/StdlibCollectionUnittest/MinimalCollections.swift.gyb
index 9de2e2c..96968b3 100644
--- a/stdlib/private/StdlibCollectionUnittest/MinimalCollections.swift.gyb
+++ b/stdlib/private/StdlibCollectionUnittest/MinimalCollections.swift.gyb
@@ -973,7 +973,7 @@
     // FIXME: swift-3-indexing-model: use defaults.
 //     if Self not in ['DefaultedCollection', 'DefaultedBidirectionalCollection', 'DefaultedRandomAccessCollection', 'DefaultedMutableCollection', 'DefaultedRangeReplaceableCollection']:
 
-  public subscript(bounds: Range<${Index}>) -> ${SelfSlice}<${Self}<Base._Element>> {
+  public subscript(bounds: Range<${Index}>) -> ${SelfSlice}<${Self}<Base.Element>> {
     get {
       // FIXME: swift-3-indexing-model: range check.
       return ${SelfSlice}(base: self, bounds: bounds)
diff --git a/stdlib/private/StdlibUnittest/StdlibUnittest.swift.gyb b/stdlib/private/StdlibUnittest/StdlibUnittest.swift.gyb
index 84d239f..d8e130c 100644
--- a/stdlib/private/StdlibUnittest/StdlibUnittest.swift.gyb
+++ b/stdlib/private/StdlibUnittest/StdlibUnittest.swift.gyb
@@ -624,6 +624,8 @@
 }
 #endif
 
+// Avoid serializing references to objc_setUncaughtExceptionHandler in SIL.
+@inline(never) @_semantics("stdlib_binary_only")
 func _childProcess() {
   _stdlib_installTrapInterceptor()
 
diff --git a/stdlib/public/Platform/Darwin.swift.gyb b/stdlib/public/Platform/Darwin.swift.gyb
index 9c627a7..4d4604b 100644
--- a/stdlib/public/Platform/Darwin.swift.gyb
+++ b/stdlib/public/Platform/Darwin.swift.gyb
@@ -74,7 +74,8 @@
 // Macros defined in bsd/sys/proc.h that do not import into Swift.
 extension extern_proc {
     // #define p_starttime p_un.__p_starttime
-    @_transparent var p_starttime: timeval {
+    @_transparent
+    public var p_starttime: timeval {
         get { return self.p_un.__p_starttime }
         set { self.p_un.__p_starttime = newValue }
     }
diff --git a/stdlib/public/SDK/ARKit/ARKit.swift b/stdlib/public/SDK/ARKit/ARKit.swift
new file mode 100644
index 0000000..c0189f8
--- /dev/null
+++ b/stdlib/public/SDK/ARKit/ARKit.swift
@@ -0,0 +1,57 @@
+//===----------------------------------------------------------------------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+@_exported import ARKit
+
+@available(iOS, introduced: 11.0)
+extension ARCamera {
+    /**
+     A value describing the camera's tracking state.
+     */
+    public enum TrackingState {
+        public enum Reason {
+            /** Tracking is limited due to a excessive motion of the camera. */
+            case excessiveMotion
+            
+            /** Tracking is limited due to a lack of features visible to the camera. */
+            case insufficientFeatures
+        }
+        
+        /** Tracking is not available. */
+        case notAvailable
+        
+        /** Tracking is limited. See tracking reason for details. */
+        case limited(Reason)
+        
+        /** Tracking is normal. */
+        case normal
+    }
+    
+    /**
+     The tracking state of the camera.
+     */
+    public var trackingState: TrackingState {
+        switch __trackingState {
+        case .notAvailable: return .notAvailable
+        case .normal: return .normal
+        case .limited:
+            let reason: TrackingState.Reason
+            
+            switch __trackingStateReason {
+            case .excessiveMotion: reason = .excessiveMotion
+            default: reason = .insufficientFeatures
+            }
+            
+            return .limited(reason)
+        }
+    }
+}
diff --git a/stdlib/public/SDK/ARKit/CMakeLists.txt b/stdlib/public/SDK/ARKit/CMakeLists.txt
new file mode 100644
index 0000000..153753e
--- /dev/null
+++ b/stdlib/public/SDK/ARKit/CMakeLists.txt
@@ -0,0 +1,14 @@
+cmake_minimum_required(VERSION 3.4.3)
+include("../../../../cmake/modules/StandaloneOverlay.cmake")
+
+add_swift_library(swiftARKit ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
+  ARKit.swift
+
+  SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
+  LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
+  TARGET_SDKS IOS IOS_SIMULATOR
+  SWIFT_MODULE_DEPENDS_IOS Darwin AVFoundation CoreAudio CoreFoundation CoreGraphics CoreImage CoreMedia Dispatch Foundation GLKit ObjectiveC QuartzCore SceneKit simd SpriteKit UIKit # auto-updated
+  FRAMEWORK_DEPENDS_WEAK ARKit
+
+  DEPLOYMENT_VERSION_IOS ${SWIFTLIB_DEPLOYMENT_VERSION_ARKIT_IOS}
+)
diff --git a/stdlib/public/SDK/AVFoundation/AVCaptureSynchronizedDataCollection.swift b/stdlib/public/SDK/AVFoundation/AVCaptureSynchronizedDataCollection.swift
new file mode 100644
index 0000000..3839c10
--- /dev/null
+++ b/stdlib/public/SDK/AVFoundation/AVCaptureSynchronizedDataCollection.swift
@@ -0,0 +1,38 @@
+//===----------------------------------------------------------------------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+@_exported import AVFoundation // Clang module
+import Foundation
+
+
+#if os(iOS)
+@available(iOS, introduced: 11.0)
+extension AVCaptureSynchronizedDataCollection : Sequence {
+  public func makeIterator() -> Iterator {
+    return Iterator(self)
+  }
+
+  public struct Iterator : IteratorProtocol {
+    internal var fastIterator: NSFastEnumerationIterator
+
+    internal init(_ collection: AVCaptureSynchronizedDataCollection) {
+      self.fastIterator = NSFastEnumerationIterator(collection)
+    }
+
+    public mutating func next() -> AVCaptureSynchronizedData? {
+      guard let nextAny = fastIterator.next() else { return nil }
+      return nextAny as! AVCaptureSynchronizedData
+    }
+  }
+}
+
+#endif
diff --git a/stdlib/public/SDK/AVFoundation/CMakeLists.txt b/stdlib/public/SDK/AVFoundation/CMakeLists.txt
index b7848ae..b77f677 100644
--- a/stdlib/public/SDK/AVFoundation/CMakeLists.txt
+++ b/stdlib/public/SDK/AVFoundation/CMakeLists.txt
@@ -2,6 +2,7 @@
 include("../../../../cmake/modules/StandaloneOverlay.cmake")
 
 add_swift_library(swiftAVFoundation ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
+  AVCaptureSynchronizedDataCollection.swift
   AVError.swift
   NSValue.swift.gyb
 
diff --git a/stdlib/public/SDK/Accelerate/BNNS.swift.gyb b/stdlib/public/SDK/Accelerate/BNNS.swift.gyb
new file mode 100644
index 0000000..6dcc845
--- /dev/null
+++ b/stdlib/public/SDK/Accelerate/BNNS.swift.gyb
@@ -0,0 +1,291 @@
+//===----------------------------------------------------------------------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+import Swift
+@_exported import Accelerate
+@_exported import Accelerate.vecLib.BNNS
+
+%{
+bnns2016 = [
+  ('OSX','10.12'), ('iOS','10.0'), ('tvOS','10.0'), ('watchOS','3.0')
+]
+
+bnns2017 = [
+  ('OSX','10.13'), ('iOS','11.0'), ('tvOS','11.0'), ('watchOS','4.0')
+]
+
+def available(releases):
+  return '@available(' + ', '.join([
+    r[0] + ' ' + r[1] for r in releases
+  ]) + ', *)'
+
+def renamed(name):
+  return '\n'.join([
+    '@available(*, deprecated, renamed: "' + name + '")'
+  ])
+
+def newEnumValue(base, new, old, rel):
+  decl = '  public static var ' + new + ': ' + base + ' {\n'
+  impl = '    return __' + base + old + '\n  }'
+  return '  ' + available(rel) + '\n' + decl + impl
+
+def oldEnumValue(base, new, old):
+  return renamed(base + '.' + new) + '\n' + \
+  'public var ' + base + old + ' = __' + base + old
+
+def renameEnumMembers(base, names):
+  return 'extension ' + base + ' {\n' + \
+  '\n'.join([newEnumValue(base, new, old, rel) for new, old, rel in names]) + '\n}\n' + \
+  '\n'.join([oldEnumValue(base, new, old) for new, old, rel in names if rel != bnns2017])
+}%
+
+${renameEnumMembers('BNNSDataType', [
+  ('float16', 'Float16', bnns2016),
+  ('float',   'Float32', bnns2016),
+  ('int8',    'Int8',    bnns2016),
+  ('int16',   'Int16',   bnns2016),
+  ('int32',   'Int32',   bnns2016),
+  ('uint8',   'UInt8',   bnns2017),
+  ('uint16',  'UInt16',  bnns2017),
+  ('uint32',  'UInt32',  bnns2017),
+  ('indexed8','Indexed8',bnns2016),
+])}
+
+${renameEnumMembers('BNNSPoolingFunction', [
+  ('max',     'Max',     bnns2016),
+  ('average', 'Average', bnns2016),
+])}
+
+${renameEnumMembers('BNNSActivationFunction', [
+  ('identity', 'Identity', bnns2016),
+  ('rectifiedLinear', 'RectifiedLinear', bnns2016),
+  ('leakyRectifiedLinear', 'LeakyRectifiedLinear', bnns2016),
+  ('sigmoid', 'Sigmoid', bnns2016),
+  ('tanh', 'Tanh', bnns2016),
+  ('scaledTanh', 'ScaledTanh', bnns2016),
+  ('abs', 'Abs', bnns2016),
+  ('linear', 'Linear', bnns2017),
+  ('clamp', 'Clamp', bnns2017),
+  ('integerLinearSaturate', 'IntegerLinearSaturate', bnns2017),
+  ('integerLinearSaturatePerChannel', 'IntegerLinearSaturatePerChannel', bnns2017),
+  ('softmax', 'Softmax', bnns2017),
+])}
+
+${renameEnumMembers('BNNSFlags', [('useClientPointer', 'UseClientPtr', bnns2016)])}
+
+extension BNNSImageStackDescriptor {
+  ${available(bnns2016)}
+  public init(width: Int,
+              height: Int,
+              channels: Int,
+              row_stride: Int,
+              image_stride: Int,
+              data_type: BNNSDataType,
+              data_scale: Float = 1,
+              data_bias: Float = 0) {
+
+    _precondition(data_type != .indexed8,
+                  "Image stacks cannot use the indexed8 data type.")
+
+    self.width = width
+    self.height = height
+    self.channels = channels
+    self.row_stride = row_stride
+    self.image_stride = image_stride
+    self.data_type = data_type
+    self.data_scale = data_scale
+    self.data_bias = data_bias
+  }
+}
+
+extension BNNSVectorDescriptor {
+  ${available(bnns2016)}
+  public init(size: Int,
+              data_type: BNNSDataType,
+              data_scale: Float = 1,
+              data_bias: Float = 0) {
+
+    _precondition(data_type != .indexed8,
+                  "Vectors cannot use the indexed8 data type.")
+
+    self.size = size
+    self.data_type = data_type
+    self.data_scale = data_scale
+    self.data_bias = data_bias
+  }
+}
+
+extension BNNSLayerData {
+  ${available(bnns2016)}
+  public init(data: UnsafeRawPointer?,
+              data_type: BNNSDataType,
+              data_scale: Float = 1,
+              data_bias: Float = 0,
+              data_table: UnsafePointer<Float>? = nil) {
+
+    if data_type == .indexed8 {
+      _precondition(data_table != nil,
+                    "data_table cannot be nil if data_type is .indexed8.")
+    }
+
+    self.data = data
+    self.data_type = data_type
+    self.data_scale = data_scale
+    self.data_bias = data_bias
+    self.data_table = data_table
+  }
+
+  ${available(bnns2016)}
+  public static var zero: BNNSLayerData {
+    return BNNSLayerData()
+  }
+}
+
+extension BNNSActivation {
+
+  ${available(bnns2016)}
+  public init(function: BNNSActivationFunction,
+              alpha: Float = .nan,
+              beta: Float = .nan) {
+    if #available(OSX 10.13, iOS 11.0, tvOS 11.0, watchOS 4.0, *) {
+      _precondition(function != .integerLinearSaturate,
+                    "This initializer cannot be used with the integerLinearSaturate activation function; use BNNSActivation.integerLinearSaturate(scale:Int32, offset:Int32, shift:Int32) instead.")
+      _precondition(function != .integerLinearSaturatePerChannel,
+                    "This initializer cannot be used with the integerLinearSaturatePerChannel activation function; use BNNSActivation.integerLinearSaturatePerChannel(scale:UnsafePointer<Int32>, offset:UnsafePointer<Int32>, shift:UnsafePointer<Int32>) instead.")
+    }
+    self.function = function
+    self.alpha = alpha
+    self.beta = beta
+    iscale = 1                // unused
+    ioffset = 0               // unused
+    ishift = 0                // unused
+    iscale_per_channel = nil  // unused
+    ioffset_per_channel = nil // unused
+    ishift_per_channel = nil  // unused
+  }
+
+  /// A BNNSActivation object that uses the identity activation function.
+  ${available(bnns2016)}
+  public static var identity: BNNSActivation {
+    return BNNSActivation(function: .identity)
+  }
+
+  /// A BNNSActivation object that uses the integerLinearSaturate
+  /// activation function.
+  ${available(bnns2017)}
+  public static func integerLinearSaturate(
+    scale: Int32 = 1,
+    offset: Int32 = 0,
+    shift: Int32 = 0)
+    -> BNNSActivation {
+    return BNNSActivation(function: .integerLinearSaturate,
+                          alpha: .nan,     // unused
+                          beta: .nan,      // unused
+                          iscale: scale,
+                          ioffset: offset,
+                          ishift: shift,
+                          iscale_per_channel: nil, // unused
+                          ioffset_per_channel: nil,// unused
+                          ishift_per_channel: nil) // unused
+  }
+
+  /// A BNNSActivation object that uses the integerLinearSaturatePerChannel
+  /// activation function.
+  ///
+  /// `scale`, `offset`, and `shift` must each point to a buffer with count
+  /// equal to the number of channels on which this activation object operates.
+  ${available(bnns2017)}
+  public static func integerLinearSaturatePerChannel(
+    scale:  UnsafePointer<Int32>,
+    offset: UnsafePointer<Int32>,
+    shift:  UnsafePointer<Int32>)
+    -> BNNSActivation {
+    return BNNSActivation(function: .integerLinearSaturatePerChannel,
+                          alpha: .nan,     // unused
+                          beta: .nan,      // unused
+                          iscale: 1,       // unused
+                          ioffset: 0,      // unused
+                          ishift: 0,       // unused
+                          iscale_per_channel: scale,
+                          ioffset_per_channel: offset,
+                          ishift_per_channel: shift)
+  }
+}
+
+extension BNNSConvolutionLayerParameters {
+  ${available(bnns2016)}
+  public init(x_stride: Int,
+              y_stride: Int,
+              x_padding: Int,
+              y_padding: Int,
+              k_width: Int,
+              k_height: Int,
+              in_channels: Int,
+              out_channels: Int,
+              weights: BNNSLayerData,
+              bias: BNNSLayerData = .zero,
+              activation: BNNSActivation = .identity) {
+    self.x_stride = x_stride
+    self.y_stride = y_stride
+    self.x_padding = x_padding
+    self.y_padding = y_padding
+    self.k_width = k_width
+    self.k_height = k_height
+    self.in_channels = in_channels
+    self.out_channels = out_channels
+    self.weights = weights
+    self.bias = bias
+    self.activation = activation
+  }
+}
+
+extension BNNSPoolingLayerParameters {
+  ${available(bnns2016)}
+  public init(x_stride: Int,
+              y_stride: Int,
+              x_padding: Int,
+              y_padding: Int,
+              k_width: Int,
+              k_height: Int,
+              in_channels: Int,
+              out_channels: Int,
+              pooling_function: BNNSPoolingFunction,
+              bias: BNNSLayerData = .zero,
+              activation: BNNSActivation = .identity) {
+    self.x_stride = x_stride
+    self.y_stride = y_stride
+    self.x_padding = x_padding
+    self.y_padding = y_padding
+    self.k_width = k_width
+    self.k_height = k_height
+    self.in_channels = in_channels
+    self.out_channels = out_channels
+    self.pooling_function = pooling_function
+    self.bias = bias
+    self.activation = activation
+  }
+}
+
+extension BNNSFullyConnectedLayerParameters {
+  ${available(bnns2016)}
+  public init(in_size: Int,
+              out_size: Int,
+              weights: BNNSLayerData,
+              bias: BNNSLayerData = .zero,
+              activation: BNNSActivation = .identity) {
+    self.in_size = in_size
+    self.out_size = out_size
+    self.weights = weights
+    self.bias = bias
+    self.activation = activation
+  }
+}
diff --git a/stdlib/public/SDK/Accelerate/CMakeLists.txt b/stdlib/public/SDK/Accelerate/CMakeLists.txt
new file mode 100644
index 0000000..2ad8736
--- /dev/null
+++ b/stdlib/public/SDK/Accelerate/CMakeLists.txt
@@ -0,0 +1,17 @@
+add_swift_library(swiftAccelerate ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
+  BNNS.swift.gyb
+
+  SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
+  LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
+  TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR
+  SWIFT_COMPILE_FLAGS ${STDLIB_SIL_SERIALIZE_ALL} -parse-stdlib
+  SWIFT_MODULE_DEPENDS_OSX Darwin CoreFoundation CoreGraphics Dispatch Foundation IOKit ObjectiveC os XPC # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC os # auto-updated
+  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC os # auto-updated
+  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreFoundation CoreGraphics Dispatch ObjectiveC os # auto-updated
+
+  DEPLOYMENT_VERSION_OSX ${SWIFTLIB_DEPLOYMENT_VERSION_SIMD_OSX}
+  DEPLOYMENT_VERSION_IOS ${SWIFTLIB_DEPLOYMENT_VERSION_SIMD_IOS}
+  DEPLOYMENT_VERSION_TVOS ${SWIFTLIB_DEPLOYMENT_VERSION_SIMD_TVOS}
+  DEPLOYMENT_VERSION_WATCHOS ${SWIFTLIB_DEPLOYMENT_VERSION_SIMD_WATCHOS}
+)
diff --git a/stdlib/public/SDK/AppKit/AppKit.swift b/stdlib/public/SDK/AppKit/AppKit.swift
index 209ff46..ba9298b 100644
--- a/stdlib/public/SDK/AppKit/AppKit.swift
+++ b/stdlib/public/SDK/AppKit/AppKit.swift
@@ -70,6 +70,13 @@
   }
 }
 
+extension NSApplication {
+  @available(swift 4)
+  public static func loadApplication() {
+    NSApplicationLoad()
+  }
+}
+
 extension NSColor : _ExpressibleByColorLiteral {
   @nonobjc
   public required convenience init(colorLiteralRed red: Float, green: Float,
diff --git a/stdlib/public/SDK/AppKit/CMakeLists.txt b/stdlib/public/SDK/AppKit/CMakeLists.txt
index 222a0e4..34bacd6 100644
--- a/stdlib/public/SDK/AppKit/CMakeLists.txt
+++ b/stdlib/public/SDK/AppKit/CMakeLists.txt
@@ -5,6 +5,8 @@
   AppKit.swift
   AppKit_FoundationExtensions.swift
   NSError.swift
+  NSGraphics.swift
+  NSOpenGL.swift
 
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
diff --git a/stdlib/public/SDK/AppKit/NSError.swift b/stdlib/public/SDK/AppKit/NSError.swift
index 8351200..d6fa31d 100644
--- a/stdlib/public/SDK/AppKit/NSError.swift
+++ b/stdlib/public/SDK/AppKit/NSError.swift
@@ -39,6 +39,10 @@
   public static var sharingServiceNotConfigured: CocoaError.Code {
     return CocoaError.Code(rawValue: 67072)
   }
+  @available(macOS 10.13, *)
+  public static var fontAssetDownloadError: CocoaError.Code {
+    return CocoaError.Code(rawValue: 66304)
+  }
 }
 
 // Names deprecated late in Swift 3
@@ -109,6 +113,10 @@
   public static var sharingServiceNotConfigured: CocoaError.Code {
     return CocoaError.Code(rawValue: 67072)
   }
+  @available(macOS 10.13, *)
+  public static var fontAssetDownloadError: CocoaError.Code {
+    return CocoaError.Code(rawValue: 66304)
+  }
 }
 
 // Names deprecated late in Swift 3
@@ -163,6 +171,11 @@
   public var isTextReadWriteError: Bool {
     return code.rawValue >= 65792 && code.rawValue <= 66303
   }
+
+  @available(macOS 10.13, *)
+  public var isFontError: Bool {
+    return code.rawValue >= 66304 && code.rawValue <= 66335
+  }
 }
 
 extension CocoaError {
diff --git a/stdlib/public/SDK/AppKit/NSGraphics.swift b/stdlib/public/SDK/AppKit/NSGraphics.swift
new file mode 100644
index 0000000..a453f47
--- /dev/null
+++ b/stdlib/public/SDK/AppKit/NSGraphics.swift
@@ -0,0 +1,212 @@
+//===----------------------------------------------------------------------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+import Foundation
+@_exported import AppKit
+
+extension NSRect {
+  /// Fills this rect in the current NSGraphicsContext in the context's fill
+  /// color.
+  /// The compositing operation of the fill defaults to the context's
+  /// compositing operation, not necessarily using `.copy` like `NSRectFill()`.
+  /// - precondition: There must be a set current NSGraphicsContext.
+  @available(swift 4)
+  public func fill(using operation: NSCompositingOperation =
+    NSGraphicsContext.current()?.compositingOperation ?? .sourceOver) {
+    precondition(NSGraphicsContext.current() != nil,
+                 "There must be a set current NSGraphicsContext")
+    NSRectFillUsingOperation(self, operation)
+  }
+    
+  /// Draws a frame around the inside of this rect in the current
+  /// NSGraphicsContext in the context's fill color
+  /// The compositing operation of the fill defaults to the context's
+  /// compositing operation, not necessarily using `.copy` like `NSFrameRect()`.
+  /// - precondition: There must be a set current NSGraphicsContext.
+  @available(swift 4)
+  public func frame(withWidth width: CGFloat = 1.0,
+                    using operation: NSCompositingOperation =
+    NSGraphicsContext.current()?.compositingOperation ?? .sourceOver) {
+    precondition(NSGraphicsContext.current() != nil,
+                 "There must be a set current NSGraphicsContext")
+    NSFrameRectWithWidthUsingOperation(self, width, operation)
+  }
+    
+  /// Modifies the current graphics context clipping path by intersecting it
+  /// with this rect.
+  /// This permanently modifies the graphics state, so the current state should
+  /// be saved beforehand and restored afterwards.
+  /// - precondition: There must be a set current NSGraphicsContext.
+  @available(swift 4)
+  public func clip() {
+    precondition(NSGraphicsContext.current() != nil,
+                 "There must be a set current NSGraphicsContext")
+    NSRectClip(self)
+  }
+}
+
+extension Sequence where Iterator.Element == NSRect {
+  /// Fills this list of rects in the current NSGraphicsContext in the context's
+  /// fill color.
+  /// The compositing operation of the fill defaults to the context's
+  /// compositing operation, not necessarily using `.copy` like `NSRectFill()`.
+  /// - precondition: There must be a set current NSGraphicsContext.
+  @available(swift 4)
+  public func fill(using operation: NSCompositingOperation =
+    NSGraphicsContext.current()?.compositingOperation ?? .sourceOver) {
+    precondition(NSGraphicsContext.current() != nil,
+                 "There must be a set current NSGraphicsContext")
+    let rects = Array(self)
+    let count = rects.count
+    guard count > 0 else { return }
+    rects.withUnsafeBufferPointer { rectBufferPointer in
+      guard let rectArray = rectBufferPointer.baseAddress else { return }
+      NSRectFillListUsingOperation(rectArray, count, operation)
+    }
+  }
+    
+  /// Modifies the current graphics context clipping path by intersecting it
+  /// with the graphical union of this list of rects
+  /// This permanently modifies the graphics state, so the current state should
+  /// be saved beforehand and restored afterwards.
+  /// - precondition: There must be a set current NSGraphicsContext.
+  @available(swift 4)
+  public func clip() {
+    precondition(NSGraphicsContext.current() != nil,
+                 "There must be a set current NSGraphicsContext")
+    let rects = Array(self)
+    let count = rects.count
+    guard count > 0 else { return }
+    rects.withUnsafeBufferPointer { rectBufferPointer in
+      guard let rectArray = rectBufferPointer.baseAddress else { return }
+      NSRectClipList(rectArray, count)
+    }
+  }
+}
+
+extension Sequence where Iterator.Element == (CGRect, NSColor) {
+  /// Fills this list of rects in the current NSGraphicsContext with that rect's
+  /// associated color
+  /// The compositing operation of the fill defaults to the context's
+  /// compositing operation, not necessarily using `.copy` like `NSRectFill()`.
+  /// - precondition: There must be a set current NSGraphicsContext.
+  @available(swift 4)
+  public func fill(using operation: NSCompositingOperation =
+    NSGraphicsContext.current()?.compositingOperation ?? .sourceOver) {
+    precondition(NSGraphicsContext.current() != nil,
+                 "There must be a set current NSGraphicsContext")
+    let rects = map { $0.0 }
+    let colors = map { $0.1 }
+    let count = rects.count
+    guard count > 0 else { return }
+    rects.withUnsafeBufferPointer { rectBufferPointer in
+      colors.withUnsafeBufferPointer { colorBufferPointer in
+        guard let rectArray = rectBufferPointer.baseAddress else { return }
+        guard let colorArray = colorBufferPointer.baseAddress else { return }
+        NSRectFillListWithColorsUsingOperation(
+            rectArray, colorArray, count, operation)
+      }
+    }
+  }
+}
+
+extension Sequence where Iterator.Element == (CGRect, gray: CGFloat) {
+  /// Fills this list of rects in the current NSGraphicsContext with that rect's
+  /// associated gray component value in the DeviceGray color space.
+  /// The compositing operation of the fill defaults to the context's
+  /// compositing operation, not necessarily using `.copy` like
+  /// `NSRectFillListWithGrays()`.
+  /// - precondition: There must be a set current NSGraphicsContext.
+  @available(swift 4)
+  public func fill(using operation: NSCompositingOperation =
+    NSGraphicsContext.current()?.compositingOperation ?? .sourceOver) {
+    // NSRectFillListWithGrays does not have a variant taking an operation, but
+    // is added here for consistency with the other drawing operations.
+    guard let graphicsContext = NSGraphicsContext.current() else {
+      fatalError("There must be a set current NSGraphicsContext")
+    }
+    let cgContext: CGContext
+    if #available(macOS 10.10, *) {
+      cgContext = graphicsContext.cgContext
+    } else {
+      cgContext = Unmanaged<CGContext>.fromOpaque(
+        graphicsContext.graphicsPort).takeUnretainedValue()
+    }
+    cgContext.saveGState()
+    forEach {
+      cgContext.setFillColor(gray: $0.gray, alpha: 1.0)
+      NSRectFillUsingOperation($0.0, operation)
+    }
+    cgContext.restoreGState()
+  }
+}
+
+extension NSWindowDepth {
+  @available(swift 4)
+  public static func bestDepth(
+    colorSpaceName: NSColorSpaceName,
+    bitsPerSample: Int,
+    bitsPerPixel: Int,
+    isPlanar: Bool
+    ) -> (NSWindowDepth, isExactMatch: Bool) {
+    var isExactMatch: ObjCBool = false
+    let depth = NSBestDepth(
+        colorSpaceName as String,
+        bitsPerSample, bitsPerPixel, isPlanar, &isExactMatch)
+    return (depth, isExactMatch: isExactMatch.boolValue)
+  }
+  @available(swift 4)
+  public static var availableDepths: [NSWindowDepth] {
+    // __NSAvailableWindowDepths is NULL terminated, the length is not known up front
+    let depthsCArray = NSAvailableWindowDepths()
+    var depths: [NSWindowDepth] = []
+    var length = 0
+    var depth = depthsCArray[length]
+    while depth.rawValue != 0 {
+      depths.append(depth)
+      length += 1
+      depth = depthsCArray[length]
+    }
+    return depths
+  }
+}
+
+extension NSAnimationEffect {
+  private class _CompletionHandlerDelegate : NSObject {
+    var completionHandler: () -> Void = { }
+    @objc func animationEffectDidEnd(_ contextInfo: UnsafeMutableRawPointer?) {
+      completionHandler()
+    }
+  }
+  @available(swift 4)
+  public func show(centeredAt centerLocation: NSPoint, size: NSSize,
+                   completionHandler: @escaping () -> Void = { }) {
+    let delegate = _CompletionHandlerDelegate()
+    delegate.completionHandler = completionHandler
+    // Note that the delegate of `__NSShowAnimationEffect` is retained for the
+    // duration of the animation.
+    NSShowAnimationEffect(
+        self,
+        centerLocation,
+        size,
+        delegate,
+        #selector(_CompletionHandlerDelegate.animationEffectDidEnd(_:)),
+        nil)
+  }
+}
+
+extension NSSound {
+  @available(swift 4)
+  public static func beep() {
+    NSBeep()
+  }
+}
diff --git a/stdlib/public/SDK/AppKit/NSOpenGL.swift b/stdlib/public/SDK/AppKit/NSOpenGL.swift
new file mode 100644
index 0000000..100a517
--- /dev/null
+++ b/stdlib/public/SDK/AppKit/NSOpenGL.swift
@@ -0,0 +1,38 @@
+//===----------------------------------------------------------------------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+import Foundation
+@_exported import AppKit
+
+extension NSOpenGLGlobalOption {
+  @available(swift 4)
+  public var globalValue: GLint {
+    get {
+      var value: GLint = 0
+      NSOpenGLGetOption(self, &value)
+      return value
+    }
+    set {
+      NSOpenGLSetOption(self, newValue)
+    }
+  }
+}
+
+extension NSOpenGLContext {
+  @available(swift 4)
+  public static var openGLVersion: (major: GLint, minor: GLint) {
+    var major: GLint = 0
+    var minor: GLint = 0
+    NSOpenGLGetVersion(&major, &minor)
+    return (major: major, minor: minor)
+  }
+}
diff --git a/stdlib/public/SDK/AssetsLibrary/CMakeLists.txt b/stdlib/public/SDK/AssetsLibrary/CMakeLists.txt
index ab388d6..f3041ff 100644
--- a/stdlib/public/SDK/AssetsLibrary/CMakeLists.txt
+++ b/stdlib/public/SDK/AssetsLibrary/CMakeLists.txt
@@ -7,7 +7,7 @@
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
   TARGET_SDKS IOS IOS_SIMULATOR
-  SWIFT_MODULE_DEPENDS_IOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
   FRAMEWORK_DEPENDS AssetsLibrary
 
   DEPLOYMENT_VERSION_IOS ${SWIFTLIB_DEPLOYMENT_VERSION_ASSETSLIBRARY_IOS}
diff --git a/stdlib/public/SDK/CMakeLists.txt b/stdlib/public/SDK/CMakeLists.txt
index c9cbe44..3c1d569 100644
--- a/stdlib/public/SDK/CMakeLists.txt
+++ b/stdlib/public/SDK/CMakeLists.txt
@@ -8,7 +8,7 @@
   list(APPEND SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES STATIC)
 endif()
 
-set(all_overlays "AppKit;AssetsLibrary;AVFoundation;CallKit;CloudKit;Contacts;CoreAudio;CoreData;CoreFoundation;CoreGraphics;CoreImage;CoreLocation;CoreMedia;CryptoTokenKit;Dispatch;Foundation;GameplayKit;GLKit;HomeKit;IOKit;Intents;MapKit;ObjectiveC;OpenCL;os;Photos;QuartzCore;SafariServices;SceneKit;simd;SpriteKit;UIKit;WatchKit;XCTest;XPC")
+set(all_overlays "Accelerate;AppKit;ARKit;AssetsLibrary;AVFoundation;CallKit;CloudKit;Contacts;CoreAudio;CoreData;CoreFoundation;CoreGraphics;CoreImage;CoreLocation;CoreMedia;CryptoTokenKit;Dispatch;Foundation;GameplayKit;GLKit;HomeKit;IOKit;Intents;MapKit;ObjectiveC;OpenCL;os;Photos;QuartzCore;SafariServices;SceneKit;simd;SpriteKit;UIKit;WatchKit;XCTest;XPC")
 
 if(DEFINED SWIFT_OVERLAY_TARGETS)
   set(overlays_to_build ${SWIFT_OVERLAY_TARGETS})
diff --git a/stdlib/public/SDK/CloudKit/CMakeLists.txt b/stdlib/public/SDK/CloudKit/CMakeLists.txt
index 8ec5c22..5d2862e 100644
--- a/stdlib/public/SDK/CloudKit/CMakeLists.txt
+++ b/stdlib/public/SDK/CloudKit/CMakeLists.txt
@@ -8,10 +8,14 @@
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
   TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
 
-  SWIFT_MODULE_DEPENDS_OSX Darwin CoreGraphics CoreLocation Dispatch Foundation IOKit ObjectiveC os XPC # auto-updated
-  SWIFT_MODULE_DEPENDS_IOS Darwin CoreGraphics CoreLocation Dispatch Foundation ObjectiveC os # auto-updated
-  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreGraphics CoreLocation Dispatch Foundation ObjectiveC os # auto-updated
-  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreGraphics CoreLocation Dispatch Foundation ObjectiveC os # auto-updated
+  SWIFT_MODULE_DEPENDS_OSX Darwin Contacts CoreFoundation CoreGraphics CoreLocation Dispatch Foundation IOKit ObjectiveC # auto-updated
+    os XPC
+  SWIFT_MODULE_DEPENDS_IOS Darwin Contacts CoreFoundation CoreLocation Dispatch Foundation ObjectiveC # auto-updated
+    os
+  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreFoundation CoreLocation Dispatch Foundation ObjectiveC # auto-updated
+    os
+  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreFoundation CoreLocation Dispatch Foundation ObjectiveC # auto-updated
+    os
   FRAMEWORK_DEPENDS_WEAK CloudKit
 
   DEPLOYMENT_VERSION_OSX ${SWIFTLIB_DEPLOYMENT_VERSION_CLOUDKIT_OSX}
diff --git a/stdlib/public/SDK/Contacts/CMakeLists.txt b/stdlib/public/SDK/Contacts/CMakeLists.txt
index 8f5bd4f..2424c5e 100644
--- a/stdlib/public/SDK/Contacts/CMakeLists.txt
+++ b/stdlib/public/SDK/Contacts/CMakeLists.txt
@@ -7,9 +7,9 @@
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
   TARGET_SDKS OSX IOS IOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
-  SWIFT_MODULE_DEPENDS_OSX Darwin CoreGraphics Dispatch Foundation IOKit ObjectiveC # auto-updated
-  SWIFT_MODULE_DEPENDS_IOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
-  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_OSX Darwin CoreFoundation CoreGraphics Dispatch Foundation IOKit ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
   FRAMEWORK_DEPENDS_WEAK Contacts
 
   DEPLOYMENT_VERSION_OSX ${SWIFTLIB_DEPLOYMENT_VERSION_CONTACTS_OSX}
diff --git a/stdlib/public/SDK/CoreData/CMakeLists.txt b/stdlib/public/SDK/CoreData/CMakeLists.txt
index 05c7645..14faf99 100644
--- a/stdlib/public/SDK/CoreData/CMakeLists.txt
+++ b/stdlib/public/SDK/CoreData/CMakeLists.txt
@@ -8,10 +8,10 @@
 
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
-  SWIFT_MODULE_DEPENDS_OSX Darwin CoreGraphics Dispatch Foundation IOKit ObjectiveC # auto-updated
-  SWIFT_MODULE_DEPENDS_IOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
-  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
-  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_OSX Darwin CoreFoundation CoreGraphics Dispatch Foundation IOKit ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
   FRAMEWORK_DEPENDS CoreData
 
   DEPLOYMENT_VERSION_OSX ${SWIFTLIB_DEPLOYMENT_VERSION_COREDATA_OSX}
diff --git a/stdlib/public/SDK/CoreFoundation/CMakeLists.txt b/stdlib/public/SDK/CoreFoundation/CMakeLists.txt
index 4989eb4..a0137dd 100644
--- a/stdlib/public/SDK/CoreFoundation/CMakeLists.txt
+++ b/stdlib/public/SDK/CoreFoundation/CMakeLists.txt
@@ -3,8 +3,8 @@
 
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
-  SWIFT_MODULE_DEPENDS_OSX Darwin Dispatch ObjectiveC
-  SWIFT_MODULE_DEPENDS_IOS Darwin Dispatch ObjectiveC
-  SWIFT_MODULE_DEPENDS_TVOS Darwin Dispatch ObjectiveC
-  SWIFT_MODULE_DEPENDS_WATCHOS Darwin Dispatch ObjectiveC
+  SWIFT_MODULE_DEPENDS_OSX Darwin Dispatch ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin Dispatch ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_TVOS Darwin Dispatch ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_WATCHOS Darwin Dispatch ObjectiveC # auto-updated
   FRAMEWORK_DEPENDS CoreFoundation)
diff --git a/stdlib/public/SDK/CoreGraphics/CoreGraphics.swift b/stdlib/public/SDK/CoreGraphics/CoreGraphics.swift
index 47f8627..abafde2 100644
--- a/stdlib/public/SDK/CoreGraphics/CoreGraphics.swift
+++ b/stdlib/public/SDK/CoreGraphics/CoreGraphics.swift
@@ -375,6 +375,12 @@
            from: fromEdge)
     return (slice, remainder)
   }
+
+  @available(*, unavailable, renamed: "minX")
+  public var x: CGFloat { return minX }
+
+  @available(*, unavailable, renamed: "minY")
+  public var y: CGFloat { return minY }
 }
 
 extension CGRect : CustomReflectable, CustomPlaygroundQuickLookable {
diff --git a/stdlib/public/SDK/CoreImage/CMakeLists.txt b/stdlib/public/SDK/CoreImage/CMakeLists.txt
index 9e1c822..0d6deee 100644
--- a/stdlib/public/SDK/CoreImage/CMakeLists.txt
+++ b/stdlib/public/SDK/CoreImage/CMakeLists.txt
@@ -7,9 +7,9 @@
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
   TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR
-  SWIFT_MODULE_DEPENDS_OSX Darwin CoreGraphics Dispatch Foundation IOKit ObjectiveC XPC # auto-updated
-  SWIFT_MODULE_DEPENDS_IOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
-  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_OSX Darwin CoreFoundation CoreGraphics Dispatch Foundation IOKit ObjectiveC XPC # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
   FRAMEWORK_DEPENDS_OSX QuartzCore
   FRAMEWORK_DEPENDS_IOS_TVOS CoreImage
 
diff --git a/stdlib/public/SDK/CoreLocation/CMakeLists.txt b/stdlib/public/SDK/CoreLocation/CMakeLists.txt
index 123cb8b..9de1446 100644
--- a/stdlib/public/SDK/CoreLocation/CMakeLists.txt
+++ b/stdlib/public/SDK/CoreLocation/CMakeLists.txt
@@ -7,10 +7,10 @@
 
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
-  SWIFT_MODULE_DEPENDS_OSX Darwin CoreGraphics Dispatch Foundation IOKit ObjectiveC # auto-updated
-  SWIFT_MODULE_DEPENDS_IOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
-  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
-  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_OSX Darwin CoreFoundation CoreGraphics Dispatch Foundation IOKit ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
   FRAMEWORK_DEPENDS CoreLocation
 
   DEPLOYMENT_VERSION_OSX ${SWIFTLIB_DEPLOYMENT_VERSION_CORELOCATION_OSX}
diff --git a/stdlib/public/SDK/CryptoTokenKit/CMakeLists.txt b/stdlib/public/SDK/CryptoTokenKit/CMakeLists.txt
index fb43caa..b6c3301 100644
--- a/stdlib/public/SDK/CryptoTokenKit/CMakeLists.txt
+++ b/stdlib/public/SDK/CryptoTokenKit/CMakeLists.txt
@@ -7,7 +7,7 @@
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
   TARGET_SDKS OSX
-  SWIFT_MODULE_DEPENDS_OSX Darwin CoreGraphics Dispatch Foundation IOKit ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_OSX Darwin CoreFoundation CoreGraphics Dispatch Foundation IOKit ObjectiveC # auto-updated
   FRAMEWORK_DEPENDS CryptoTokenKit
 
   DEPLOYMENT_VERSION_OSX ${SWIFTLIB_DEPLOYMENT_VERSION_CRYPTOTOKENKIT_OSX}
diff --git a/stdlib/public/SDK/Dispatch/Source.swift b/stdlib/public/SDK/Dispatch/Source.swift
index c7fc8a1..e82a14c 100644
--- a/stdlib/public/SDK/Dispatch/Source.swift
+++ b/stdlib/public/SDK/Dispatch/Source.swift
@@ -193,6 +193,10 @@
 		return __dispatch_source_create(_swift_dispatch_source_type_DATA_OR(), 0, 0, queue) as DispatchSourceUserDataOr
 	}
 
+	public class func makeUserDataReplaceSource(queue: DispatchQueue? = nil) -> DispatchSourceUserDataReplace {
+		return __dispatch_source_create(_swift_dispatch_source_type_DATA_REPLACE(), 0, 0, queue) as DispatchSourceUserDataReplace
+	}
+
 	public class func makeFileSystemObjectSource(
 		fileDescriptor: Int32, eventMask: FileSystemEvent, queue: DispatchQueue? = nil) -> DispatchSourceFileSystemObject 
 	{
@@ -299,16 +303,14 @@
 }
 
 public extension DispatchSourceUserDataAdd {
-	/// @function mergeData
+	/// @function add
 	///
 	/// @abstract
-	/// Merges data into a dispatch source of type DISPATCH_SOURCE_TYPE_DATA_ADD or
-	/// DISPATCH_SOURCE_TYPE_DATA_OR and submits its event handler block to its
-	/// target queue.
+	/// Merges data into a dispatch source of type DISPATCH_SOURCE_TYPE_DATA_ADD
+	/// and submits its event handler block to its target queue.
 	///
-	/// @param value
-	/// The value to coalesce with the pending data using a logical OR or an ADD
-	/// as specified by the dispatch source type. A value of zero has no effect
+	/// @param data
+	/// The value to add to the current pending data. A value of zero has no effect
 	/// and will not result in the submission of the event handler block.
 	public func add(data: UInt) {
 		__dispatch_source_merge_data(self as! DispatchSource, data)
@@ -316,18 +318,31 @@
 }
 
 public extension DispatchSourceUserDataOr {
-	/// @function mergeData
+	/// @function or
 	///
 	/// @abstract
-	/// Merges data into a dispatch source of type DISPATCH_SOURCE_TYPE_DATA_ADD or
-	/// DISPATCH_SOURCE_TYPE_DATA_OR and submits its event handler block to its
-	/// target queue.
+	/// Merges data into a dispatch source of type DISPATCH_SOURCE_TYPE_DATA_OR and
+	/// submits its event handler block to its target queue.
 	///
-	/// @param value
-	/// The value to coalesce with the pending data using a logical OR or an ADD
-	/// as specified by the dispatch source type. A value of zero has no effect
+	/// @param data
+	/// The value to OR into the current pending data. A value of zero has no effect
 	/// and will not result in the submission of the event handler block.
 	public func or(data: UInt) {
 		__dispatch_source_merge_data(self as! DispatchSource, data)
 	}
 }
+
+public extension DispatchSourceUserDataReplace {
+	/// @function replace
+	///
+	/// @abstract
+	/// Merges data into a dispatch source of type DISPATCH_SOURCE_TYPE_DATA_REPLACE
+	/// and submits its event handler block to its target queue.
+	///
+	/// @param data
+	/// The value that will replace the current pending data. A value of zero will be stored
+	/// but will not result in the submission of the event handler block.
+	public func replace(data: UInt) {
+		__dispatch_source_merge_data(self as! DispatchSource, data)
+	}
+}
diff --git a/stdlib/public/SDK/Foundation/CMakeLists.txt b/stdlib/public/SDK/Foundation/CMakeLists.txt
index bcbe43d..f5dd29b 100644
--- a/stdlib/public/SDK/Foundation/CMakeLists.txt
+++ b/stdlib/public/SDK/Foundation/CMakeLists.txt
@@ -32,9 +32,11 @@
   NSGeometry.swift
   NSIndexSet.swift
   NSNumber.swift
+  NSObject.swift
   NSPredicate.swift
   NSRange.swift
   NSSet.swift
+  NSSortDescriptor.swift
   NSString.swift
   NSStringAPI.swift
   NSStringEncodings.swift
@@ -44,6 +46,7 @@
   NSValue.swift.gyb
   PersonNameComponents.swift
   PlistEncoder.swift
+  Progress.swift
   ReferenceConvertible.swift
   String.swift
   TimeZone.swift
@@ -51,6 +54,7 @@
   URLComponents.swift
   URLRequest.swift
   UUID.swift
+  CheckClass.mm
 
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}" "-Xllvm" "-sil-inline-generics" "-Xllvm" "-sil-partial-specialization"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
diff --git a/stdlib/public/SDK/Foundation/CheckClass.mm b/stdlib/public/SDK/Foundation/CheckClass.mm
new file mode 100644
index 0000000..5171dad
--- /dev/null
+++ b/stdlib/public/SDK/Foundation/CheckClass.mm
@@ -0,0 +1,60 @@
+#import <Foundation/Foundation.h>
+
+#include <objc/runtime.h>
+
+#include "swift/Runtime/Metadata.h"
+
+@interface NSKeyedUnarchiver (SwiftAdditions)
++ (int)_swift_checkClassAndWarnForKeyedArchiving:(Class)cls
+                                       operation:(int)operation
+     NS_SWIFT_NAME(_swift_checkClassAndWarnForKeyedArchiving(_:operation:));
+@end
+
+@implementation NSKeyedUnarchiver (SwiftAdditions)
+
+/// Checks if class \p cls is good for archiving.
+///
+/// If not, a runtime warning is printed.
+///
+/// \param operation Specifies the archiving operation. Valid operations are:
+/// 0:       archiving
+/// 1:       unarchiving
+/// \return Returns the status
+/// 0:       not a problem class (either non-Swift or has an explicit name)
+/// 1:       a Swift generic class
+/// 2:       a Swift non-generic class where adding @objc is valid
+/// Future versions of this API will return nonzero values for additional cases
+/// that mean the class shouldn't be archived.
++ (int)_swift_checkClassAndWarnForKeyedArchiving:(Class)cls
+                                       operation:(int)operation {
+  const swift::ClassMetadata *theClass = (swift::ClassMetadata *)cls;
+
+  // Is it a (real) swift class?
+  if (!theClass->isTypeMetadata() || theClass->isArtificialSubclass())
+    return 0;
+
+  // Does the class already have a custom name?
+  if (theClass->getFlags() & swift::ClassFlags::HasCustomObjCName)
+    return 0;
+
+  // Is it a mangled name?
+  const char *className = class_getName(cls);
+  if (!(className[0] == '_' && className[1] == 'T'))
+    return 0;
+  // Is it a name in the form <module>.<class>? Note: the module name could
+  // start with "_T".
+  if (strchr(className, '.'))
+    return 0;
+
+  // Is it a generic class?
+  if (theClass->getDescription()->GenericParams.isGeneric()) {
+    // TODO: print a warning
+    return 1;
+  }
+
+  // It's a swift class with a (compiler generated) mangled name, which should
+  // be written into an NSArchive.
+  // TODO: print a warning
+  return 2;
+}
+@end
diff --git a/stdlib/public/SDK/Foundation/Foundation.swift b/stdlib/public/SDK/Foundation/Foundation.swift
index 13edba1..67605af 100644
--- a/stdlib/public/SDK/Foundation/Foundation.swift
+++ b/stdlib/public/SDK/Foundation/Foundation.swift
@@ -95,20 +95,3 @@
     return _encodeBitsAsWords(object)
   }
 }
-
-//===----------------------------------------------------------------------===//
-// Runtime support for NSKeyedArchives
-//===----------------------------------------------------------------------===//
-
-@_silgen_name("swift_registerClassNameForArchiving")
-public func _registerClassNameForArchiving(_ nameForClass: UnsafePointer<CChar>,
-                                           _ classType: AnyClass) {
-  // If it's not possible to create a String from the name, it should abort
-  // and not fail silently.
-  let nameStr = String(utf8String: nameForClass)!
-
-  // Register the class name mapping for archiving and unarchiving.
-  NSKeyedArchiver.setClassName(nameStr, for: classType)
-  NSKeyedUnarchiver.setClass(classType, forClassName: nameStr)
-}
-
diff --git a/stdlib/public/SDK/Foundation/IndexPath.swift b/stdlib/public/SDK/Foundation/IndexPath.swift
index 2d72cd2..a13e314 100644
--- a/stdlib/public/SDK/Foundation/IndexPath.swift
+++ b/stdlib/public/SDK/Foundation/IndexPath.swift
@@ -257,7 +257,8 @@
                     }
                 case .single(let index):
                     switch (range.lowerBound, range.upperBound) {
-                    case (0, 0):
+                    case (0, 0): fallthrough
+                    case (1, 1):
                         return .empty
                     case (0, 1):
                         return .single(index)
diff --git a/stdlib/public/SDK/Foundation/JSONEncoder.swift b/stdlib/public/SDK/Foundation/JSONEncoder.swift
index adf06e0..786c2d0 100644
--- a/stdlib/public/SDK/Foundation/JSONEncoder.swift
+++ b/stdlib/public/SDK/Foundation/JSONEncoder.swift
@@ -19,12 +19,21 @@
     // MARK: Options
 
     /// The formatting of the output JSON data.
-    public enum OutputFormatting {
-        /// Produce JSON compacted by removing whitespace. This is the default formatting.
-        case compact
+    public struct OutputFormatting : OptionSet {
+        /// The format's default value.
+        public let rawValue: UInt
+
+        /// Creates an OutputFormatting value with the given raw value.
+        public init(rawValue: UInt) {
+            self.rawValue = rawValue
+        }
 
         /// Produce human-readable JSON with indented output.
-        case prettyPrinted
+        public static let prettyPrinted = OutputFormatting(rawValue: 1 << 0)
+
+        /// Produce JSON with dictionary keys sorted in lexicographic order.
+        @available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *)
+        public static let sortedKeys    = OutputFormatting(rawValue: 1 << 1)
     }
 
     /// The strategy to use for encoding `Date` values.
@@ -71,8 +80,8 @@
         case convertToString(positiveInfinity: String, negativeInfinity: String, nan: String)
     }
 
-    /// The output format to produce. Defaults to `.compact`.
-    open var outputFormatting: OutputFormatting = .compact
+    /// The output format to produce. Defaults to `[]`.
+    open var outputFormatting: OutputFormatting = []
 
     /// The strategy to use in encoding dates. Defaults to `.deferredToDate`.
     open var dateEncodingStrategy: DateEncodingStrategy = .deferredToDate
@@ -132,7 +141,8 @@
             throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: [], debugDescription: "Top-level \(T.self) encoded as string JSON fragment."))
         }
 
-        return try JSONSerialization.data(withJSONObject: topLevel, options: outputFormatting == .prettyPrinted ? .prettyPrinted : [])
+        var writingOptions = JSONSerialization.WritingOptions(rawValue: self.outputFormatting.rawValue)
+        return try JSONSerialization.data(withJSONObject: topLevel, options: writingOptions)
     }
 }
 
@@ -952,18 +962,6 @@
     }
 
     func singleValueContainer() throws -> SingleValueDecodingContainer {
-        guard !(self.storage.topContainer is [String : Any]) else {
-            throw DecodingError.typeMismatch(SingleValueDecodingContainer.self,
-                                             DecodingError.Context(codingPath: self.codingPath,
-                                                                   debugDescription: "Cannot get single value decoding container -- found keyed container instead."))
-        }
-
-        guard !(self.storage.topContainer is [Any]) else {
-            throw DecodingError.typeMismatch(SingleValueDecodingContainer.self,
-                                             DecodingError.Context(codingPath: self.codingPath,
-                                                                   debugDescription: "Cannot get single value decoding container -- found unkeyed container instead."))
-        }
-
         return self
     }
 }
diff --git a/stdlib/public/SDK/Foundation/NSError.swift b/stdlib/public/SDK/Foundation/NSError.swift
index 30a91bc..939b9d2 100644
--- a/stdlib/public/SDK/Foundation/NSError.swift
+++ b/stdlib/public/SDK/Foundation/NSError.swift
@@ -640,6 +640,16 @@
   }
 }
 
+public extension CocoaError {
+    public static func error(_ code: CocoaError.Code, userInfo: [AnyHashable : Any]? = nil, url: URL? = nil) -> Error {
+        var info: [AnyHashable : Any] = userInfo ?? [:]
+        if let url = url {
+            info[NSURLErrorKey] = url
+        }
+        return NSError(domain: NSCocoaErrorDomain, code: code.rawValue, userInfo: info)
+    }
+}
+
 extension CocoaError.Code {
   public static var fileNoSuchFile: CocoaError.Code {
     return CocoaError.Code(rawValue: 4)
diff --git a/stdlib/public/SDK/Foundation/NSExpression.swift b/stdlib/public/SDK/Foundation/NSExpression.swift
index 8a0fcfd..9e96186f 100644
--- a/stdlib/public/SDK/Foundation/NSExpression.swift
+++ b/stdlib/public/SDK/Foundation/NSExpression.swift
@@ -20,3 +20,9 @@
     self.init(format: expressionFormat, arguments: va_args)
   }
 }
+
+extension NSExpression {
+    public convenience init<Root, Value>(forKeyPath keyPath: KeyPath<Root, Value>) {
+        self.init(forKeyPath: _bridgeKeyPathToString(keyPath))
+    }
+}
diff --git a/stdlib/public/SDK/Foundation/NSNumber.swift b/stdlib/public/SDK/Foundation/NSNumber.swift
index b436850..9202604 100644
--- a/stdlib/public/SDK/Foundation/NSNumber.swift
+++ b/stdlib/public/SDK/Foundation/NSNumber.swift
@@ -14,7 +14,7 @@
 import CoreGraphics
 
 extension Int8 : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.int8Value
     }
@@ -55,7 +55,7 @@
 }
 
 extension UInt8 : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.uint8Value
     }
@@ -96,7 +96,7 @@
 }
 
 extension Int16 : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.int16Value
     }
@@ -137,7 +137,7 @@
 }
 
 extension UInt16 : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.uint16Value
     }
@@ -178,7 +178,7 @@
 }
 
 extension Int32 : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.int32Value
     }
@@ -219,7 +219,7 @@
 }
 
 extension UInt32 : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.uint32Value
     }
@@ -260,7 +260,7 @@
 }
 
 extension Int64 : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.int64Value
     }
@@ -301,7 +301,7 @@
 }
 
 extension UInt64 : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.uint64Value
     }
@@ -342,7 +342,7 @@
 }
 
 extension Int : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.intValue
     }
@@ -383,7 +383,7 @@
 }
 
 extension UInt : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.uintValue
     }
@@ -424,7 +424,7 @@
 }
 
 extension Float : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.floatValue
     }
@@ -451,8 +451,24 @@
     }
     
     public static func _conditionallyBridgeFromObjectiveC(_ x: NSNumber, result: inout Float?) -> Bool {
-        guard let value = Float(exactly: x) else { return false }
-        result = value
+        guard let value = Double(exactly: x) else { return false }
+        guard !value.isNaN else {
+            result = Float.nan
+            return true
+        }
+        guard !value.isInfinite else {
+            if value.sign == .minus {
+                result = -Float.infinity
+            } else {
+                result = Float.infinity
+            }
+            return true
+        }
+        guard Swift.abs(value) <= Double(Float.greatestFiniteMagnitude) else {
+            return false
+        }
+        
+        result = Float(value)
         return true
     }
     
@@ -465,7 +481,7 @@
 }
 
 extension Double : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.doubleValue
     }
@@ -513,7 +529,7 @@
 }
 
 extension Bool : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         self = number.boolValue
     }
@@ -564,7 +580,7 @@
 }
 
 extension CGFloat : _ObjectiveCBridgeable {
-    @available(swift, deprecated: 4)
+    @available(swift, deprecated: 4, renamed: "init(truncating:)")
     public init(_ number: NSNumber) {
         native = CGFloat.NativeType(truncating: number)
     }
diff --git a/stdlib/public/SDK/Foundation/NSObject.swift b/stdlib/public/SDK/Foundation/NSObject.swift
new file mode 100644
index 0000000..bef703f
--- /dev/null
+++ b/stdlib/public/SDK/Foundation/NSObject.swift
@@ -0,0 +1,227 @@
+//===----------------------------------------------------------------------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2017 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+@_exported import Foundation // Clang module
+import ObjectiveC
+
+public protocol _KeyValueCodingAndObserving {}
+
+public struct NSKeyValueObservedChange<Value> {
+    public typealias Kind = NSKeyValueChange
+    public let kind: Kind
+    ///newValue and oldValue will only be non-nil if .new/.old is passed to `observe()`. In general, get the most up to date value by accessing it directly on the observed object instead.
+    public let newValue: Value?
+    public let oldValue: Value?
+    ///indexes will be nil unless the observed KeyPath refers to an ordered to-many property
+    public let indexes: IndexSet?
+    ///'isPrior' will be true if this change observation is being sent before the change happens, due to .prior being passed to `observe()`
+    public let isPrior:Bool
+}
+
+///Conforming to NSKeyValueObservingCustomization is not required to use Key-Value Observing. Provide an implementation of these functions if you need to disable auto-notifying for a key, or add dependent keys
+public protocol NSKeyValueObservingCustomization : NSObjectProtocol {
+    static func keyPathsAffectingValue(for key: AnyKeyPath) -> Set<AnyKeyPath>
+    static func automaticallyNotifiesObservers(for key: AnyKeyPath) -> Bool
+}
+
+fileprivate extension NSObject {
+    
+    @objc class func _old_unswizzled_automaticallyNotifiesObservers(forKey key: String?) -> Bool {
+        fatalError("Should never be reached")
+    }
+    
+    @objc class func _old_unswizzled_keyPathsForValuesAffectingValue(forKey key: String?) -> Set<String> {
+        fatalError("Should never be reached")
+    }
+
+}
+
+@objc private class _KVOKeyPathBridgeMachinery : NSObject {
+    @nonobjc static var keyPathTable: [String : AnyKeyPath] = {
+        /*
+         Move all our methods into place. We want the following:
+         _KVOKeyPathBridgeMachinery's automaticallyNotifiesObserversForKey:, and keyPathsForValuesAffectingValueForKey: methods replaces NSObject's versions of them
+         NSObject's automaticallyNotifiesObserversForKey:, and keyPathsForValuesAffectingValueForKey: methods replace NSObject's _old_unswizzled_* methods
+         NSObject's _old_unswizzled_* methods replace _KVOKeyPathBridgeMachinery's methods, and are never invoked
+         */
+        let rootClass: AnyClass = NSObject.self
+        let bridgeClass: AnyClass = _KVOKeyPathBridgeMachinery.self
+        
+        let dependentSel = #selector(NSObject.keyPathsForValuesAffectingValue(forKey:))
+        let rootDependentImpl = class_getClassMethod(rootClass, dependentSel)!
+        let bridgeDependentImpl = class_getClassMethod(bridgeClass, dependentSel)!
+        method_exchangeImplementations(rootDependentImpl, bridgeDependentImpl) // NSObject <-> Us
+        
+        let originalDependentImpl = class_getClassMethod(bridgeClass, dependentSel)! //we swizzled it onto this class, so this is actually NSObject's old implementation
+        let originalDependentSel = #selector(NSObject._old_unswizzled_keyPathsForValuesAffectingValue(forKey:))
+        let dummyDependentImpl = class_getClassMethod(rootClass, originalDependentSel)!
+        method_exchangeImplementations(originalDependentImpl, dummyDependentImpl) // NSObject's original version <-> NSObject's _old_unswizzled_ version
+        
+        let autoSel = #selector(NSObject.automaticallyNotifiesObservers(forKey:))
+        let rootAutoImpl = class_getClassMethod(rootClass, autoSel)!
+        let bridgeAutoImpl = class_getClassMethod(bridgeClass, autoSel)!
+        method_exchangeImplementations(rootAutoImpl, bridgeAutoImpl) // NSObject <-> Us
+        
+        let originalAutoImpl = class_getClassMethod(bridgeClass, autoSel)! //we swizzled it onto this class, so this is actually NSObject's old implementation
+        let originalAutoSel = #selector(NSObject._old_unswizzled_automaticallyNotifiesObservers(forKey:))
+        let dummyAutoImpl = class_getClassMethod(rootClass, originalAutoSel)!
+        method_exchangeImplementations(originalAutoImpl, dummyAutoImpl) // NSObject's original version <-> NSObject's _old_unswizzled_ version
+        
+        return [:]
+    }()
+    
+    @nonobjc static var keyPathTableLock = NSLock()
+    
+    @nonobjc fileprivate static func _bridgeKeyPath(_ keyPath:AnyKeyPath) -> String {
+        guard let keyPathString = keyPath._kvcKeyPathString else { fatalError("Could not extract a String from KeyPath \(keyPath)") }
+        _KVOKeyPathBridgeMachinery.keyPathTableLock.lock()
+        defer { _KVOKeyPathBridgeMachinery.keyPathTableLock.unlock() }
+        _KVOKeyPathBridgeMachinery.keyPathTable[keyPathString] = keyPath
+        return keyPathString
+    }
+    
+    @nonobjc fileprivate static func _bridgeKeyPath(_ keyPath:String?) -> AnyKeyPath? {
+        guard let keyPath = keyPath else { return nil }
+        _KVOKeyPathBridgeMachinery.keyPathTableLock.lock()
+        defer { _KVOKeyPathBridgeMachinery.keyPathTableLock.unlock() }
+        let path = _KVOKeyPathBridgeMachinery.keyPathTable[keyPath]
+        return path
+    }
+    
+    @objc override class func automaticallyNotifiesObservers(forKey key: String) -> Bool {
+        //This is swizzled so that it's -[NSObject automaticallyNotifiesObserversForKey:]
+        if let customizingSelf = self as? NSKeyValueObservingCustomization.Type, let path = _KVOKeyPathBridgeMachinery._bridgeKeyPath(key) {
+            return customizingSelf.automaticallyNotifiesObservers(for: path)
+        } else {
+            return self._old_unswizzled_automaticallyNotifiesObservers(forKey: key) //swizzled to be NSObject's original implementation
+        }
+    }
+    
+    @objc override class func keyPathsForValuesAffectingValue(forKey key: String?) -> Set<String> {
+        //This is swizzled so that it's -[NSObject keyPathsForValuesAffectingValueForKey:]
+        if let customizingSelf = self as? NSKeyValueObservingCustomization.Type, let path = _KVOKeyPathBridgeMachinery._bridgeKeyPath(key!) {
+            let resultSet = customizingSelf.keyPathsAffectingValue(for: path)
+            return Set(resultSet.lazy.map {
+                guard let str = $0._kvcKeyPathString else { fatalError("Could not extract a String from KeyPath \($0)") }
+                return str
+            })
+        } else {
+            return self._old_unswizzled_keyPathsForValuesAffectingValue(forKey: key) //swizzled to be NSObject's original implementation
+        }
+    }
+}
+
+func _bridgeKeyPathToString(_ keyPath:AnyKeyPath) -> String {
+    return _KVOKeyPathBridgeMachinery._bridgeKeyPath(keyPath)
+}
+
+func _bridgeStringToKeyPath(_ keyPath:String) -> AnyKeyPath? {
+    return _KVOKeyPathBridgeMachinery._bridgeKeyPath(keyPath)
+}
+
+public class NSKeyValueObservation : NSObject {
+    
+    weak var object : NSObject?
+    let callback : (NSObject, NSKeyValueObservedChange<Any>) -> Void
+    let path : String
+    
+    //workaround for <rdar://problem/31640524> Erroneous (?) error when using bridging in the Foundation overlay
+    static var swizzler : NSKeyValueObservation? = {
+        let bridgeClass: AnyClass = NSKeyValueObservation.self
+        let observeSel = #selector(NSObject.observeValue(forKeyPath:of:change:context:))
+        let swapSel = #selector(NSKeyValueObservation._swizzle_me_observeValue(forKeyPath:of:change:context:))
+        let rootObserveImpl = class_getInstanceMethod(bridgeClass, observeSel)
+        let swapObserveImpl = class_getInstanceMethod(bridgeClass, swapSel)
+        method_exchangeImplementations(rootObserveImpl, swapObserveImpl)
+        return nil
+    }()
+    
+    fileprivate init(object: NSObject, keyPath: AnyKeyPath, callback: @escaping (NSObject, NSKeyValueObservedChange<Any>) -> Void) {
+        path = _bridgeKeyPathToString(keyPath)
+        let _ = NSKeyValueObservation.swizzler
+        self.object = object
+        self.callback = callback
+    }
+    
+    fileprivate func start(_ options: NSKeyValueObservingOptions) {
+        object?.addObserver(self, forKeyPath: path, options: options, context: nil)
+    }
+    
+    ///invalidate() will be called automatically when an NSKeyValueObservation is deinited
+    public func invalidate() {
+        object?.removeObserver(self, forKeyPath: path, context: nil)
+        object = nil
+    }
+    
+    @objc func _swizzle_me_observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSString : Any]?, context: UnsafeMutableRawPointer?) {
+        guard let ourObject = self.object, object as? NSObject == ourObject, let change = change else { return }
+        let rawKind:UInt = change[NSKeyValueChangeKey.kindKey.rawValue as NSString] as! UInt
+        let kind = NSKeyValueChange(rawValue: rawKind)!
+        let notification = NSKeyValueObservedChange(kind: kind,
+                                                    newValue: change[NSKeyValueChangeKey.newKey.rawValue as NSString],
+                                                    oldValue: change[NSKeyValueChangeKey.oldKey.rawValue as NSString],
+                                                    indexes: change[NSKeyValueChangeKey.indexesKey.rawValue as NSString] as! IndexSet?,
+                                                    isPrior: change[NSKeyValueChangeKey.notificationIsPriorKey.rawValue as NSString] as? Bool ?? false)
+        callback(ourObject, notification)
+    }
+    
+    deinit {
+        object?.removeObserver(self, forKeyPath: path, context: nil)
+    }
+}
+
+public extension _KeyValueCodingAndObserving {
+    
+    ///when the returned NSKeyValueObservation is deinited or invalidated, it will stop observing
+    public func observe<Value>(
+            _ keyPath: KeyPath<Self, Value>,
+            options: NSKeyValueObservingOptions = [],
+            changeHandler: @escaping (Self, NSKeyValueObservedChange<Value>) -> Void)
+        -> NSKeyValueObservation {
+        let result = NSKeyValueObservation(object: self as! NSObject, keyPath: keyPath) { (obj, change) in
+            let notification = NSKeyValueObservedChange(kind: change.kind,
+                                                        newValue: change.newValue as? Value,
+                                                        oldValue: change.oldValue as? Value,
+                                                        indexes: change.indexes,
+                                                        isPrior: change.isPrior)
+            changeHandler(obj as! Self, notification)
+        }
+        result.start(options)
+        return result
+    }
+    
+    public func willChangeValue<Value>(for keyPath: KeyPath<Self, Value>) {
+        (self as! NSObject).willChangeValue(forKey: _bridgeKeyPathToString(keyPath))
+    }
+    
+    public func willChange<Value>(_ changeKind: NSKeyValueChange, valuesAt indexes: IndexSet, for keyPath: KeyPath<Self, Value>) {
+        (self as! NSObject).willChange(changeKind, valuesAt: indexes, forKey: _bridgeKeyPathToString(keyPath))
+    }
+    
+    public func willChangeValue<Value>(for keyPath: KeyPath<Self, Value>, withSetMutation mutation: NSKeyValueSetMutationKind, using set: Set<Value>) -> Void {
+        (self as! NSObject).willChangeValue(forKey: _bridgeKeyPathToString(keyPath), withSetMutation: mutation, using: set)
+    }
+    
+    public func didChangeValue<Value>(for keyPath: KeyPath<Self, Value>) {
+        (self as! NSObject).didChangeValue(forKey: _bridgeKeyPathToString(keyPath))
+    }
+    
+    public func didChange<Value>(_ changeKind: NSKeyValueChange, valuesAt indexes: IndexSet, for keyPath: KeyPath<Self, Value>) {
+        (self as! NSObject).didChange(changeKind, valuesAt: indexes, forKey: _bridgeKeyPathToString(keyPath))
+    }
+    
+    public func didChangeValue<Value>(for keyPath: KeyPath<Self, Value>, withSetMutation mutation: NSKeyValueSetMutationKind, using set: Set<Value>) -> Void {
+        (self as! NSObject).didChangeValue(forKey: _bridgeKeyPathToString(keyPath), withSetMutation: mutation, using: set)
+    }
+}
+
+extension NSObject : _KeyValueCodingAndObserving {}
diff --git a/stdlib/public/SDK/Foundation/NSRange.swift b/stdlib/public/SDK/Foundation/NSRange.swift
index e049a03..1342d5c 100644
--- a/stdlib/public/SDK/Foundation/NSRange.swift
+++ b/stdlib/public/SDK/Foundation/NSRange.swift
@@ -22,17 +22,23 @@
     }
 
     public static func==(_ lhs: NSRange, _ rhs: NSRange) -> Bool {
-        return lhs.location == rhs.location && rhs.length == rhs.length
+        return lhs.location == rhs.location && lhs.length == rhs.length
     }
 }
 
 extension NSRange : CustomStringConvertible, CustomDebugStringConvertible {
     public var description: String { return "{\(location), \(length)}" }
-    public var debugDescription: String { return "{\(location), \(length)}" }
+    public var debugDescription: String {
+        guard location != NSNotFound else {
+            return "{NSNotFound, \(length)}"     
+        }
+        return "{\(location), \(length)}" 
+    }
 }
 
 extension NSRange {
     public init?(_ string: String) {
+        var savedLocation = 0
         if string.isEmpty {
             // fail early if the string is empty
             return nil
@@ -45,6 +51,7 @@
             return nil
         }
         var location = 0
+        savedLocation = scanner.scanLocation
         guard scanner.scanInt(&location) else {
             return nil
         }
@@ -52,16 +59,44 @@
             // return early if there are no more characters after the first int in the string
             return nil
         }
+        if scanner.scanString(".", into: nil) {
+            scanner.scanLocation = savedLocation
+            var double = 0.0
+            guard scanner.scanDouble(&double) else {
+                return nil
+            }
+            guard let integral = Int(exactly: double) else {
+                return nil
+            }
+            location = integral
+        }
+        
         let _ = scanner.scanUpToCharacters(from: digitSet, into: nil)
         if scanner.isAtEnd {
             // return early if there are no integer characters after the first int in the string
             return nil
         }
         var length = 0
+        savedLocation = scanner.scanLocation
         guard scanner.scanInt(&length) else {
             return nil
         }
         
+        if !scanner.isAtEnd {
+            if scanner.scanString(".", into: nil) {
+                scanner.scanLocation = savedLocation
+                var double = 0.0
+                guard scanner.scanDouble(&double) else {
+                    return nil
+                }
+                guard let integral = Int(exactly: double) else {
+                    return nil
+                }
+                length = integral
+            }
+        }
+        
+        
         self.location = location
         self.length = length
     }
@@ -105,22 +140,20 @@
 //===----------------------------------------------------------------------===//
 
 extension NSRange {
-  public init<R: RangeExpression>(_ rangeExpression: R)
+  public init<R: RangeExpression>(_ region: R)
   where R.Bound: FixedWidthInteger, R.Bound.Stride : SignedInteger {
-    let range = rangeExpression.relative(to: 0..<R.Bound.max)
-    let start: Int = numericCast(range.lowerBound)
-    let end: Int = numericCast(range.upperBound)
-    self = NSRange(location: start, length: end - start)
+    let r = region.relative(to: 0..<R.Bound.max)
+    location = numericCast(r.lowerBound)
+    length = numericCast(r.count)
   }
   
-  public init<R: RangeExpression, S: StringProtocol>(_ rangeExpression: R, in string: S)
-  where R.Bound == String.Index, S.Index == String.Index {
-    let range = rangeExpression.relative(to: string)
-    let start = range.lowerBound.samePosition(in: string.utf16)
-    let end = range.upperBound.samePosition(in: string.utf16)
-    let location = string.utf16.distance(from: string.utf16.startIndex, to: start)
-    let length = string.utf16.distance(from: start, to: end)
-    self = NSRange(location: location, length: length)
+  public init<R: RangeExpression, S: StringProtocol>(_ region: R, in target: S)
+  where R.Bound == S.Index, S.Index == String.Index {
+    let r = region.relative(to: target)
+    self = NSRange(
+      location: r.lowerBound._utf16Index - target.startIndex._utf16Index,
+      length: r.upperBound._utf16Index - r.lowerBound._utf16Index
+    )
   }
 
   @available(swift, deprecated: 4, renamed: "Range.init(_:)")
diff --git a/stdlib/public/SDK/Foundation/NSSortDescriptor.swift b/stdlib/public/SDK/Foundation/NSSortDescriptor.swift
new file mode 100644
index 0000000..347feff
--- /dev/null
+++ b/stdlib/public/SDK/Foundation/NSSortDescriptor.swift
@@ -0,0 +1,28 @@
+//===----------------------------------------------------------------------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2017 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+@_exported import Foundation // Clang module
+
+extension NSSortDescriptor {
+    public convenience init<Root, Value>(keyPath: KeyPath<Root, Value>, ascending: Bool) {
+        self.init(key: _bridgeKeyPathToString(keyPath), ascending: ascending)
+    }
+    
+    public convenience init<Root, Value>(keyPath: KeyPath<Root, Value>, ascending: Bool, comparator cmptr: @escaping Foundation.Comparator) {
+        self.init(key: _bridgeKeyPathToString(keyPath), ascending: ascending, comparator: cmptr)
+    }
+    
+    public var keyPath: AnyKeyPath? {
+        guard let key = self.key else { return nil }
+        return _bridgeStringToKeyPath(key)
+    }
+}
diff --git a/stdlib/public/SDK/Foundation/PlistEncoder.swift b/stdlib/public/SDK/Foundation/PlistEncoder.swift
index 0b2d27d..d7203fc 100644
--- a/stdlib/public/SDK/Foundation/PlistEncoder.swift
+++ b/stdlib/public/SDK/Foundation/PlistEncoder.swift
@@ -733,18 +733,6 @@
     }
 
     func singleValueContainer() throws -> SingleValueDecodingContainer {
-        guard !(self.storage.topContainer is [String : Any]) else {
-            throw DecodingError.typeMismatch(SingleValueDecodingContainer.self,
-                                             DecodingError.Context(codingPath: self.codingPath,
-                                                     debugDescription: "Cannot get single value decoding container -- found keyed container instead."))
-        }
-
-        guard !(self.storage.topContainer is [Any]) else {
-            throw DecodingError.typeMismatch(SingleValueDecodingContainer.self,
-                                             DecodingError.Context(codingPath: self.codingPath,
-                                                     debugDescription: "Cannot get single value decoding container -- found unkeyed container instead."))
-        }
-
         return self
     }
 }
diff --git a/stdlib/public/SDK/Foundation/Progress.swift b/stdlib/public/SDK/Foundation/Progress.swift
new file mode 100644
index 0000000..cbeca03
--- /dev/null
+++ b/stdlib/public/SDK/Foundation/Progress.swift
@@ -0,0 +1,85 @@
+//===----------------------------------------------------------------------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+@_exported import Foundation // Clang module
+
+public extension Progress {
+    @available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *)
+    public var estimatedTimeRemaining: TimeInterval? {
+        get {
+            guard let v = self.__estimatedTimeRemaining else { return nil }
+            return v.doubleValue as TimeInterval
+        }
+        set {
+            guard let nv = newValue else {
+                self.__estimatedTimeRemaining = nil
+                return
+            }
+            let v = NSNumber(value: nv)
+            self.__estimatedTimeRemaining = v
+        }
+    }
+    
+    @available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *)
+    public var throughput: Int? {
+        get {
+            guard let v = self.__throughput else { return nil }
+            return v.intValue
+        }
+        set {
+            guard let nv = newValue else {
+                self.__throughput = nil
+                return
+            }
+            let v = NSNumber(value: nv)
+            self.__throughput = v
+        }
+    }
+    
+    @available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *)
+    public var fileTotalCount: Int? {
+        get {
+            guard let v = self.__fileTotalCount else { return nil }
+            return v.intValue
+        }
+        set {
+            guard let nv = newValue else {
+                self.__fileTotalCount = nil
+                return
+            }
+            let v = NSNumber(value: nv)
+            self.__fileTotalCount = v
+        }
+    }
+    
+    @available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *)
+    public var fileCompletedCount: Int? {
+        get {
+            guard let v = self.__fileCompletedCount else { return nil }
+            return v.intValue
+        }
+        set {
+            guard let nv = newValue else {
+                self.__fileCompletedCount = nil
+                return
+            }
+            let v = NSNumber(value: nv)
+            self.__fileCompletedCount = v
+        }
+    }
+    
+    public func performAsCurrent<ReturnType>(withPendingUnitCount unitCount: Int64, using work: () throws -> ReturnType) rethrows -> ReturnType {
+        becomeCurrent(withPendingUnitCount: unitCount)
+        defer { resignCurrent() }
+        return try work()
+    }
+}
diff --git a/stdlib/public/SDK/Foundation/URL.swift b/stdlib/public/SDK/Foundation/URL.swift
index 67fe2d8..3799dba 100644
--- a/stdlib/public/SDK/Foundation/URL.swift
+++ b/stdlib/public/SDK/Foundation/URL.swift
@@ -300,6 +300,19 @@
     /// Total free space in bytes.
     public var volumeAvailableCapacity : Int? { return _get(.volumeAvailableCapacityKey) }
     
+#if os(OSX) || os(iOS)
+    /// Total available capacity in bytes for "Important" resources, including space expected to be cleared by purging non-essential and cached resources. "Important" means something that the user or application clearly expects to be present on the local system, but is ultimately replaceable. This would include items that the user has explicitly requested via the UI, and resources that an application requires in order to provide functionality.
+    /// Examples: A video that the user has explicitly requested to watch but has not yet finished watching or an audio file that the user has requested to download.
+    /// This value should not be used in determining if there is room for an irreplaceable resource. In the case of irreplaceable resources, always attempt to save the resource regardless of available capacity and handle failure as gracefully as possible.
+    @available(OSX 10.13, iOS 11.0, *) @available(tvOS, unavailable) @available(watchOS, unavailable)
+    public var volumeAvailableCapacityForImportantUsage: Int64? { return _get(.volumeAvailableCapacityForImportantUsageKey) }
+    
+    /// Total available capacity in bytes for "Opportunistic" resources, including space expected to be cleared by purging non-essential and cached resources. "Opportunistic" means something that the user is likely to want but does not expect to be present on the local system, but is ultimately non-essential and replaceable. This would include items that will be created or downloaded without an explicit request from the user on the current device.
+    /// Examples: A background download of a newly available episode of a TV series that a user has been recently watching, a piece of content explicitly requested on another device, and a new document saved to a network server by the current user from another device.
+    @available(OSX 10.13, iOS 11.0, *) @available(tvOS, unavailable) @available(watchOS, unavailable)
+    public var volumeAvailableCapacityForOpportunisticUsage: Int64? { return _get(.volumeAvailableCapacityForOpportunisticUsageKey) }
+#endif
+    
     /// Total number of resources on the volume.
     public var volumeResourceCount : Int? { return _get(.volumeResourceCountKey) }
     
@@ -431,6 +444,28 @@
     @available(OSX 10.10, iOS 8.0, *)
     public var ubiquitousItemContainerDisplayName : String? { return _get(.ubiquitousItemContainerDisplayNameKey) }
     
+#if os(OSX) || os(iOS)
+    // true if ubiquitous item is shared.
+    @available(OSX 10.13, iOS 11.0, *) @available(tvOS, unavailable) @available(watchOS, unavailable)
+    public var ubiquitousItemIsShared: Bool? { return _get(.ubiquitousItemIsSharedKey) }
+    
+    // The current user's role for this shared item, or nil if not shared
+    @available(OSX 10.13, iOS 11.0, *) @available(tvOS, unavailable) @available(watchOS, unavailable)
+    public var ubiquitousSharedItemCurrentUserRole: URLUbiquitousSharedItemRole? { return _get(.ubiquitousSharedItemCurrentUserRoleKey) }
+    
+    // The permissions for the current user, or nil if not shared.
+    @available(OSX 10.13, iOS 11.0, *) @available(tvOS, unavailable) @available(watchOS, unavailable)
+    public var ubiquitousSharedItemCurrentUserPermissions: URLUbiquitousSharedItemPermissions? { return _get(.ubiquitousSharedItemCurrentUserPermissionsKey) }
+    
+    // The name components for the owner, or nil if not shared.
+    @available(OSX 10.13, iOS 11.0, *) @available(tvOS, unavailable) @available(watchOS, unavailable)
+    public var ubiquitousSharedItemOwnerNameComponents: PersonNameComponents? { return _get(.ubiquitousSharedItemOwnerNameComponentsKey) }
+    
+    // The name components for the most recent editor, or nil if not shared.
+    @available(OSX 10.13, iOS 11.0, *) @available(tvOS, unavailable) @available(watchOS, unavailable)
+    public var ubiquitousSharedItemMostRecentEditorNameComponents: PersonNameComponents? { return _get(.ubiquitousSharedItemMostRecentEditorNameComponentsKey) }
+#endif
+    
 #if !os(OSX)
     /// The protection level for this file
     @available(iOS 9.0, *)
diff --git a/stdlib/public/SDK/HomeKit/CMakeLists.txt b/stdlib/public/SDK/HomeKit/CMakeLists.txt
index 997f991..551d1a5 100644
--- a/stdlib/public/SDK/HomeKit/CMakeLists.txt
+++ b/stdlib/public/SDK/HomeKit/CMakeLists.txt
@@ -7,9 +7,9 @@
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
   TARGET_SDKS IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
-  SWIFT_MODULE_DEPENDS_IOS Darwin CoreGraphics CoreImage Dispatch Foundation ObjectiveC os QuartzCore UIKit # auto-updated
-  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreGraphics CoreImage Dispatch Foundation ObjectiveC QuartzCore UIKit # auto-updated
-  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin CoreFoundation CoreGraphics CoreImage Dispatch Foundation ObjectiveC QuartzCore UIKit os # auto-updated
+  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreFoundation CoreGraphics CoreImage Dispatch Foundation ObjectiveC QuartzCore UIKit # auto-updated
+  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
     UIKit # required in some configurations but not found by tool
   FRAMEWORK_DEPENDS_WEAK HomeKit
 
diff --git a/stdlib/public/SDK/Intents/CMakeLists.txt b/stdlib/public/SDK/Intents/CMakeLists.txt
index 863198c..edd4833 100644
--- a/stdlib/public/SDK/Intents/CMakeLists.txt
+++ b/stdlib/public/SDK/Intents/CMakeLists.txt
@@ -3,12 +3,14 @@
 
 add_swift_library(swiftIntents ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
   INBooleanResolutionResult.swift
+  INCallRecord.swift
   INDoubleResolutionResult.swift
   INGetCarLockStatusIntentResponse.swift
   INGetCarPowerLevelStatusIntentResponse.swift
   INIntegerResolutionResult.swift
   INRequestRideIntent.swift
   INSaveProfileInCarIntent.swift
+  INSearchCallHistoryIntent.swift
   INSearchForPhotosIntentResponse.swift
   INSetCarLockStatusIntent.swift
   INSetClimateSettingsInCarIntent.swift
@@ -22,9 +24,9 @@
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
   TARGET_SDKS OSX IOS IOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
-  SWIFT_MODULE_DEPENDS_OSX Darwin CoreGraphics CoreLocation Dispatch Foundation IOKit ObjectiveC # auto-updated
-  SWIFT_MODULE_DEPENDS_IOS Darwin CoreGraphics CoreLocation Dispatch Foundation ObjectiveC # auto-updated
-  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreGraphics CoreLocation Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_OSX Darwin Contacts CoreFoundation CoreGraphics CoreLocation Dispatch Foundation IOKit ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin Contacts CoreFoundation CoreGraphics CoreLocation Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_WATCHOS Darwin Contacts CoreFoundation CoreGraphics CoreLocation Dispatch Foundation ObjectiveC # auto-updated
   FRAMEWORK_DEPENDS_WEAK Intents
 
   DEPLOYMENT_VERSION_OSX ${SWIFTLIB_DEPLOYMENT_VERSION_INTENTS_OSX}
diff --git a/stdlib/public/SDK/Intents/INCallRecord.swift b/stdlib/public/SDK/Intents/INCallRecord.swift
new file mode 100644
index 0000000..f26d7ee
--- /dev/null
+++ b/stdlib/public/SDK/Intents/INCallRecord.swift
@@ -0,0 +1,48 @@
+//===----------------------------------------------------------------------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+@_exported import Intents
+import Foundation
+
+#if os(iOS) || os(watchOS)
+@available(iOS 11.0, watchOS 4.0, *)
+extension INCallRecord {
+  @nonobjc
+  public convenience init(
+      identifier: String,
+      dateCreated: Date? = nil,
+      caller: INPerson? = nil,
+      callRecordType: INCallRecordType,
+      callCapability: INCallCapability,
+      callDuration: Double?  = nil,
+      unseen: Bool? = nil
+  ) {
+    self.init(__identifier: identifier,
+      dateCreated: dateCreated,
+      caller: caller,
+      callRecordType: callRecordType,
+      callCapability: callCapability,
+      callDuration: callDuration.map { NSNumber(value: $0) },
+      unseen: unseen.map { NSNumber(value: $0) })
+  }
+
+  @nonobjc
+  public final var callDuration: Double? {
+    return __callDuration?.doubleValue
+  }
+
+  @nonobjc
+  public final var unseen: Bool? {
+    return __unseen?.boolValue
+  }
+}
+#endif
diff --git a/stdlib/public/SDK/Intents/INSearchCallHistoryIntent.swift b/stdlib/public/SDK/Intents/INSearchCallHistoryIntent.swift
new file mode 100644
index 0000000..1e65ae3
--- /dev/null
+++ b/stdlib/public/SDK/Intents/INSearchCallHistoryIntent.swift
@@ -0,0 +1,40 @@
+//===----------------------------------------------------------------------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+@_exported import Intents
+import Foundation
+
+#if os(iOS) || os(watchOS)
+@available(iOS 11.0, watchOS 4.0, *)
+extension INSearchCallHistoryIntent {
+    @nonobjc
+    public convenience init(
+        dateCreated: INDateComponentsRange? = nil,
+        recipient: INPerson? = nil,
+        callCapabilities: INCallCapabilityOptions,
+        callTypes: INCallRecordTypeOptions,
+        unseen: Bool? = nil
+        ) {
+
+        self.init(__dateCreated: dateCreated,
+                  recipient: recipient,
+                  callCapabilities: callCapabilities,
+                  callTypes: callTypes,
+                  unseen: unseen.map { NSNumber(value: $0) })
+    }
+    
+    @nonobjc
+    public final var unseen: Bool? {
+        return __unseen?.boolValue
+    }
+}
+#endif
diff --git a/stdlib/public/SDK/Photos/CMakeLists.txt b/stdlib/public/SDK/Photos/CMakeLists.txt
index d7c6fcd..773a121 100644
--- a/stdlib/public/SDK/Photos/CMakeLists.txt
+++ b/stdlib/public/SDK/Photos/CMakeLists.txt
@@ -7,8 +7,8 @@
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
   TARGET_SDKS IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR
-  SWIFT_MODULE_DEPENDS_IOS Darwin AVFoundation CoreAudio CoreData CoreGraphics CoreImage CoreLocation CoreMedia Dispatch Foundation ObjectiveC os QuartzCore simd UIKit # auto-updated
-  SWIFT_MODULE_DEPENDS_TVOS Darwin AVFoundation CoreAudio CoreData CoreGraphics CoreImage CoreLocation CoreMedia Dispatch Foundation ObjectiveC QuartzCore simd UIKit # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin AVFoundation CoreAudio CoreFoundation CoreGraphics CoreData CoreImage CoreLocation CoreMedia Dispatch Foundation ObjectiveC QuartzCore simd UIKit os # auto-updated
+  SWIFT_MODULE_DEPENDS_TVOS Darwin AVFoundation CoreAudio CoreFoundation CoreGraphics CoreData CoreImage CoreLocation CoreMedia Dispatch Foundation ObjectiveC QuartzCore simd UIKit # auto-updated
   FRAMEWORK_DEPENDS Photos
 
   DEPLOYMENT_VERSION_IOS ${SWIFTLIB_DEPLOYMENT_VERSION_PHOTOS_IOS}
diff --git a/stdlib/public/SDK/QuartzCore/CMakeLists.txt b/stdlib/public/SDK/QuartzCore/CMakeLists.txt
index 4485328..0e08583 100644
--- a/stdlib/public/SDK/QuartzCore/CMakeLists.txt
+++ b/stdlib/public/SDK/QuartzCore/CMakeLists.txt
@@ -7,9 +7,9 @@
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
   TARGET_SDKS OSX IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR
-  SWIFT_MODULE_DEPENDS_OSX Darwin CoreGraphics CoreImage Dispatch Foundation IOKit ObjectiveC XPC # auto-updated
-  SWIFT_MODULE_DEPENDS_IOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
-  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_OSX Darwin CoreFoundation CoreGraphics CoreImage Dispatch Foundation IOKit ObjectiveC XPC # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
   FRAMEWORK_DEPENDS QuartzCore
 
   DEPLOYMENT_VERSION_OSX ${SWIFTLIB_DEPLOYMENT_VERSION_QUARTZCORE_OSX}
diff --git a/stdlib/public/SDK/UIKit/CMakeLists.txt b/stdlib/public/SDK/UIKit/CMakeLists.txt
index 05ddec8..0022cb83 100644
--- a/stdlib/public/SDK/UIKit/CMakeLists.txt
+++ b/stdlib/public/SDK/UIKit/CMakeLists.txt
@@ -9,9 +9,9 @@
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
   TARGET_SDKS IOS IOS_SIMULATOR TVOS TVOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
-  SWIFT_MODULE_DEPENDS_IOS Darwin CoreGraphics CoreImage Dispatch Foundation ObjectiveC os QuartzCore # auto-updated
-  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreGraphics CoreImage Dispatch Foundation ObjectiveC QuartzCore # auto-updated
-  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin CoreFoundation CoreGraphics CoreImage Dispatch Foundation ObjectiveC QuartzCore os # auto-updated
+  SWIFT_MODULE_DEPENDS_TVOS Darwin CoreFoundation CoreGraphics CoreImage Dispatch Foundation ObjectiveC QuartzCore # auto-updated
+  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreFoundation CoreGraphics Dispatch Foundation ObjectiveC # auto-updated
   SWIFT_COMPILE_FLAGS_WATCHOS -Xfrontend -disable-autolink-framework -Xfrontend CoreText
   FRAMEWORK_DEPENDS UIKit
 
diff --git a/stdlib/public/SDK/UIKit/UIKit.swift b/stdlib/public/SDK/UIKit/UIKit.swift
index 111da67..29b2991 100644
--- a/stdlib/public/SDK/UIKit/UIKit.swift
+++ b/stdlib/public/SDK/UIKit/UIKit.swift
@@ -233,3 +233,59 @@
 }
 
 public typealias _ImageLiteralType = UIImage
+
+extension UIFontTextStyle {
+    @available(iOS 11.0, watchOS 4.0, tvOS 11.0, *)
+    public var metrics: UIFontMetrics {
+        return UIFontMetrics(forTextStyle: self)
+    }
+}
+
+#if !os(watchOS) // UIContentSizeCategory not available on watchOS
+extension UIContentSizeCategory {
+    @available(iOS 11.0, tvOS 11.0,  *)
+    public var isAccessibilityCategory: Bool {
+        return __UIContentSizeCategoryIsAccessibilityCategory(self)
+    }
+    
+    @available(iOS 11.0, tvOS 11.0, *)
+    public static func < (left: UIContentSizeCategory, right: UIContentSizeCategory) -> Bool {
+        return __UIContentSizeCategoryCompareToCategory(left, right) == .orderedAscending
+    }
+    
+    @available(iOS 11.0, tvOS 11.0, *)
+    public static func <= (left: UIContentSizeCategory, right: UIContentSizeCategory) -> Bool {
+        return __UIContentSizeCategoryCompareToCategory(left, right) != .orderedDescending
+    }
+    
+    @available(iOS 11.0, tvOS 11.0, *)
+    public static func > (left: UIContentSizeCategory, right: UIContentSizeCategory) -> Bool {
+        return __UIContentSizeCategoryCompareToCategory(left, right) == .orderedDescending
+    }
+    
+    @available(iOS 11.0, tvOS 11.0, *)
+    public static func >= (left: UIContentSizeCategory, right: UIContentSizeCategory) -> Bool {
+        return __UIContentSizeCategoryCompareToCategory(left, right) != .orderedAscending
+    }
+}
+#endif
+
+//===----------------------------------------------------------------------===//
+// Focus
+//===----------------------------------------------------------------------===//
+
+#if os(iOS) || os(tvOS)
+@available(iOS 11.0, tvOS 11.0, *)
+extension UIFocusEnvironment {
+  public func contains(_ environment: UIFocusEnvironment) -> Bool {
+    return UIFocusSystem.environment(self, contains: environment)
+  }
+}
+
+@available(iOS 11.0, tvOS 11.0, *)
+extension UIFocusItem {
+  public var isFocused: Bool {
+    return self === UIScreen.main.focusedItem
+  }
+}
+#endif
diff --git a/stdlib/public/SDK/WatchKit/CMakeLists.txt b/stdlib/public/SDK/WatchKit/CMakeLists.txt
index 05b12ae..25ff0a4 100644
--- a/stdlib/public/SDK/WatchKit/CMakeLists.txt
+++ b/stdlib/public/SDK/WatchKit/CMakeLists.txt
@@ -7,8 +7,9 @@
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
   TARGET_SDKS IOS IOS_SIMULATOR WATCHOS WATCHOS_SIMULATOR
-  SWIFT_MODULE_DEPENDS_IOS Darwin CoreGraphics CoreImage CoreLocation Dispatch Foundation MapKit ObjectiveC os QuartzCore UIKit # auto-updated
-  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreGraphics CoreLocation Dispatch Foundation ObjectiveC SceneKit simd UIKit # auto-updated
+  SWIFT_MODULE_DEPENDS_IOS Darwin CoreFoundation CoreGraphics CoreImage CoreLocation Dispatch Foundation MapKit ObjectiveC QuartzCore UIKit # auto-updated
+    os
+  SWIFT_MODULE_DEPENDS_WATCHOS Darwin CoreFoundation CoreGraphics CoreLocation Dispatch Foundation HomeKit MapKit ObjectiveC SceneKit simd UIKit # auto-updated
   FRAMEWORK_DEPENDS_WEAK WatchKit
   SWIFT_COMPILE_FLAGS_WATCHOS -Xfrontend -disable-autolink-framework -Xfrontend CoreText
 
diff --git a/stdlib/public/SDK/XCTest/XCTest.swift b/stdlib/public/SDK/XCTest/XCTest.swift
index 98804eb..ae3427b 100644
--- a/stdlib/public/SDK/XCTest/XCTest.swift
+++ b/stdlib/public/SDK/XCTest/XCTest.swift
@@ -15,6 +15,31 @@
 import CoreGraphics
 import _SwiftXCTestOverlayShims
 
+// --- XCTest API Swiftification ---
+
+public extension XCTContext {
+
+  /// Create and run a new activity with provided name and block.
+  public class func runActivity(named name: String, block: (XCTActivity) throws -> ()) rethrows {
+    let context = _XCTContextCurrent()
+
+    if _XCTContextShouldStartActivity(context, XCTActivityTypeUserCreated) {
+      try autoreleasepool {
+        let activity = _XCTContextWillStartActivity(context, name, XCTActivityTypeUserCreated)
+        do {
+          try block(activity)
+          _XCTContextDidFinishActivity(context, activity)
+        } catch {
+          _XCTContextDidFinishActivity(context, activity)
+          throw error
+        }
+      }
+    } else {
+      XCTFail("XCTContext.runActivity(named:block:) failed because activities are disallowed in the current configuration.")
+    }
+  }
+}
+
 // --- Failure Formatting ---
 
 /// Register the failure, expected or unexpected, of the current test case.
@@ -717,7 +742,7 @@
     && (abs(value1 - value2) <= accuracy)
 }
 
-public func XCTAssertEqualWithAccuracy<T : FloatingPoint>(_ expression1: @autoclosure () throws -> T, _ expression2: @autoclosure () throws -> T, accuracy: T, _ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) {
+public func XCTAssertEqual<T : FloatingPoint>(_ expression1: @autoclosure () throws -> T, _ expression2: @autoclosure () throws -> T, accuracy: T, _ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) {
   let assertionType = _XCTAssertionType.equalWithAccuracy
   
   // evaluate each expression exactly once
@@ -748,7 +773,7 @@
       
     default:
       // unknown type, fail with prejudice
-      _preconditionFailure("unsupported floating-point type passed to XCTAssertEqualWithAccuracy")
+      _preconditionFailure("unsupported floating-point type passed to XCTAssertEqual")
     }
     
     if !equalWithAccuracy {
@@ -763,7 +788,7 @@
     }
     
   case .failedWithError(let error):
-    _XCTRegisterFailure(false, "XCTAssertEqualWithAccuracy failed: threw error \"\(error)\"", message, file, line)
+    _XCTRegisterFailure(false, "XCTAssertEqual failed: threw error \"\(error)\"", message, file, line)
     
   case .failedWithException(_, _, let reason):
     _XCTRegisterFailure(false, _XCTFailureDescription(assertionType, 1, reason as NSString), message, file, line)
@@ -773,6 +798,11 @@
   }
 }
 
+@available(*, deprecated, renamed: "XCTAssertEqual(_:_:accuracy:file:line:)")
+public func XCTAssertEqualWithAccuracy<T : FloatingPoint>(_ expression1: @autoclosure () throws -> T, _ expression2: @autoclosure () throws -> T, accuracy: T, _ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) {
+  XCTAssertEqual(expression1, expression2, accuracy: accuracy, message, file: file, line: line)
+}
+
 func _XCTCheckNotEqualWithAccuracy_Double(_ value1: Double, _ value2: Double, _ accuracy: Double) -> Bool {
   return (value1.isNaN || value2.isNaN)
     || (abs(value1 - value2) > accuracy)
@@ -788,7 +818,7 @@
     || (abs(value1 - value2) > accuracy)
 }
 
-public func XCTAssertNotEqualWithAccuracy<T : FloatingPoint>(_ expression1: @autoclosure () throws -> T, _ expression2: @autoclosure () throws -> T, _ accuracy: T, _ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) {
+public func XCTAssertNotEqual<T : FloatingPoint>(_ expression1: @autoclosure () throws -> T, _ expression2: @autoclosure () throws -> T, accuracy: T, _ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) {
   let assertionType = _XCTAssertionType.notEqualWithAccuracy
   
   // evaluate each expression exactly once
@@ -819,7 +849,7 @@
       
     default:
       // unknown type, fail with prejudice
-      _preconditionFailure("unsupported floating-point type passed to XCTAssertNotEqualWithAccuracy")
+      _preconditionFailure("unsupported floating-point type passed to XCTAssertNotEqual")
     }
     
     if !notEqualWithAccuracy {
@@ -834,7 +864,7 @@
     }
     
   case .failedWithError(let error):
-    _XCTRegisterFailure(false, "XCTAssertNotEqualWithAccuracy failed: threw error \"\(error)\"", message, file, line)
+    _XCTRegisterFailure(false, "XCTAssertNotEqual failed: threw error \"\(error)\"", message, file, line)
     
   case .failedWithException(_, _, let reason):
     _XCTRegisterFailure(false, _XCTFailureDescription(assertionType, 1, reason as NSString), message, file, line)
@@ -844,6 +874,11 @@
   }
 }
 
+@available(*, deprecated, renamed: "XCTAssertNotEqual(_:_:accuracy:file:line:)")
+public func XCTAssertNotEqualWithAccuracy<T : FloatingPoint>(_ expression1: @autoclosure () throws -> T, _ expression2: @autoclosure () throws -> T, _ accuracy: T, _ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) {
+    XCTAssertNotEqual(expression1, expression2, accuracy: accuracy, message, file: file, line: line)
+}
+
 public func XCTAssertGreaterThan<T : Comparable>(_ expression1: @autoclosure () throws -> T, _ expression2: @autoclosure () throws -> T, _ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) {
   let assertionType = _XCTAssertionType.greaterThan
   
diff --git a/stdlib/public/SDK/simd/CMakeLists.txt b/stdlib/public/SDK/simd/CMakeLists.txt
index f0555bf..2d2a87f 100644
--- a/stdlib/public/SDK/simd/CMakeLists.txt
+++ b/stdlib/public/SDK/simd/CMakeLists.txt
@@ -3,6 +3,7 @@
 
 add_swift_library(swiftsimd ${SWIFT_SDK_OVERLAY_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
   simd.swift.gyb
+  Quaternion.swift.gyb
 
   SWIFT_COMPILE_FLAGS "${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}"
   LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
diff --git a/stdlib/public/SDK/simd/Quaternion.swift.gyb b/stdlib/public/SDK/simd/Quaternion.swift.gyb
new file mode 100644
index 0000000..24e2de0
--- /dev/null
+++ b/stdlib/public/SDK/simd/Quaternion.swift.gyb
@@ -0,0 +1,277 @@
+//===----------------------------------------------------------*- swift -*-===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+// simd module overlays for Swift
+//===----------------------------------------------------------------------===//
+
+import Swift
+import Darwin
+@_exported import simd
+
+%for scalar in ['Float','Double']:
+% quat = 'simd_quat' + ('f' if scalar == 'Float' else 'd')
+% vec3 = str.lower(scalar) + '3'
+% vec4 = str.lower(scalar) + '4'
+% mat3 = 'simd_' + str.lower(scalar) + '3x3'
+% mat4 = 'simd_' + str.lower(scalar) + '4x4'
+
+extension ${quat} {
+
+  /// Construct a quaternion from components.
+  ///
+  /// - Parameters:
+  ///   - ix: The x-component of the imaginary (vector) part.
+  ///   - iy: The y-component of the imaginary (vector) part.
+  ///   - iz: The z-component of the imaginary (vector) part.
+  ///   - r: The real (scalar) part.
+  @_transparent
+  public init(ix: ${scalar}, iy: ${scalar}, iz: ${scalar}, r: ${scalar}) {
+    vector = ${vec4}(ix, iy, iz, r)
+  }
+
+  /// Construct a quaternion from real and imaginary parts.
+  @_transparent
+  public init(real: ${scalar}, imag: ${vec3}) {
+    vector = simd_make_${vec4}(imag, real)
+  }
+
+  /// Construct a quaternion from a vector; the imaginary parts are the first
+  /// three components of the vector, and the real part is the last component.
+  @_transparent
+  public init(vector: ${vec4}) {
+    self.vector = vector
+  }
+
+  /// A quaternion whose action is a rotation by `angle` radians about `axis`.
+  ///
+  /// - Parameters:
+  ///   - angle: The angle to rotate by measured in radians.
+  ///   - axis: The axis to rotate around.
+  @_transparent
+  public init(angle: ${scalar}, axis: ${vec3}) {
+    self = simd_quaternion(angle, axis)
+  }
+
+  /// A quaternion whose action rotates the vector `from` onto the vector `to`.
+  @_transparent
+  public init(from: ${vec3}, to: ${vec3}) {
+    self = simd_quaternion(from, to)
+  }
+
+  /// Construct a quaternion from `rotationMatrix`.
+  @_transparent
+  public init(_ rotationMatrix: ${mat3}) {
+    self = simd_quaternion(rotationMatrix)
+  }
+
+  /// Construct a quaternion from `rotationMatrix`.
+  @_transparent
+  public init(_ rotationMatrix: ${mat4}) {
+    self = simd_quaternion(rotationMatrix)
+  }
+
+  /// The real (scalar) part of `self`.
+  public var real: ${scalar} {
+    @_transparent
+    get { return vector.w }
+    @_transparent
+    set { vector.w = newValue }
+  }
+
+  /// The imaginary (vector) part of `self`.
+  public var imag: ${vec3} {
+    @_transparent
+    get { return simd_make_${vec3}(vector) }
+    @_transparent
+    set { vector = simd_make_${vec4}(newValue, vector.w) }
+  }
+
+  /// The angle (in radians) by which `self`'s action rotates.
+  @_transparent
+  public var angle: ${scalar} {
+    return simd_angle(self)
+  }
+
+  /// The normalized axis about which `self`'s action rotates.
+  @_transparent
+  public var axis: ${vec3} {
+    return simd_axis(self)
+  }
+
+  /// The conjugate of `self`.
+  @_transparent
+  public var conjugate: ${quat} {
+    return simd_conjugate(self)
+  }
+
+  /// The inverse of `self`.
+  @_transparent
+  public var inverse: ${quat} {
+    return simd_inverse(self)
+  }
+
+  /// The unit quaternion obtained by normalizing `self`.
+  @_transparent
+  public var normalized: ${quat} {
+    return simd_normalize(self)
+  }
+
+  /// The length of the quaternion interpreted as a 4d vector.
+  @_transparent
+  public var length: ${scalar} {
+    return simd_length(self)
+  }
+
+  /// Applies the rotation represented by a unit quaternion to the vector and
+  /// returns the result.
+  @_transparent
+  public func act(_ vector: ${vec3}) -> ${vec3} {
+    return simd_act(self, vector)
+  }
+}
+
+extension ${mat3} {
+  /// Construct a 3x3 matrix from `quaternion`.
+  public init(_ quaternion: ${quat}) {
+    self = simd_matrix3x3(quaternion)
+  }
+}
+
+extension ${mat4} {
+  /// Construct a 4x4 matrix from `quaternion`.
+  public init(_ quaternion: ${quat}) {
+    self = simd_matrix4x4(quaternion)
+  }
+}
+
+extension ${quat} : CustomDebugStringConvertible {
+  public var debugDescription: String {
+    return "${quat}(real: \(real), imag: \(imag))"
+  }
+}
+
+extension ${quat} : Equatable {
+  @_transparent
+  public static func ==(lhs: ${quat}, rhs: ${quat}) -> Bool {
+    return lhs.vector == rhs.vector
+  }
+}
+
+extension ${quat} {
+  /// The sum of `lhs` and `rhs`.
+  @_transparent
+  public static func +(lhs: ${quat}, rhs: ${quat}) -> ${quat} {
+    return simd_add(lhs, rhs)
+  }
+
+  /// Add `rhs` to `lhs`.
+  @_transparent
+  public static func +=(lhs: inout ${quat}, rhs: ${quat}) {
+    lhs = lhs + rhs
+  }
+
+  /// The difference of `lhs` and `rhs`.
+  @_transparent
+  public static func -(lhs: ${quat}, rhs: ${quat}) -> ${quat} {
+    return simd_sub(lhs, rhs)
+  }
+
+  /// Subtract `rhs` from `lhs`.
+  @_transparent
+  public static func -=(lhs: inout ${quat}, rhs: ${quat}) {
+    lhs = lhs - rhs
+  }
+
+  /// The negation of `rhs`.
+  @_transparent
+  public static prefix func -(rhs: ${quat}) -> ${quat} {
+    return simd_sub(${quat}(), rhs)
+  }
+
+  /// The product of `lhs` and `rhs`.
+  @_transparent
+  public static func *(lhs: ${quat}, rhs: ${quat}) -> ${quat} {
+    return simd_mul(lhs, rhs)
+  }
+
+  /// The product of `lhs` and `rhs`.
+  @_transparent
+  public static func *(lhs: ${scalar}, rhs: ${quat}) -> ${quat} {
+    return simd_mul(lhs, rhs)
+  }
+
+  /// The product of `lhs` and `rhs`.
+  @_transparent
+  public static func *(lhs: ${quat}, rhs: ${scalar}) -> ${quat} {
+    return simd_mul(lhs, rhs)
+  }
+
+  /// Multiply `lhs` by `rhs`.
+  @_transparent
+  public static func *=(lhs: inout ${quat}, rhs: ${quat}) {
+    lhs = lhs * rhs
+  }
+
+  /// Multiply `lhs` by `rhs`.
+  @_transparent
+  public static func *=(lhs: inout ${quat}, rhs: ${scalar}) {
+    lhs = lhs * rhs
+  }
+
+  /// The quotient of `lhs` and `rhs`.
+  @_transparent
+  public static func /(lhs: ${quat}, rhs: ${quat}) -> ${quat} {
+    return simd_mul(lhs, rhs.inverse)
+  }
+
+  /// The quotient of `lhs` and `rhs`.
+  @_transparent
+  public static func /(lhs: ${quat}, rhs: ${scalar}) -> ${quat} {
+    return ${quat}(vector: lhs.vector/rhs)
+  }
+
+  /// Divide `lhs` by `rhs`.
+  @_transparent
+  public static func /=(lhs: inout ${quat}, rhs: ${quat}) {
+    lhs = lhs / rhs
+  }
+
+  /// Divide `lhs` by `rhs`.
+  @_transparent
+  public static func /=(lhs: inout ${quat}, rhs: ${scalar}) {
+    lhs = lhs / rhs
+  }
+}
+
+/// The dot product of the quaternions `p` and `q` interpreted as
+/// four-dimensional vectors.
+@_transparent
+public func dot(_ lhs: ${quat}, _ rhs: ${quat}) -> ${scalar} {
+  return simd_dot(lhs, rhs)
+}
+
+/// Logarithm of the quaternion `q`.
+///
+/// We can write a quaternion `q` in the form: `r(cos(t) + sin(t)v)` where
+/// `r` is the length of `q`, `t` is an angle, and `v` is a unit 3-vector.
+/// The logarithm of `q` is `log(r) + tv`, just like the logarithm of the
+/// complex number `r*(cos(t) + i sin(t))` is `log(r) + it`.
+public func log(_ q: ${quat}) -> ${quat} {
+  return __tg_log(q)
+}
+
+/// Inverse function of `log`; the exponential map on quaternions.
+@_transparent
+public func exp(_ q: ${quat}) -> ${quat} {
+  return __tg_exp(q)
+}
+
+%end # for scalar
diff --git a/stdlib/public/SDK/simd/simd.swift.gyb b/stdlib/public/SDK/simd/simd.swift.gyb
index f2adee3..9b2e5c1 100644
--- a/stdlib/public/SDK/simd/simd.swift.gyb
+++ b/stdlib/public/SDK/simd/simd.swift.gyb
@@ -23,38 +23,36 @@
 llvm_type = { 'Float':'FPIEEE32', 'Double':'FPIEEE64', 'Int32':'Int32', 'UInt32':'Int32' }
 floating_types = ['Float','Double']
 cardinal = { 2:'two', 3:'three', 4:'four'}
-one_minus_ulp = { 'Float':'0x1.fffffep-1', 'Double':'0x1.fffffffffffffp-1' }
 }%
 
-% for type in scalar_types:
-%   for size in [2, 3, 4]:
-%     vectype = ctype[type] + str(size)
-%     llvm_vectype = "Vec" + str(size) + "x" + llvm_type[type]
-%     vecsize = (8 if type == 'Double' else 4) * (2 if size == 2 else 4)
-%     extractelement = "extractelement_" + llvm_vectype + "_Int32"
-%     insertelement = "insertelement_" + llvm_vectype + "_" + llvm_type[type] + "_Int32"
-%     is_floating = type in floating_types
-%     is_signed = type[0] != 'U'
-%     wrap = "" if is_floating else "&"
+%for scalar in scalar_types:
+% for count in [2, 3, 4]:
+%  vectype = ctype[scalar] + str(count)
+%  llvm_vectype = "Vec" + str(count) + "x" + llvm_type[scalar]
+%  vecsize = (8 if scalar == 'Double' else 4) * (4 if count == 3 else count)
+%  extractelement = "extractelement_" + llvm_vectype + "_Int32"
+%  insertelement = "insertelement_" + llvm_vectype + "_" + llvm_type[scalar] + "_Int32"
+%  is_floating = scalar in floating_types
+%  is_signed = scalar[0] != 'U'
+%  wrap = "" if is_floating else "&"
 
 
-/// A vector of ${cardinal[size]} `${type}`.  This corresponds to the C and
+/// A vector of ${cardinal[count]} `${scalar}`.  This corresponds to the C and
 /// Obj-C type `vector_${vectype}` and the C++ type `simd::${vectype}`.
 @_fixed_layout
 @_alignment(${vecsize})
-public struct ${vectype} :
-    ExpressibleByArrayLiteral, CustomDebugStringConvertible {
+public struct ${vectype} {
 
   public var _vector: Builtin.${llvm_vectype}
 
-% for i in xrange(size):
-  public var ${component[i]} : ${type} {
+% for i in xrange(count):
+  public var ${component[i]} : ${scalar} {
     @_transparent
     get {
       let elt = Builtin.${extractelement}(_vector,
         (${i} as Int32)._value)
 
-      return ${type}(_bits: elt)
+      return ${scalar}(_bits: elt)
     }
     @_transparent
     set {
@@ -76,9 +74,9 @@
 
   /// Initialize a vector with the specified elements.
   @_transparent
-  public init(${', '.join(map(lambda c: '_ ' + c + ': ' + type, component[:size]))}) {
+  public init(${', '.join(['_ ' + c + ': ' + scalar for c in component[:count]])}) {
     var v: Builtin.${llvm_vectype} = Builtin.zeroInitializer()
-% for i in xrange(size):
+% for i in xrange(count):
     v = Builtin.${insertelement}(v,
       ${component[i]}._value,
       (${i} as Int32)._value)
@@ -88,373 +86,425 @@
 
   /// Initialize a vector with the specified elements.
   @_transparent
-  public init(${', '.join(map(lambda c: c + ': ' + type, component[:size]))}) {
-    self.init(${', '.join(c for c in component[:size])})
+  public init(${', '.join([c + ': ' + scalar for c in component[:count]])}) {
+    self.init(${', '.join(component[:count])})
   }
 
   /// Initialize to a vector with all elements equal to `scalar`.
   @_transparent
-  public init(_ scalar: ${type}) {
-    self.init(${', '.join(['scalar']*size)})
+  public init(_ scalar: ${scalar}) {
+    self.init(${', '.join(['scalar']*count)})
   }
 
   /// Initialize to a vector with elements taken from `array`.
   ///
-  /// - Precondition: `array` must have exactly ${cardinal[size]} elements.
-  public init(_ array: [${type}]) {
-  _precondition(array.count == ${size},
-                "${vectype} requires a ${cardinal[size]}-element array")
+  /// - Precondition: `array` must have exactly ${cardinal[count]} elements.
+  public init(_ array: [${scalar}]) {
+  _precondition(array.count == ${count},
+                "${vectype} requires a ${cardinal[count]}-element array")
     self.init(${', '.join(map(lambda i:
               'array[' + str(i) + ']',
-              range(size)))})
+              range(count)))})
   }
 
-  /// Initialize using `arrayLiteral`.
-  ///
-  /// - Precondition: the array literal must exactly ${cardinal[size]} elements.
-  public init(arrayLiteral elements: ${type}...) { self.init(elements) }
-
   /// Access individual elements of the vector via subscript.
-  public subscript(index: Int) -> ${type} {
+  public subscript(index: Int) -> ${scalar} {
     @_transparent
     get {
       _precondition(index >= 0, "vector index out of range")
-      _precondition(index < ${size}, "vector index out of range")
+      _precondition(index < ${count}, "vector index out of range")
       let elt = Builtin.${extractelement}(_vector,
         Int32(index)._value)
-      return ${type}(_bits: elt)
+      return ${scalar}(_bits: elt)
     }
     @_transparent
     set(value) {
       _precondition(index >= 0, "vector index out of range")
-      _precondition(index < ${size}, "vector index out of range")
+      _precondition(index < ${count}, "vector index out of range")
       _vector = Builtin.${insertelement}(_vector,
         value._value,
         Int32(index)._value)
     }
   }
+}
 
+extension ${vectype} : Equatable {
+  /// True iff every element of lhs is equal to the corresponding element of
+  /// rhs.
+  @_transparent
+  public static func ==(_ lhs: ${vectype}, _ rhs: ${vectype}) -> Bool {
+    return simd_equal(lhs, rhs)
+  }
+}
+
+extension ${vectype} : CustomDebugStringConvertible {
   /// Debug string representation
   public var debugDescription: String {
     return "${vectype}(${', '.join(map(lambda c:
-                       '\\(' + c + ')',
-                       component[:size]))})"
+                       '\\(self['+ str(c) + '])',
+                       xrange(count)))})"
   }
 
+% if count <= 4:
   /// Helper for matrix debug representations
   internal var _descriptionAsArray: String {
     get {
       return "[${', '.join(map(lambda c:
-               '\\(' + c + ')',
-               component[:size]))}]"
+                 '\\(self['+ str(c) + '])',
+                 xrange(count)))})]"
     }
   }
-}
-
-/// Vector sum of `lhs` and `rhs`.
-@inline(__always)
-public func ${wrap}+(lhs: ${vectype}, rhs: ${vectype}) -> ${vectype} {
-  return ${vectype}(_bits:
-%if is_floating:
-    Builtin.fadd_${llvm_vectype}(
-%else:
-    Builtin.add_${llvm_vectype}(
-%end
-      lhs._vector, rhs._vector))
-}
-
-/// Vector difference of `lhs` and `rhs`.
-@inline(__always)
-public func ${wrap}-(lhs: ${vectype}, rhs: ${vectype}) -> ${vectype} {
-  return ${vectype}(_bits:
-%if is_floating:
-    Builtin.fsub_${llvm_vectype}(
-%else:
-    Builtin.sub_${llvm_vectype}(
-%end
-      lhs._vector, rhs._vector))
-}
-
-/// Negation of `rhs`.
-@inline(__always)
-public prefix func -(rhs: ${vectype}) -> ${vectype} {
-  return ${vectype}(0) ${wrap}- rhs
-}
-
-/// Elementwise product of `lhs` and `rhs`.  A.k.a. the Hadamard or Schur
-/// product of the two vectors.
-@inline(__always)
-public func ${wrap}*(lhs: ${vectype}, rhs: ${vectype}) -> ${vectype} {
-  return ${vectype}(_bits:
-%if is_floating:
-    Builtin.fmul_${llvm_vectype}(
-%else:
-    Builtin.mul_${llvm_vectype}(
-%end
-      lhs._vector, rhs._vector))
-}
-
-/// Elementwise quotient of `lhs` and `rhs`.  This is the inverse operation
-/// of the elementwise product.
-@inline(__always)
-public func /(lhs: ${vectype}, rhs: ${vectype}) -> ${vectype} {
-  return ${vectype}(_bits:
-%if is_floating:
-    Builtin.fdiv_${llvm_vectype}(
-%elif is_signed:
-    Builtin.sdiv_${llvm_vectype}(
-%else:
-    Builtin.udiv_${llvm_vectype}(
-%end
-      lhs._vector, rhs._vector))
-}
-
-/// Add `rhs` to `lhs`.
-% if is_floating:
-@inline(__always)
-public func +=(lhs: inout ${vectype}, rhs: ${vectype}) -> Void {
-  lhs = lhs + rhs
-}
-
-/// Subtract `rhs` from `lhs`.
-@inline(__always)
-public func -=(lhs: inout ${vectype}, rhs: ${vectype}) -> Void {
-  lhs = lhs - rhs
-}
-
-/// Multiply `lhs` by `rhs` (elementwise).
-@inline(__always)
-public func *=(lhs: inout ${vectype}, rhs: ${vectype}) -> Void {
-  lhs = lhs * rhs
-}
 % end
-
-/// Divide `lhs` by `rhs` (elementwise).
-@inline(__always)
-public func /=(lhs: inout ${vectype}, rhs: ${vectype}) -> Void {
-  lhs = lhs / rhs
 }
 
-/// Scalar-Vector product.
-@inline(__always)
-public func ${wrap}*(lhs: ${type}, rhs: ${vectype}) -> ${vectype} {
-  return ${vectype}(lhs) ${wrap}* rhs
+extension ${vectype} : ExpressibleByArrayLiteral {
+  /// Initialize using `arrayLiteral`.
+  ///
+  /// - Precondition: the array literal must exactly ${cardinal[count]}
+  ///   elements.
+  public init(arrayLiteral elements: ${scalar}...) { self.init(elements) }
 }
 
-/// Scalar-Vector product.
-@inline(__always)
-public func ${wrap}*(lhs: ${vectype}, rhs: ${type}) -> ${vectype} {
-  return lhs ${wrap}* ${vectype}(rhs)
+extension ${vectype} : Collection {
+  @_transparent
+  public var startIndex: Int { return 0 }
+
+  @_transparent
+  public var endIndex: Int { return ${count} }
+
+  @_transparent
+  public func index(after i: Int) -> Int { return i + 1 }
 }
 
-% if is_floating:
-/// Scales `lhs` by `rhs`.
-@inline(__always)
-public func *=(lhs: inout ${vectype}, rhs: ${type}) -> Void {
-  lhs = lhs * rhs
-}
-% end
+extension ${vectype} {
+  % wrap = "" if is_floating else "&"
+  % prefix = "f" if is_floating else ""
+  % divide = ("f" if is_floating else ("s" if is_signed else "u")) + "div"
+  /// Vector (elementwise) sum of `lhs` and `rhs`.
+  @_transparent
+  public static func ${wrap}+(lhs: ${vectype}, rhs: ${vectype}) -> ${vectype} {
+    return ${vectype}(_bits:
+      Builtin.${prefix}add_${llvm_vectype}(lhs._vector, rhs._vector))
+  }
 
-% if is_signed:
+  /// Vector (elementwise) difference of `lhs` and `rhs`.
+  @_transparent
+  public static func ${wrap}-(lhs: ${vectype}, rhs: ${vectype}) -> ${vectype} {
+    return ${vectype}(_bits:
+      Builtin.${prefix}sub_${llvm_vectype}(lhs._vector, rhs._vector))
+  }
+
+  /// Negation of `rhs`.
+  @_transparent
+  public static prefix func -(rhs: ${vectype}) -> ${vectype} {
+    return ${vectype}() ${wrap}- rhs
+  }
+
+  /// Elementwise product of `lhs` and `rhs` (A.k.a. the Hadamard or Schur
+  /// vector product).
+  @_transparent
+  public static func ${wrap}*(lhs: ${vectype}, rhs: ${vectype}) -> ${vectype} {
+    return ${vectype}(_bits:
+      Builtin.${prefix}mul_${llvm_vectype}(lhs._vector, rhs._vector))
+  }
+
+  /// Scalar-Vector product.
+  @_transparent
+  public static func ${wrap}*(lhs: ${scalar}, rhs: ${vectype}) -> ${vectype} {
+    return ${vectype}(lhs) ${wrap}* rhs
+  }
+
+  /// Scalar-Vector product.
+  @_transparent
+  public static func ${wrap}*(lhs: ${vectype}, rhs: ${scalar}) -> ${vectype} {
+    return lhs ${wrap}* ${vectype}(rhs)
+  }
+
+  /// Elementwise quotient of `lhs` and `rhs`.
+  @_transparent
+  public static func /(lhs: ${vectype}, rhs: ${vectype}) -> ${vectype} {
+    return ${vectype}(_bits:
+      Builtin.${divide}_${llvm_vectype}(lhs._vector, rhs._vector))
+  }
+
+  /// Divide vector by scalar.
+  @_transparent
+  public static func /(lhs: ${vectype}, rhs: ${scalar}) -> ${vectype} {
+    return lhs / ${vectype}(rhs)
+  }
+
+  /// Add `rhs` to `lhs`.
+  %  if is_floating:
+  @_transparent
+  public static func +=(lhs: inout ${vectype}, rhs: ${vectype}) -> Void {
+    lhs = lhs + rhs
+  }
+
+  /// Subtract `rhs` from `lhs`.
+  @_transparent
+  public static func -=(lhs: inout ${vectype}, rhs: ${vectype}) -> Void {
+    lhs = lhs - rhs
+  }
+
+  /// Multiply `lhs` by `rhs` (elementwise).
+  @_transparent
+  public static func *=(lhs: inout ${vectype}, rhs: ${vectype}) -> Void {
+    lhs = lhs * rhs
+  }
+  %  end
+
+  /// Divide `lhs` by `rhs` (elementwise).
+  @_transparent
+  public static func /=(lhs: inout ${vectype}, rhs: ${vectype}) -> Void {
+    lhs = lhs / rhs
+  }
+
+%  if is_floating:
+  /// Scales `lhs` by `rhs`.
+  @_transparent
+  public static func *=(lhs: inout ${vectype}, rhs: ${scalar}) -> Void {
+    lhs = lhs * rhs
+  }
+
+  /// Scales `lhs` by `1/rhs`.
+  @_transparent
+  public static func /=(lhs: inout ${vectype}, rhs: ${scalar}) -> Void {
+    lhs = lhs / rhs
+  }
+%  else:
+  // Integer vector types only support wrapping arithmetic. Make the non-
+  // wrapping operators unavailable so that fixits guide users to the
+  // unchecked operations.
+
+  @available(*, unavailable, renamed: "&+",
+             message: "integer vector types do not support checked arithmetic; use the wrapping operations instead")
+  public static func +(x: ${vectype}, y: ${vectype}) -> ${vectype} {
+    fatalError("unavailable function cannot be called")
+  }
+
+  @available(*, unavailable, renamed: "&-",
+             message: "integer vector types do not support checked arithmetic; use the wrapping operations instead")
+  public static func -(x: ${vectype}, y: ${vectype}) -> ${vectype} {
+    fatalError("unavailable function cannot be called")
+  }
+
+  @available(*, unavailable, renamed: "&*",
+             message: "integer vector types do not support checked arithmetic; use the wrapping operations instead")
+  public static func *(x: ${vectype}, y: ${vectype}) -> ${vectype} {
+    fatalError("unavailable function cannot be called")
+  }
+
+  @available(*, unavailable, renamed: "&*",
+             message: "integer vector types do not support checked arithmetic; use the wrapping operations instead")
+  public static func *(x: ${vectype}, y: ${scalar}) -> ${vectype} {
+    fatalError("unavailable function cannot be called")
+  }
+
+  @available(*, unavailable, renamed: "&*",
+             message: "integer vector types do not support checked arithmetic; use the wrapping operations instead")
+  public static func *(x: ${scalar}, y: ${vectype}) -> ${vectype} {
+    fatalError("unavailable function cannot be called")
+  }
+
+  @available(*, unavailable,
+             message: "integer vector types do not support checked arithmetic; use the wrapping operation 'x = x &+ y' instead")
+  public static func +=(x: inout ${vectype}, y: ${vectype}) {
+    fatalError("unavailable function cannot be called")
+  }
+
+  @available(*, unavailable,
+             message: "integer vector types do not support checked arithmetic; use the wrapping operation 'x = x &- y' instead")
+  public static func -=(x: inout ${vectype}, y: ${vectype}) {
+    fatalError("unavailable function cannot be called")
+  }
+
+  @available(*, unavailable,
+             message: "integer vector types do not support checked arithmetic; use the wrapping operation 'x = x &* y' instead")
+  public static func *=(x: inout ${vectype}, y: ${vectype}) {
+    fatalError("unavailable function cannot be called")
+  }
+
+  @available(*, unavailable,
+             message: "integer vector types do not support checked arithmetic; use the wrapping operation 'x = x &* y' instead")
+  public static func *=(x: inout ${vectype}, y: ${scalar}) {
+    fatalError("unavailable function cannot be called")
+  }
+%  end
+}
+
+%  if is_signed:
 /// Elementwise absolute value of a vector.  The result is a vector of the same
 /// length with all elements positive.
-@inline(__always)
+@_transparent
 public func abs(_ x: ${vectype}) -> ${vectype} {
-  return ${vectype}(${', '.join(map(lambda c: \
-                    'abs(x.' + c + ')', \
-                    component[:size]))})
+  return simd_abs(x)
 }
-%end
+%  end
 
 /// Elementwise minimum of two vectors.  Each component of the result is the
 /// smaller of the corresponding component of the inputs.
-@inline(__always)
+@_transparent
 public func min(_ x: ${vectype}, _ y: ${vectype}) -> ${vectype} {
-  return ${vectype}(${', '.join(map(lambda c:             \
-                    'min(x.' + c + ', y.' + c + ')', \
-                    component[:size]))})
+  return simd_min(x, y)
 }
 
 /// Elementwise maximum of two vectors.  Each component of the result is the
 /// larger of the corresponding component of the inputs.
-@inline(__always)
+@_transparent
 public func max(_ x: ${vectype}, _ y: ${vectype}) -> ${vectype} {
-  return ${vectype}(${', '.join(map(lambda c:             \
-                    'max(x.' + c + ', y.' + c + ')', \
-                    component[:size]))})
+  return simd_max(x, y)
 }
 
 /// Vector-scalar minimum.  Each component of the result is the minimum of the
 /// corresponding element of the input vector and the scalar.
-@inline(__always)
-public func min(_ vector: ${vectype}, _ scalar: ${type}) -> ${vectype} {
+@_transparent
+public func min(_ vector: ${vectype}, _ scalar: ${scalar}) -> ${vectype} {
   return min(vector, ${vectype}(scalar))
 }
 
 /// Vector-scalar maximum.  Each component of the result is the maximum of the
 /// corresponding element of the input vector and the scalar.
-@inline(__always)
-public func max(_ vector: ${vectype}, _ scalar: ${type}) -> ${vectype} {
+@_transparent
+public func max(_ vector: ${vectype}, _ scalar: ${scalar}) -> ${vectype} {
   return max(vector, ${vectype}(scalar))
 }
 
 /// Each component of the result is the corresponding element of `x` clamped to
 /// the range formed by the corresponding elements of `min` and `max`.  Any
 /// lanes of `x` that contain NaN will end up with the `min` value.
-@inline(__always)
-public func clamp(_ x: ${vectype},
-                  min: ${vectype},
-                  max: ${vectype})
-                    -> ${vectype} {
+@_transparent
+public func clamp(_ x: ${vectype}, min: ${vectype}, max: ${vectype})
+  -> ${vectype} {
   return simd.min(simd.max(x, min), max)
 }
 
 /// Clamp each element of `x` to the range [`min`, max].  If any lane of `x` is
 /// NaN, the corresponding lane of the result is `min`.
-@inline(__always)
-public func clamp(_ x: ${vectype},
-                  min: ${type},
-                  max: ${type})
-                    -> ${vectype} {
+@_transparent
+public func clamp(_ x: ${vectype}, min: ${scalar}, max: ${scalar})
+  -> ${vectype} {
   return simd.min(simd.max(x, min), max)
 }
 
 /// Sum of the elements of the vector.
-@inline(__always)
-public func reduce_add(_ x: ${vectype}) -> ${type} {
-  return ${(' '+wrap+'+ ').join(map(lambda x:'x.'+x, component[:size]))}
+@_transparent
+public func reduce_add(_ x: ${vectype}) -> ${scalar} {
+  return simd_reduce_add(x)
 }
 
 /// Minimum element of the vector.
-@inline(__always)
-public func reduce_min(_ x: ${vectype}) -> ${type} {
-  return min(${', '.join(map(lambda x:'x.'+x, component[:size]))})
+@_transparent
+public func reduce_min(_ x: ${vectype}) -> ${scalar} {
+  return simd_reduce_min(x)
 }
 
 /// Maximum element of the vector.
-@inline(__always)
-public func reduce_max(_ x: ${vectype}) -> ${type} {
-  return max(${', '.join(map(lambda x:'x.'+x, component[:size]))})
+@_transparent
+public func reduce_max(_ x: ${vectype}) -> ${scalar} {
+  return simd_reduce_max(x)
 }
 
-%     if is_floating:
+%  if is_floating:
 
 /// Sign of a vector.  Each lane contains -1 if the corresponding lane of `x`
 /// is less than zero, +1 if the corresponding lane of `x` is greater than
 /// zero, and 0 otherwise.
-@inline(__always)
+@_transparent
 public func sign(_ x: ${vectype}) -> ${vectype} {
-  return ${vectype}(${', '.join(map(lambda c:  \
-                    'sign(x.' + c + ')', \
-                    component[:size]))})
+  return simd_sign(x)
 }
 
 /// Linear interpolation between `x` (at `t=0`) and `y` (at `t=1`).  May be
 /// used with `t` outside of [0, 1] as well.
-@inline(__always)
+@_transparent
 public func mix(_ x: ${vectype}, _ y: ${vectype}, t: ${vectype}) -> ${vectype} {
   return x + t*(y-x)
 }
 
 /// Linear interpolation between `x` (at `t=0`) and `y` (at `t=1`).  May be
 /// used with `t` outside of [0, 1] as well.
-@inline(__always)
-public func mix(_ x: ${vectype}, _ y: ${vectype}, t: ${type}) -> ${vectype} {
+@_transparent
+public func mix(_ x: ${vectype}, _ y: ${vectype}, t: ${scalar}) -> ${vectype} {
   return x + t*(y-x)
 }
 
 /// Elementwise reciprocal.
-@inline(__always)
+@_transparent
 public func recip(_ x: ${vectype}) -> ${vectype} {
-  return ${vectype}(${', '.join(map(lambda c:  \
-                    'recip(x.' + c + ')', \
-                    component[:size]))})
+  return simd_recip(x)
 }
 
 /// Elementwise reciprocal square root.
-@inline(__always)
+@_transparent
 public func rsqrt(_ x: ${vectype}) -> ${vectype} {
-  return ${vectype}(${', '.join(map(lambda c:  \
-                    'rsqrt(x.' + c + ')', \
-                    component[:size]))})
+  return simd_rsqrt(x)
 }
 
 /// Alternate name for minimum of two floating-point vectors.
-@inline(__always)
+@_transparent
 public func fmin(_ x: ${vectype}, _ y: ${vectype}) -> ${vectype} {
   return min(x, y)
 }
 
 /// Alternate name for maximum of two floating-point vectors.
-@inline(__always)
+@_transparent
 public func fmax(_ x: ${vectype}, _ y: ${vectype}) -> ${vectype} {
   return max(x, y)
 }
 
 /// Each element of the result is the smallest integral value greater than or
 /// equal to the corresponding element of the input.
-@inline(__always)
+@_transparent
 public func ceil(_ x: ${vectype}) -> ${vectype} {
-  return ${vectype}(${', '.join(map(lambda c:  \
-                    'ceil(x.' + c + ')', \
-                    component[:size]))})
+  return __tg_ceil(x)
 }
 
 /// Each element of the result is the largest integral value less than or equal
 /// to the corresponding element of the input.
-@inline(__always)
+@_transparent
 public func floor(_ x: ${vectype}) -> ${vectype} {
-  return ${vectype}(${', '.join(map(lambda c:  \
-                    'floor(x.' + c + ')', \
-                    component[:size]))})
+  return __tg_floor(x)
 }
 
 /// Each element of the result is the closest integral value with magnitude
 /// less than or equal to that of the corresponding element of the input.
-@inline(__always)
+@_transparent
 public func trunc(_ x: ${vectype}) -> ${vectype} {
-  return ${vectype}(${', '.join(map(lambda c:  \
-                    'trunc(x.' + c + ')', \
-                    component[:size]))})
+  return __tg_trunc(x)
 }
 
 /// `x - floor(x)`, clamped to lie in the range [0,1).  Without this clamp step,
 /// the result would be 1.0 when `x` is a very small negative number, which may
 /// result in out-of-bounds table accesses in common usage.
-@inline(__always)
+@_transparent
 public func fract(_ x: ${vectype}) -> ${vectype} {
-  return fmin(x - floor(x), ${vectype}(${one_minus_ulp[type]}))
+  return simd_fract(x)
 }
 
 /// 0.0 if `x < edge`, and 1.0 otherwise.
-@inline(__always)
+@_transparent
 public func step(_ x: ${vectype}, edge: ${vectype}) -> ${vectype} {
-  return ${vectype}(${', '.join(map(lambda c:                 \
-                    'step(x.' + c + ', edge: edge.' + c + ')', \
-                    component[:size]))})
+  return simd_step(edge, x)
 }
 
 /// 0.0 if `x < edge0`, 1.0 if `x > edge1`, and cubic interpolation between
 /// 0 and 1 in the interval [edge0, edge1].
-@inline(__always)
-public func smoothstep(_ x: ${vectype},
-                              edge0: ${vectype},
-                              edge1: ${vectype})
-                                -> ${vectype} {
-  let t = clamp((x-edge0)/(edge1-edge0), min: 0, max: 1)
-  return t * t * (${vectype}(3) - 2 * t)
+@_transparent
+public func smoothstep(_ x: ${vectype}, edge0: ${vectype}, edge1: ${vectype})
+  -> ${vectype} {
+  return simd_smoothstep(edge0, edge1, x)
 }
 
 /// Dot product of `x` and `y`.
-@inline(__always)
-public func dot(_ x: ${vectype}, _ y: ${vectype}) -> ${type} {
+@_transparent
+public func dot(_ x: ${vectype}, _ y: ${vectype}) -> ${scalar} {
   return reduce_add(x * y)
 }
 
 /// Projection of `x` onto `y`.
-@inline(__always)
+@_transparent
 public func project(_ x: ${vectype}, _ y: ${vectype}) -> ${vectype} {
-  return dot(x, y) / dot(y, y) * y
+  return simd_project(x, y)
 }
 
 /// Length of `x`, squared.  This is more efficient to compute than the length,
@@ -469,206 +519,127 @@
 ///
 /// Doing it this way avoids one or two square roots, which is a fairly costly
 /// operation.
-@inline(__always)
-public func length_squared(_ x: ${vectype}) -> ${type} {
+@_transparent
+public func length_squared(_ x: ${vectype}) -> ${scalar} {
   return dot(x, x)
 }
 
 /// Length (two-norm or "Euclidean norm") of `x`.
-@inline(__always)
-public func length(_ x: ${vectype}) -> ${type} {
+@_transparent
+public func length(_ x: ${vectype}) -> ${scalar} {
   return sqrt(length_squared(x))
 }
 
 /// The one-norm (or "taxicab norm") of `x`.
-@inline(__always)
-public func norm_one(_ x: ${vectype}) -> ${type} {
+@_transparent
+public func norm_one(_ x: ${vectype}) -> ${scalar} {
   return reduce_add(abs(x))
 }
 
 /// The infinity-norm (or "sup norm") of `x`.
-@inline(__always)
-public func norm_inf(_ x: ${vectype}) -> ${type} {
+@_transparent
+public func norm_inf(_ x: ${vectype}) -> ${scalar} {
   return reduce_max(abs(x))
 }
 
 /// Distance between `x` and `y`, squared.
-@inline(__always)
-public func distance_squared(_ x: ${vectype}, _ y: ${vectype}) -> ${type} {
+@_transparent
+public func distance_squared(_ x: ${vectype}, _ y: ${vectype}) -> ${scalar} {
   return length_squared(x - y)
 }
 
 /// Distance between `x` and `y`.
-@inline(__always)
-public func distance(_ x: ${vectype}, _ y: ${vectype}) -> ${type} {
+@_transparent
+public func distance(_ x: ${vectype}, _ y: ${vectype}) -> ${scalar} {
   return length(x - y)
 }
 
 /// Unit vector pointing in the same direction as `x`.
-@inline(__always)
+@_transparent
 public func normalize(_ x: ${vectype}) -> ${vectype} {
-  return x * rsqrt(length_squared(x))
+  return simd_normalize(x)
 }
 
 /// `x` reflected through the hyperplane with unit normal vector `n`, passing
 /// through the origin.  E.g. if `x` is [1,2,3] and `n` is [0,0,1], the result
 /// is [1,2,-3].
-@inline(__always)
+@_transparent
 public func reflect(_ x: ${vectype}, n: ${vectype}) -> ${vectype} {
-  return x - 2 * dot(x, n) * n
+  return simd_reflect(x, n)
 }
 
 /// The refraction direction given unit incident vector `x`, unit surface
 /// normal `n`, and index of refraction `eta`.  If the angle between the
 /// incident vector and the surface is so small that total internal reflection
 /// occurs, zero is returned.
-@inline(__always)
-public func refract(_ x: ${vectype},
-                           n: ${vectype},
-                           eta: ${type})
-                             -> ${vectype} {
-  // FIXME(integers): extra variables were introduced to speed up compilation.
-  let etaSquared = eta * eta
-  let dotSquared = dot(x, n) * dot(x, n)
-  let k = 1 - etaSquared * (1 - dotSquared)
-  if k >= 0 {
-    let etaX = eta * x
-    let etaDot = eta * dot(x, n)
-    return etaX - (etaDot + sqrt(k)) * n
-  }
-  return ${vectype}(0)
+@_transparent
+public func refract(_ x: ${vectype}, n: ${vectype}, eta: ${scalar})
+  -> ${vectype} {
+  return simd_refract(x, n, eta)
 }
 
-%     end # if is_floating
-%   end # for size in [2, 3, 4]
-%   if is_floating:
+%  end # if is_floating
+% end # for count in [2, 3, 4]
+% if is_floating:
 //  Scalar versions of common operations:
 
 /// Returns -1 if `x < 0`, +1 if `x > 0`, and 0 otherwise (`sign(NaN)` is 0).
-@inline(__always)
-public func sign(_ x: ${type}) -> ${type} {
-  return x < 0 ? -1 : (x > 0 ? 1 : 0)
+@_transparent
+public func sign(_ x: ${scalar}) -> ${scalar} {
+  return simd_sign(x)
 }
 
 /// Reciprocal.
-@inline(__always)
-public func recip(_ x: ${type}) -> ${type} { return 1/x }
+@_transparent
+public func recip(_ x: ${scalar}) -> ${scalar} {
+  return simd_recip(x)
+}
 
 /// Reciprocal square root.
-@inline(__always)
-public func rsqrt(_ x: ${type}) -> ${type} { return 1/sqrt(x) }
+@_transparent
+public func rsqrt(_ x: ${scalar}) -> ${scalar} {
+  return simd_rsqrt(x)
+}
 
 /// Returns 0.0 if `x < edge`, and 1.0 otherwise.
-@inline(__always)
-public func step(_ x: ${type}, edge: ${type}) -> ${type} {
-  return x < edge ? 0.0 : 1.0
+@_transparent
+public func step(_ x: ${scalar}, edge: ${scalar}) -> ${scalar} {
+  return simd_step(edge, x)
 }
 
 /// Interprets two two-dimensional vectors as three-dimensional vectors in the
 /// xy-plane and computes their cross product, which lies along the z-axis.
-@inline(__always)
-public func cross(_ x: ${ctype[type]}2,
-                       _ y: ${ctype[type]}2)
-                         -> ${ctype[type]}3 {
-  return ${ctype[type]}3(0, 0, x.x*y.y - x.y*y.x)
+@_transparent
+public func cross(_ x: ${ctype[scalar]}2, _ y: ${ctype[scalar]}2)
+  -> ${ctype[scalar]}3 {
+  return simd_cross(x,y)
 }
 
 /// Cross-product of two three-dimensional vectors.  The resulting vector is
 /// perpendicular to the plane determined by `x` and `y`, with length equal to
 /// the oriented area of the parallelogram they determine.
-@inline(__always)
-public func cross(_ x: ${ctype[type]}3,
-                       _ y: ${ctype[type]}3)
-                         -> ${ctype[type]}3 {
-  return ${ctype[type]}3(x.y*y.z - x.z*y.y, x.z*y.x - x.x*y.z, x.x*y.y - x.y*y.x)
+@_transparent
+public func cross(_ x: ${ctype[scalar]}3, _ y: ${ctype[scalar]}3)
+  -> ${ctype[scalar]}3 {
+  return simd_cross(x,y)
 }
 
-%   else: # !is_floating
+% end # is_floating
+%end # for scalar in scalar_types
 
-// Integer vector types only support wrapping arithmetic. Make the non-wrapping
-// operators unavailable so that fixits guide users to the unchecked operations.
+%for type in floating_types:
+% for rows in [2,3,4]:
+%  for cols in [2,3,4]:
+%   mattype = 'simd_' + ctype[type] + str(cols) + 'x' + str(rows)
+%   diagsize = rows if rows < cols else cols
+%   coltype = ctype[type] + str(rows)
+%   rowtype = ctype[type] + str(cols)
+%   diagtype = ctype[type] + str(diagsize)
+%   transtype = ctype[type] + str(rows) + 'x' + str(cols)
 
-@available(*, unavailable, renamed: "&+",
-           message: "integer vector types do not support checked arithmetic; use the wrapping operations instead")
-public func +(x: ${vectype}, y: ${vectype}) -> ${vectype} {
-  fatalError("unavailable function cannot be called")
-}
+public typealias ${ctype[type]}${cols}x${rows} = ${mattype}
 
-@available(*, unavailable, renamed: "&-",
-           message: "integer vector types do not support checked arithmetic; use the wrapping operations instead")
-public func -(x: ${vectype}, y: ${vectype}) -> ${vectype} {
-  fatalError("unavailable function cannot be called")
-}
-
-@available(*, unavailable, renamed: "&*",
-           message: "integer vector types do not support checked arithmetic; use the wrapping operations instead")
-public func *(x: ${vectype}, y: ${vectype}) -> ${vectype} {
-  fatalError("unavailable function cannot be called")
-}
-
-@available(*, unavailable, renamed: "&*",
-           message: "integer vector types do not support checked arithmetic; use the wrapping operations instead")
-public func *(x: ${vectype}, y: ${type}) -> ${vectype} {
-  fatalError("unavailable function cannot be called")
-}
-
-@available(*, unavailable, renamed: "&*",
-           message: "integer vector types do not support checked arithmetic; use the wrapping operations instead")
-public func *(x: ${type}, y: ${vectype}) -> ${vectype} {
-  fatalError("unavailable function cannot be called")
-}
-
-@available(*, unavailable,
-           message: "integer vector types do not support checked arithmetic; use the wrapping operation 'x = x &+ y' instead")
-public func +=(x: inout ${vectype}, y: ${vectype}) {
-  fatalError("unavailable function cannot be called")
-}
-
-@available(*, unavailable,
-           message: "integer vector types do not support checked arithmetic; use the wrapping operation 'x = x &- y' instead")
-public func -=(x: inout ${vectype}, y: ${vectype}) {
-  fatalError("unavailable function cannot be called")
-}
-
-@available(*, unavailable,
-           message: "integer vector types do not support checked arithmetic; use the wrapping operation 'x = x &* y' instead")
-public func *=(x: inout ${vectype}, y: ${vectype}) {
-  fatalError("unavailable function cannot be called")
-}
-
-@available(*, unavailable,
-           message: "integer vector types do not support checked arithmetic; use the wrapping operation 'x = x &* y' instead")
-public func *=(x: inout ${vectype}, y: ${type}) {
-  fatalError("unavailable function cannot be called")
-}
-
-%   end # is_floating
-% end # for type in scalar_types
-
-% for type in floating_types:
-%   for rows in [2,3,4]:
-//      Workaround <rdar://problem/18900352>
-%     for cols in [2,3,4]:
-//      Workaround <rdar://problem/18900352>
-%       mattype = ctype[type] + str(cols) + 'x' + str(rows)
-%       diagsize = rows if rows < cols else cols
-%       coltype = ctype[type] + str(rows)
-%       rowtype = ctype[type] + str(cols)
-%       diagtype = ctype[type] + str(diagsize)
-%       transtype = ctype[type] + str(rows) + 'x' + str(cols)
-%       cmatrix = 'matrix_' + mattype
-
-@_fixed_layout
-public struct ${mattype} : CustomDebugStringConvertible {
-
-  internal var _columns: (${', '.join([coltype]*cols)})
-
-  /// Initialize matrix to zero.
-  public init() {
-%   for i in range(cols):
-    _columns.${i} = ${coltype}()
-%   end
-  }
+extension ${mattype} {
 
   /// Initialize matrix to have `scalar` on main diagonal, zeros elsewhere.
   public init(_ scalar: ${type}) {
@@ -678,10 +649,10 @@
   /// Initialize matrix to have specified `diagonal`, and zeros elsewhere.
   public init(diagonal: ${diagtype}) {
 %   for i in range(cols):
-    self._columns.${i} = ${coltype}()
+    self.columns.${i} = ${coltype}()
 %   end
 %   for i in range(diagsize):
-    self._columns.${i}.${component[i]} = diagonal.${component[i]}
+    self.columns.${i}.${component[i]} = diagonal.${component[i]}
 %   end
   }
 
@@ -689,54 +660,53 @@
   public init(_ columns: [${coltype}]) {
     _precondition(columns.count == ${cols}, "Requires array of ${cols} vectors")
 %   for i in range(cols):
-    self._columns.${i} = columns[${i}]
+    self.columns.${i} = columns[${i}]
 %   end
   }
 
   /// Initialize matrix to have specified `rows`.
   public init(rows: [${rowtype}]) {
     _precondition(rows.count == ${rows}, "Requires array of ${rows} vectors")
-%   for i in range(cols):
-      self._columns.${i} = [${', '.join(map(lambda j:
-                            'rows[' + str(j) + '].' + component[i],
-                            range(rows)))}]
-%   end
+    self = ${transtype}(rows).transpose
   }
 
   /// Initialize matrix to have specified `columns`.
-  internal init(${', '.join(map(lambda i:
-                '_ col' + str(i) + ': ' + coltype,
-                range(cols)))}) {
+  public init(${', '.join(['_ col' + str(i) + ': ' + coltype
+                          for i in range(cols)])}) {
 %   for i in range(cols):
-      self._columns.${i} = col${i}
+      self.columns.${i} = col${i}
 %   end
   }
 
   /// Initialize matrix from corresponding C matrix type.
-  public init(_ cmatrix: ${cmatrix}) {
-    self = unsafeBitCast(cmatrix, to: ${mattype}.self)
+  @available(swift, deprecated: 4, message: "This conversion is no longer necessary; use `cmatrix` directly.")
+  @_transparent
+  public init(_ cmatrix: ${mattype}) {
+    self = cmatrix
   }
 
   /// Get the matrix as the corresponding C matrix type.
-  public var cmatrix: ${cmatrix} {
-    get { return unsafeBitCast(self, to: ${cmatrix}.self) }
+  @available(swift, deprecated: 4, message: "This property is no longer needed; use the matrix itself.")
+  @_transparent
+  public var cmatrix: ${mattype} {
+    return self
   }
 
   /// Access to individual columns.
   public subscript(column: Int) -> ${coltype} {
     get {
       switch(column) {
-% for i in range(cols):
-      case ${i}: return _columns.${i}
-% end
+%   for i in range(cols):
+      case ${i}: return columns.${i}
+%   end
       default: _preconditionFailure("Column index out of range")
       }
     }
     set (value) {
       switch(column) {
-% for i in range(cols):
-      case ${i}: _columns.${i} = value
-% end
+%   for i in range(cols):
+      case ${i}: columns.${i} = value
+%   end
       default: _preconditionFailure("Column index out of range")
       }
     }
@@ -747,120 +717,170 @@
     get { return self[column][row] }
     set (value) { self[column][row] = value }
   }
+}
 
+extension ${mattype} : CustomDebugStringConvertible {
   public var debugDescription: String {
     return "${mattype}([${', '.join(map(lambda i: \
-                        '\(_columns.' + str(i) + '._descriptionAsArray)',
+                        '\(columns.' + str(i) + '._descriptionAsArray)',
                         range(cols)))}])"
   }
+}
+
+extension ${mattype} : Equatable {
+  @_transparent
+  public static func ==(lhs: ${mattype}, rhs: ${mattype}) -> Bool {
+    return simd_equal(lhs, rhs)
+  }
+}
+
+extension ${mattype} {
 
   /// Transpose of the matrix.
+  @_transparent
   public var transpose: ${transtype} {
-    get {
-      return ${transtype}([
-% for i in range(rows):
-        [${', '.join(map(lambda j: \
-         'self[' + str(j) + ',' + str(i) + ']', \
-         range(cols)))}],
-% end # for i in range(rows)
-      ])
-    }
+    return simd_transpose(self)
   }
 
-% if rows == cols:
+%   if rows == cols:
   /// Inverse of the matrix if it exists, otherwise the contents of the
   /// resulting matrix are undefined.
+  @available(OSX 10.10, iOS 8.0, tvOS 10.0, watchOS 3.0, *)
+  @_transparent
   public var inverse: ${mattype} {
-    get {
-      % inverse_func = '__invert_' + ('f' if type == 'Float' else 'd') + str(cols)
-      return ${mattype}(${inverse_func}(self.cmatrix))
-    }
+    return simd_inverse(self)
   }
-% end
-}
 
-/// Sum of two matrices.
-public func +(lhs: ${mattype}, rhs: ${mattype}) -> ${mattype} {
-  return ${mattype}(${', '.join(map(lambda i: \
-                    'lhs._columns.'+str(i)+' + rhs._columns.'+str(i), \
-                    range(cols)))})
-}
+  /// Determinant of the matrix.
+  @_transparent
+  public var determinant: ${type} {
+    return simd_determinant(self)
+  }
+%   end
 
-/// Negation of a matrix.
-public prefix func -(rhs: ${mattype}) -> ${mattype} {
-  return ${mattype}(${', '.join(map(lambda i: \
-                    '-rhs._columns.'+str(i),  \
-                    range(cols)))})
-}
+  /// Sum of two matrices.
+  @_transparent
+  public static func +(lhs: ${mattype}, rhs: ${mattype}) -> ${mattype} {
+    return simd_add(lhs, rhs)
+  }
 
-/// Difference of two matrices.
-public func -(lhs: ${mattype}, rhs: ${mattype}) -> ${mattype} {
-  return ${mattype}(${', '.join(map(lambda i: \
-                    'lhs._columns.'+str(i)+' - rhs._columns.'+str(i), \
-                    range(cols)))})
-}
+  /// Negation of a matrix.
+  @_transparent
+  public static prefix func -(rhs: ${mattype}) -> ${mattype} {
+    return ${mattype}() - rhs
+  }
 
-public func +=(lhs: inout ${mattype}, rhs: ${mattype}) -> Void {
-  lhs = lhs + rhs
-}
+  /// Difference of two matrices.
+  @_transparent
+  public static func -(lhs: ${mattype}, rhs: ${mattype}) -> ${mattype} {
+    return simd_sub(lhs, rhs)
+  }
 
-public func -=(lhs: inout ${mattype}, rhs: ${mattype}) -> Void {
-  lhs = lhs - rhs
-}
+  @_transparent
+  public static func +=(lhs: inout ${mattype}, rhs: ${mattype}) -> Void {
+    lhs = lhs + rhs
+  }
 
-/// Scalar-Matrix multiplication.
-public func *(lhs: ${type}, rhs: ${mattype}) -> ${mattype} {
-  return ${mattype}(${', '.join(map(lambda i: \
-                    'lhs*rhs._columns.'+str(i), \
-                    range(cols)))})
-}
+  @_transparent
+  public static func -=(lhs: inout ${mattype}, rhs: ${mattype}) -> Void {
+    lhs = lhs - rhs
+  }
 
-/// Matrix-Scalar multiplication.
-public func *(lhs: ${mattype}, rhs: ${type}) -> ${mattype} {
-  return rhs*lhs
-}
+  /// Scalar-Matrix multiplication.
+  @_transparent
+  public static func *(lhs: ${type}, rhs: ${mattype}) -> ${mattype} {
+    return simd_mul(lhs, rhs)
+  }
 
-public func *=(lhs: inout ${mattype}, rhs: ${type}) -> Void {
-  lhs = lhs*rhs
-}
+  /// Matrix-Scalar multiplication.
+  @_transparent
+  public static func *(lhs: ${mattype}, rhs: ${type}) -> ${mattype} {
+    return rhs*lhs
+  }
 
-/// Matrix-Vector multiplication.  Keep in mind that matrix types are named
-/// `${type}NxM` where `N` is the number of *columns* and `M` is the number of
-/// *rows*, so we multiply a `${type}3x2 * ${type}3` to get a `${type}2`, for
-/// example.
-public func *(lhs: ${mattype}, rhs: ${rowtype}) -> ${coltype} {
-  return ${' + '.join(map(lambda i: \
-         'lhs._columns.'+str(i)+'*rhs.'+component[i], \
-         range(cols)))}
-}
+  @_transparent
+  public static func *=(lhs: inout ${mattype}, rhs: ${type}) -> Void {
+    lhs = lhs*rhs
+  }
 
-/// Vector-Matrix multiplication.
-public func *(lhs: ${coltype}, rhs: ${mattype}) -> ${rowtype} {
-  return ${rowtype}(${', '.join(map(lambda i: \
-                    'dot(lhs, rhs._columns.'+str(i)+')', \
-                    range(cols)))})
-}
+  /// Matrix-Vector multiplication.  Keep in mind that matrix types are named
+  /// `${type}NxM` where `N` is the number of *columns* and `M` is the number of
+  /// *rows*, so we multiply a `${type}3x2 * ${type}3` to get a `${type}2`, for
+  /// example.
+  @_transparent
+  public static func *(lhs: ${mattype}, rhs: ${rowtype}) -> ${coltype} {
+    return simd_mul(lhs, rhs)
+  }
 
-% for k in [2,3,4]:
-/// Matrix multiplication (the "usual" matrix product, not the elementwise
-/// product).
-%   lhstype = ctype[type] + str(k) + 'x' + str(rows)
-%   rhstype = ctype[type] + str(cols) + 'x' + str(k)
-public func *(lhs: ${lhstype}, rhs: ${rhstype}) -> ${mattype} {
-  return ${mattype}(${', '.join(map(lambda i: \
-                    'lhs*rhs._columns.'+str(i), \
-                    range(cols)))})
-}
+  /// Vector-Matrix multiplication.
+  @_transparent
+  public static func *(lhs: ${coltype}, rhs: ${mattype}) -> ${rowtype} {
+    return simd_mul(lhs, rhs)
+  }
 
-% end # for k in [2,3,4]
+%   for k in [2,3,4]:
+  /// Matrix multiplication (the "usual" matrix product, not the elementwise
+  /// product).
+%    restype = ctype[type] + str(k) + 'x' + str(rows)
+%    rhstype = ctype[type] + str(k) + 'x' + str(cols)
+  @_transparent
+  public static func *(lhs: ${mattype}, rhs: ${rhstype}) -> ${restype} {
+    return simd_mul(lhs, rhs)
+  }
+
+%   end # for k in [2,3,4]
 
 %   rhstype = ctype[type] + str(cols) + 'x' + str(cols)
-/// Matrix multiplication (the "usual" matrix product, not the elementwise
-/// product).
-public func *=(lhs: inout ${mattype}, rhs: ${rhstype}) -> Void {
-  lhs = lhs*rhs
+  /// Matrix multiplication (the "usual" matrix product, not the elementwise
+  /// product).
+  @_transparent
+  public static func *=(lhs: inout ${mattype}, rhs: ${rhstype}) -> Void {
+    lhs = lhs*rhs
+  }
 }
 
-% end # for cols in [2,3,4]
+// Make old-style C free functions with the `matrix_` prefix available but
+// deprecated in Swift 4.
+
+%   if rows == cols:
+@available(swift, deprecated: 4, renamed: "${mattype}(diagonal:)")
+public func matrix_from_diagonal(_ d: ${diagtype}) -> ${mattype} {
+  return ${mattype}(diagonal: d)
+}
+
+@available(swift, deprecated: 4, message: "Use the .inverse property instead.")
+@available(OSX 10.10, iOS 8.0, tvOS 10.0, watchOS 3.0, *)
+public func matrix_invert(_ x: ${mattype}) -> ${mattype} {
+  return x.inverse
+}
+
+@available(swift, deprecated: 4, message: "Use the .determinant property instead.")
+public func matrix_determinant(_ x: ${mattype}) -> ${type} {
+  return x.determinant
+}
+
+%   end # rows == cols
+@available(swift, deprecated: 4, renamed: "${mattype}")
+public func matrix_from_columns(${', '.join(['_ col' + str(i) + ': ' + coltype
+                                for i in range(cols)])}) -> ${mattype} {
+  return ${mattype}(${', '.join(['col' + str(i) for i in range(cols)])})
+}
+
+public func matrix_from_rows(${', '.join(['_ row' + str(i) + ': ' + rowtype
+                             for i in range(rows)])}) -> ${mattype} {
+  return ${transtype}(${', '.join(['row' + str(i) for i in range(rows)])}).transpose
+}
+
+@available(swift, deprecated: 4, message: "Use the .transpose property instead.")
+public func matrix_transpose(_ x: ${mattype}) -> ${transtype} {
+  return x.transpose
+}
+
+@available(swift, deprecated: 4, renamed: "==")
+public func matrix_equal(_ lhs: ${mattype}, _ rhs: ${mattype}) -> Bool {
+  return lhs == rhs
+}
+
+%  end # for cols in [2,3,4]
 % end # for rows in [2,3,4]
-% end # for type in floating_types
+%end # for type in floating_types
diff --git a/stdlib/public/SwiftShims/CoreFoundationShims.h b/stdlib/public/SwiftShims/CoreFoundationShims.h
index 2e1a84a..2b1a465 100644
--- a/stdlib/public/SwiftShims/CoreFoundationShims.h
+++ b/stdlib/public/SwiftShims/CoreFoundationShims.h
@@ -69,6 +69,7 @@
     _swift_shims_CFStringRef _Nonnull theString);
 
 SWIFT_RUNTIME_STDLIB_INTERFACE
+__attribute__((ns_returns_retained))
 _swift_shims_CFStringRef _Nonnull _swift_stdlib_CFStringCreateWithSubstring(
     _swift_shims_CFAllocatorRef _Nullable alloc,
     _swift_shims_CFStringRef _Nonnull str, _swift_shims_CFRange range);
@@ -78,6 +79,7 @@
     _swift_shims_CFStringRef _Nonnull theString, _swift_shims_CFIndex idx);
 
 SWIFT_RUNTIME_STDLIB_INTERFACE
+__attribute__((ns_returns_retained))
 _swift_shims_CFStringRef _Nonnull _swift_stdlib_CFStringCreateCopy(
     _swift_shims_CFAllocatorRef _Nullable alloc,
     _swift_shims_CFStringRef _Nonnull theString);
diff --git a/stdlib/public/SwiftShims/DispatchOverlayShims.h b/stdlib/public/SwiftShims/DispatchOverlayShims.h
index 2c3f366..7b5a6de 100644
--- a/stdlib/public/SwiftShims/DispatchOverlayShims.h
+++ b/stdlib/public/SwiftShims/DispatchOverlayShims.h
@@ -65,6 +65,7 @@
 
 SWIFT_DISPATCH_SOURCE_TYPE(DATA_ADD)
 SWIFT_DISPATCH_SOURCE_TYPE(DATA_OR)
+SWIFT_DISPATCH_SOURCE_TYPE(DATA_REPLACE)
 SWIFT_DISPATCH_SOURCE_TYPE(MACH_SEND)
 SWIFT_DISPATCH_SOURCE_TYPE(MACH_RECV)
 SWIFT_DISPATCH_SOURCE_TYPE(MEMORYPRESSURE)
diff --git a/stdlib/public/SwiftShims/KeyPath.h b/stdlib/public/SwiftShims/KeyPath.h
index 7da4637..b8846e7 100644
--- a/stdlib/public/SwiftShims/KeyPath.h
+++ b/stdlib/public/SwiftShims/KeyPath.h
@@ -55,9 +55,12 @@
   = 3;
   
 static const __swift_uint32_t _SwiftKeyPathComponentHeader_MaximumOffsetPayload
+  = 0x1FFFFFFCU;
+  
+static const __swift_uint32_t _SwiftKeyPathComponentHeader_UnresolvedIndirectOffsetPayload
   = 0x1FFFFFFDU;
-
-static const __swift_uint32_t _SwiftKeyPathComponentHeader_UnresolvedOffsetPayload
+  
+static const __swift_uint32_t _SwiftKeyPathComponentHeader_UnresolvedFieldOffsetPayload
   = 0x1FFFFFFEU;
 
 static const __swift_uint32_t _SwiftKeyPathComponentHeader_OutOfLineOffsetPayload
diff --git a/stdlib/public/SwiftShims/LibcShims.h b/stdlib/public/SwiftShims/LibcShims.h
index 7745ed0..d1cba7f 100644
--- a/stdlib/public/SwiftShims/LibcShims.h
+++ b/stdlib/public/SwiftShims/LibcShims.h
@@ -33,7 +33,7 @@
 
 // This declaration is not universally correct.  We verify its correctness for
 // the current platform in the runtime code.
-#if defined(__linux__) && defined (__arm__) && !defined(__ANDROID__)
+#if defined(__linux__) && defined (__arm__)
 typedef           int __swift_ssize_t;
 #elif defined(_WIN32)
 #if defined(_M_ARM) || defined(_M_IX86)
diff --git a/stdlib/public/SwiftShims/XCTestOverlayShims.h b/stdlib/public/SwiftShims/XCTestOverlayShims.h
index 234e973..1fee3ae 100644
--- a/stdlib/public/SwiftShims/XCTestOverlayShims.h
+++ b/stdlib/public/SwiftShims/XCTestOverlayShims.h
@@ -17,10 +17,22 @@
 
 @class XCTestCase;
 
-XCTestCase * _Nonnull _XCTCurrentTestCase(void);
+NS_ASSUME_NONNULL_BEGIN
+
+XCTestCase *_XCTCurrentTestCase(void);
 
 NSDictionary<NSString *, NSString *> * _Nullable
 _XCTRunThrowableBlockBridge(void (^ _Nonnull NS_NOESCAPE block)());
 
+extern NSString * XCTActivityTypeUserCreated;
+@protocol XCTActivity;
+@class XCTContext;
+XCTContext *_XCTContextCurrent(void);
+BOOL _XCTContextShouldStartActivity(XCTContext *context, NSString *activityType);
+id<XCTActivity> _XCTContextWillStartActivity(XCTContext *context, NSString *name, NSString *activityType);
+void _XCTContextDidFinishActivity(XCTContext *context, id<XCTActivity> activity);
+
+NS_ASSUME_NONNULL_END
+
 #endif // SWIFT_STDLIB_SHIMS_XCTEST_OVERLAY_H
 
diff --git a/stdlib/public/core/ASCII.swift b/stdlib/public/core/ASCII.swift
index e8b9ad7..e4cf617 100644
--- a/stdlib/public/core/ASCII.swift
+++ b/stdlib/public/core/ASCII.swift
@@ -55,8 +55,9 @@
     }
     else if _fastPath(FromEncoding.self == UTF8.self) {
       let c = _identityCast(content, to: UTF8.EncodedScalar.self)
-      guard (c._storage & 0x80 == 0) else { return nil }
-      return EncodedScalar(CodeUnit(c._storage & 0x7f))
+      let first = c.first.unsafelyUnwrapped
+      guard (first < 0x80) else { return nil }
+      return EncodedScalar(CodeUnit(first))
     }
     return encode(FromEncoding.decode(content))
   }
diff --git a/stdlib/public/core/Arrays.swift.gyb b/stdlib/public/core/Arrays.swift.gyb
index f2310c7..6a9b2d1 100644
--- a/stdlib/public/core/Arrays.swift.gyb
+++ b/stdlib/public/core/Arrays.swift.gyb
@@ -169,7 +169,7 @@
 ///   specific values.
 """
   elif Self == 'Array':
-    SelfDocComment = '''\
+    SelfDocComment = """\
 /// An ordered, random-access collection.
 ///
 /// Arrays are one of the most commonly used data types in an app. You use
@@ -447,9 +447,7 @@
 ///
 /// - Note: The `ContiguousArray` and `ArraySlice` types are not bridged;
 ///   instances of those types always have a contiguous block of memory as
-///   their storage.
-/// - SeeAlso: `ContiguousArray`, `ArraySlice`, `Sequence`, `Collection`,
-///   `RangeReplaceableCollection`'''
+///   their storage."""
   # FIXME: Write about Array up/down-casting.
   else:
     raise ValueError('Unhandled case: ' + Self)
@@ -620,8 +618,6 @@
   /// - Returns: An index offset by `n` from the index `i`, unless that index
   ///   would be beyond `limit` in the direction of movement. In that case,
   ///   the method returns `nil`.
-  ///
-  /// - SeeAlso: `index(_:offsetBy:)`, `formIndex(_:offsetBy:limitedBy:)`
   @_inlineable
   public func index(
     _ i: Int, offsetBy n: Int, limitedBy limit: Int
@@ -736,10 +732,6 @@
   ///
   /// - Parameter bounds: A range of integers. The bounds of the range must be
   ///   valid indices of the array.
-%if Self != 'ArraySlice':
-  ///
-  /// - SeeAlso: `ArraySlice`
-%end
   @_inlineable
   public subscript(bounds: Range<Int>) -> ArraySlice<Element> {
     get {
@@ -1683,12 +1675,10 @@
   ///
   /// - Parameter body: A closure with an `UnsafeBufferPointer` parameter that
   ///   points to the contiguous storage for the array. ${contiguousCaveat} If
-  ///   `body` has a return value, it is used as the return value for the
-  ///   `withUnsafeBufferPointer(_:)` method. The pointer argument is valid
-  ///   only for the duration of the method's execution.
-  /// - Returns: The return value of the `body` closure parameter, if any.
-  ///
-  /// - SeeAlso: `withUnsafeMutableBufferPointer`, `UnsafeBufferPointer`
+  ///   `body` has a return value, that value is also used as the return value
+  ///   for the `withUnsafeBufferPointer(_:)` method. The pointer argument is
+  ///   valid only for the duration of the method's execution.
+  /// - Returns: The return value, if any, of the `body` closure parameter.
   @_inlineable
   public func withUnsafeBufferPointer<R>(
     _ body: (UnsafeBufferPointer<Element>) throws -> R
@@ -1727,13 +1717,11 @@
   ///
   /// - Parameter body: A closure with an `UnsafeMutableBufferPointer`
   ///   parameter that points to the contiguous storage for the array.
-  ///   ${contiguousCaveat} If `body` has a return value, it is used as the
-  ///   return value for the `withUnsafeMutableBufferPointer(_:)` method. The
-  ///   pointer argument is valid only for the duration of the method's
-  ///   execution.
-  /// - Returns: The return value of the `body` closure parameter, if any.
-  ///
-  /// - SeeAlso: `withUnsafeBufferPointer`, `UnsafeMutableBufferPointer`
+  ///   ${contiguousCaveat} If `body` has a return value, that value is also
+  ///   used as the return value for the `withUnsafeMutableBufferPointer(_:)`
+  ///   method. The pointer argument is valid only for the duration of the
+  ///   method's execution.
+  /// - Returns: The return value, if any, of the `body` closure parameter.
   @_semantics("array.withUnsafeMutableBufferPointer")
   @inline(__always) // Performance: This method should get inlined into the
   // caller such that we can combine the partial apply with the apply in this
@@ -2260,12 +2248,11 @@
   ///
   /// - Parameter body: A closure with an `UnsafeMutableRawBufferPointer`
   ///   parameter that points to the contiguous storage for the array.
-  ///   ${contiguousCaveat} If `body` has a return value, it is used as the
-  ///   return value for the `withUnsafeMutableBytes(_:)` method. The argument
-  ///   is valid only for the duration of the closure's execution.
-  /// - Returns: The return value of the `body` closure parameter, if any.
-  ///
-  /// - SeeAlso: `withUnsafeBytes`, `UnsafeMutableRawBufferPointer`
+  ///   ${contiguousCaveat} If `body` has a return value, that value is also
+  ///   used as the return value for the `withUnsafeMutableBytes(_:)` method.
+  ///   The argument is valid only for the duration of the closure's
+  ///   execution.
+  /// - Returns: The return value, if any, of the `body` closure parameter.
   @_inlineable
   public mutating func withUnsafeMutableBytes<R>(
     _ body: (UnsafeMutableRawBufferPointer) throws -> R
@@ -2296,12 +2283,10 @@
   ///
   /// - Parameter body: A closure with an `UnsafeRawBufferPointer` parameter
   ///   that points to the contiguous storage for the array.
-  ///   ${contiguousCaveat} If `body` has a return value, it is used as the
-  ///   return value for the `withUnsafeBytes(_:)` method. The argument is
-  ///   valid only for the duration of the closure's execution.
-  /// - Returns: The return value of the `body` closure parameter, if any.
-  ///
-  /// - SeeAlso: `withUnsafeMutableBytes`, `UnsafeRawBufferPointer`
+  ///   ${contiguousCaveat} If `body` has a return value, that value is also
+  ///   used as the return value for the `withUnsafeBytes(_:)` method. The
+  ///   argument is valid only for the duration of the closure's execution.
+  /// - Returns: The return value, if any, of the `body` closure parameter.
   @_inlineable
   public func withUnsafeBytes<R>(
     _ body: (UnsafeRawBufferPointer) throws -> R
@@ -2360,7 +2345,6 @@
   ///
   /// - Complexity: O(*n*) if the array is bridged, where *n* is the length
   ///   of the array; otherwise, O(1).
-  /// - SeeAlso: `removeLast()`
   @_inlineable
   public mutating func popLast() -> Element? {
     guard !isEmpty else { return nil }
@@ -2375,7 +2359,6 @@
   ///   otherwise, `nil`.
   ///
   /// - Complexity: O(1)
-  /// - SeeAlso: `removeLast()`
   @_inlineable
   public mutating func popLast() -> Element? {
     guard !isEmpty else { return nil }
diff --git a/stdlib/public/core/BidirectionalCollection.swift b/stdlib/public/core/BidirectionalCollection.swift
index 605d529..7833a60 100644
--- a/stdlib/public/core/BidirectionalCollection.swift
+++ b/stdlib/public/core/BidirectionalCollection.swift
@@ -232,7 +232,6 @@
   ///   or more elements; otherwise, `nil`.
   ///
   /// - Complexity: O(1).
-  /// - SeeAlso: `removeLast()`
   public mutating func popLast() -> Element? {
     guard !isEmpty else { return nil }
     let element = last!
@@ -248,7 +247,6 @@
   /// - Returns: The last element of the collection.
   ///
   /// - Complexity: O(1)
-  /// - SeeAlso: `popLast()`
   @discardableResult
   public mutating func removeLast() -> Element {
     let element = last!
diff --git a/stdlib/public/core/Bool.swift b/stdlib/public/core/Bool.swift
index 1de08ce..02d0df8 100644
--- a/stdlib/public/core/Bool.swift
+++ b/stdlib/public/core/Bool.swift
@@ -145,7 +145,6 @@
   /// - Note: The hash value is not guaranteed to be stable across different
   ///   invocations of the same program. Do not persist the hash value across
   ///   program runs.
-  /// - SeeAlso: `Hashable`
   @_transparent
   public var hashValue: Int {
     return self ? 1 : 0
@@ -160,8 +159,8 @@
 extension Bool : LosslessStringConvertible {
   /// Creates a new Boolean value from the given string.
   ///
-  /// If `description` is any string other than `"true"` or `"false"`, the
-  /// result is `nil`. This initializer is case sensitive.
+  /// If the `description` value is any string other than `"true"` or
+  /// `"false"`, the result is `nil`. This initializer is case sensitive.
   ///
   /// - Parameter description: A string representation of the Boolean value.
   public init?(_ description: String) {
diff --git a/stdlib/public/core/Builtin.swift b/stdlib/public/core/Builtin.swift
index 7e8c1b8..e2a9871 100644
--- a/stdlib/public/core/Builtin.swift
+++ b/stdlib/public/core/Builtin.swift
@@ -82,24 +82,25 @@
 /// Returns the bits of the given instance, interpreted as having the specified
 /// type.
 ///
-/// Only use this function to convert the instance passed as `x` to a
-/// layout-compatible type when the conversion is not possible through other
-/// means. Common conversions that are supported by the standard library
+/// Use this function only to convert the instance passed as `x` to a
+/// layout-compatible type when conversion through other means is not
+/// possible. Common conversions supported by the Swift standard library
 /// include the following:
 ///
-/// - To convert an integer value from one type to another, use an initializer
-///   or the `numericCast(_:)` function.
-/// - To perform a bitwise conversion of an integer value to a different type,
-///   use an `init(bitPattern:)` or `init(truncatingBitPattern:)` initializer.
-/// - To convert between a pointer and an integer value with that bit pattern,
-///   or vice versa, use the `init(bitPattern:)` initializer for the
-///   destination type.
-/// - To perform a reference cast, use the casting operators (`as`, `as!`, or
-///   `as?`) or the `unsafeDowncast(_:to:)` function. Do not use
+/// - Value conversion from one integer type to another. Use the destination
+///   type's initializer or the `numericCast(_:)` function.
+/// - Bitwise conversion from one integer type to another. Use the destination
+///   type's `init(extendingOrTruncating:)` or `init(bitPattern:)`
+///   initializer.
+/// - Conversion from a pointer to an integer value with the bit pattern of the
+///   pointer's address in memory, or vice versa. Use the `init(bitPattern:)`
+///   initializer for the destination type.
+/// - Casting an instance of a reference type. Use the casting operators (`as`,
+///   `as!`, or `as?`) or the `unsafeDowncast(_:to:)` function. Do not use
 ///   `unsafeBitCast(_:to:)` with class or pointer types; doing so may
 ///   introduce undefined behavior.
 ///
-/// - Warning: Calling this function breaks the guarantees of Swift's type
+/// - Warning: Calling this function breaks the guarantees of the Swift type
 ///   system; use with extreme care.
 ///
 /// - Parameters:
@@ -262,11 +263,13 @@
   return Builtin.castReference(x)
 }
 
+import SwiftShims
+
 @inline(__always)
 public func _getUnsafePointerToStoredProperties(_ x: AnyObject)
   -> UnsafeMutableRawPointer {
   let storedPropertyOffset = _roundUp(
-    MemoryLayout<_HeapObject>.size,
+    MemoryLayout<SwiftShims.HeapObject>.size,
     toAlignment: MemoryLayout<Optional<AnyObject>>.alignment)
   return UnsafeMutableRawPointer(Builtin.bridgeToRawPointer(x)) +
     storedPropertyOffset
@@ -654,12 +657,12 @@
 /// particularly when the dynamic type is different from the static type. The
 /// *static type* of a value is the known, compile-time type of the value. The
 /// *dynamic type* of a value is the value's actual type at run-time, which
-/// may be nested inside its concrete type.
+/// can be nested inside its concrete type.
 ///
 /// In the following code, the `count` variable has the same static and dynamic
 /// type: `Int`. When `count` is passed to the `printInfo(_:)` function,
-/// however, the `value` parameter has a static type of `Any`, the type
-/// declared for the parameter, and a dynamic type of `Int`.
+/// however, the `value` parameter has a static type of `Any` (the type
+/// declared for the parameter) and a dynamic type of `Int`.
 ///
 ///     func printInfo(_ value: Any) {
 ///         let type = type(of: value)
@@ -671,7 +674,7 @@
 ///     // '5' of type 'Int'
 ///
 /// The dynamic type returned from `type(of:)` is a *concrete metatype*
-/// (`T.Type`) for a class, structure, enumeration, or other non-protocol type
+/// (`T.Type`) for a class, structure, enumeration, or other nonprotocol type
 /// `T`, or an *existential metatype* (`P.Type`) for a protocol or protocol
 /// composition `P`. When the static type of the value passed to `type(of:)`
 /// is constrained to a class or protocol, you can use that metatype to access
@@ -707,19 +710,22 @@
 /// retrieves the overridden value from the `EmojiSmiley` subclass, instead of
 /// the `Smiley` class's original definition.
 ///
+/// Finding the Dynamic Type in a Generic Context
+/// =============================================
+///
 /// Normally, you don't need to be aware of the difference between concrete and
 /// existential metatypes, but calling `type(of:)` can yield unexpected
 /// results in a generic context with a type parameter bound to a protocol. In
 /// a case like this, where a generic parameter `T` is bound to a protocol
 /// `P`, the type parameter is not statically known to be a protocol type in
-/// the body of the generic function, so `type(of:)` can only produce the
-/// concrete metatype `P.Protocol`.
+/// the body of the generic function. As a result, `type(of:)` can only
+/// produce the concrete metatype `P.Protocol`.
 ///
 /// The following example defines a `printGenericInfo(_:)` function that takes
 /// a generic parameter and declares the `String` type's conformance to a new
 /// protocol `P`. When `printGenericInfo(_:)` is called with a string that has
 /// `P` as its static type, the call to `type(of:)` returns `P.self` instead
-/// of the dynamic type inside the parameter, `String.self`.
+/// of `String.self` (the dynamic type inside the parameter).
 ///
 ///     func printGenericInfo<T>(_ value: T) {
 ///         let type = type(of: value)
@@ -748,8 +754,8 @@
 ///     betterPrintGenericInfo(stringAsP)
 ///     // 'Hello!' of type 'String'
 ///
-/// - Parameter value: The value to find the dynamic type of.
-/// - Returns: The dynamic type, which is a value of metatype type.
+/// - Parameter value: The value for which to find the dynamic type.
+/// - Returns: The dynamic type, which is a metatype instance.
 @_transparent
 @_semantics("typechecker.type(of:)")
 public func type<T, Metatype>(of value: T) -> Metatype {
@@ -774,15 +780,15 @@
 /// whether all the elements in an array match a predicate. The function won't
 /// compile as written, because a lazy collection's `filter(_:)` method
 /// requires an escaping closure. The lazy collection isn't persisted, so the
-/// `predicate` closure won't actually escape the body of the function, but
-/// even so it can't be used in this way.
+/// `predicate` closure won't actually escape the body of the function;
+/// nevertheless, it can't be used in this way.
 ///
 ///     func allValues(in array: [Int], match predicate: (Int) -> Bool) -> Bool {
 ///         return array.lazy.filter { !predicate($0) }.isEmpty
 ///     }
 ///     // error: closure use of non-escaping parameter 'predicate'...
 ///
-/// `withoutActuallyEscaping(_:do:)` provides a temporarily-escapable copy of
+/// `withoutActuallyEscaping(_:do:)` provides a temporarily escapable copy of
 /// `predicate` that _can_ be used in a call to the lazy view's `filter(_:)`
 /// method. The second version of `allValues(in:match:)` compiles without
 /// error, with the compiler guaranteeing that the `escapablePredicate`
@@ -814,7 +820,7 @@
 /// returning. Even though the barrier guarantees that neither closure will
 /// escape the function, the `async(execute:)` method still requires that the
 /// closures passed be marked as `@escaping`, so the first version of the
-/// function does not compile. To resolve this, you can use
+/// function does not compile. To resolve these errors, you can use
 /// `withoutActuallyEscaping(_:do:)` to get copies of `f` and `g` that can be
 /// passed to `async(execute:)`.
 ///
@@ -829,19 +835,19 @@
 ///         }
 ///     }
 ///
-/// - Important: The escapable copy of `closure` passed as `body` is only valid
+/// - Important: The escapable copy of `closure` passed to `body` is only valid
 ///   during the call to `withoutActuallyEscaping(_:do:)`. It is undefined
 ///   behavior for the escapable closure to be stored, referenced, or executed
 ///   after the function returns.
 ///
 /// - Parameters:
-///   - closure: A non-escaping closure value that will be made escapable for
-///     the duration of the execution of the `body` closure. If `body` has a
-///     return value, it is used as the return value for the
+///   - closure: A nonescaping closure value that is made escapable for the
+///     duration of the execution of the `body` closure. If `body` has a
+///     return value, that value is also used as the return value for the
 ///     `withoutActuallyEscaping(_:do:)` function.
-///   - body: A closure that will be immediately executed, receiving an
-///     escapable copy of `closure` as an argument.
-/// - Returns: The return value of the `body` closure, if any.
+///   - body: A closure that is executed immediately with an escapable copy of
+///     `closure` as its argument.
+/// - Returns: The return value, if any, of the `body` closure.
 @_transparent
 @_semantics("typechecker.withoutActuallyEscaping(_:do:)")
 public func withoutActuallyEscaping<ClosureType, ResultType>(
diff --git a/stdlib/public/core/CMakeLists.txt b/stdlib/public/core/CMakeLists.txt
index ded7288..4e8683b 100644
--- a/stdlib/public/core/CMakeLists.txt
+++ b/stdlib/public/core/CMakeLists.txt
@@ -47,6 +47,7 @@
   CString.swift
   CTypes.swift
   DebuggerSupport.swift
+  DoubleWidth.swift.gyb
   DropWhile.swift.gyb
   Dump.swift
   EmptyCollection.swift
@@ -150,6 +151,7 @@
   UTF16.swift
   UTF32.swift
   Unicode.swift # ORDER DEPENDENCY: must follow new unicode support
+  ValidUTF8Buffer.swift
   WriteBackMutableSlice.swift
   )
 
diff --git a/stdlib/public/core/CString.swift b/stdlib/public/core/CString.swift
index 08a19d2..3b0d93e 100644
--- a/stdlib/public/core/CString.swift
+++ b/stdlib/public/core/CString.swift
@@ -143,8 +143,6 @@
   /// - Returns: A tuple with the new string and a Boolean value that indicates
   ///   whether any repairs were made. If `isRepairing` is `false` and an
   ///   ill-formed sequence is detected, this method returns `nil`.
-  ///
-  /// - SeeAlso: `UnicodeCodec`
   public static func decodeCString<Encoding : _UnicodeEncoding>(
     _ cString: UnsafePointer<Encoding.CodeUnit>?,
     as encoding: Encoding.Type,
diff --git a/stdlib/public/core/Character.swift b/stdlib/public/core/Character.swift
index 8e93dd8..cc4dfea 100644
--- a/stdlib/public/core/Character.swift
+++ b/stdlib/public/core/Character.swift
@@ -63,38 +63,27 @@
 /// [scalars]: http://www.unicode.org/glossary/#unicode_scalar_value
 @_fixed_layout
 public struct Character :
-  _ExpressibleByBuiltinExtendedGraphemeClusterLiteral,
+  _ExpressibleByBuiltinUTF16ExtendedGraphemeClusterLiteral,
   ExpressibleByExtendedGraphemeClusterLiteral, Hashable {
 
-  // Fundamentally, it is just a String, but it is optimized for the
-  // common case where the UTF-8 representation fits in 63 bits.  The
-  // remaining bit is used to discriminate between small and large
-  // representations.  In the small representation, the unused bytes
-  // are filled with 0xFF.
-  //
-  // If the grapheme cluster can be represented as `.small`, it
-  // should be represented as such.
+  // Fundamentally, it is just a String, but it is optimized for the common case
+  // where the UTF-16 representation fits in 63 bits.  The remaining bit is used
+  // to discriminate between small and large representations.  Since a grapheme
+  // cluster cannot have U+0000 anywhere but in its first scalar, we can store
+  // zero in empty code units above the first one.
   @_versioned
   internal enum Representation {
+    case smallUTF16(Builtin.Int63)
     case large(_StringBuffer._Storage)
-    case small(Builtin.Int63)
   }
 
   /// Creates a character containing the given Unicode scalar value.
   ///
-  /// - Parameter scalar: The Unicode scalar value to convert into a character.
-  public init(_ scalar: Unicode.Scalar) {
-    var asInt: UInt64 = 0
-    var shift: UInt64 = 0
-
-    let output: (UTF8.CodeUnit) -> Void = {
-      asInt |= UInt64($0) &<< shift
-      shift += 8
-    }
-
-    UTF8.encode(scalar, into: output)
-    asInt |= (~0) &<< shift
-    _representation = .small(Builtin.trunc_Int64_Int63(asInt._value))
+  /// - Parameter content: The Unicode scalar value to convert into a character.
+  public init(_ content: Unicode.Scalar) {
+    let content16 = UTF16.encode(content)._unsafelyUnwrappedUnchecked
+    _representation = .smallUTF16(
+      Builtin.zext_Int32_Int63(content16._storage._value))
   }
 
   @effects(readonly)
@@ -113,26 +102,42 @@
     utf8CodeUnitCount: Builtin.Word,
     isASCII: Builtin.Int1
   ) {
-    // Most character literals are going to be fewer than eight UTF-8 code
-    // units; for those, build the small character representation directly.
-    let maxCodeUnitCount = MemoryLayout<UInt64>.size
-    if _fastPath(Int(utf8CodeUnitCount) <= maxCodeUnitCount) {
-      var buffer: UInt64 = ~0
-      _memcpy(
-        dest: UnsafeMutableRawPointer(Builtin.addressof(&buffer)),
-        src: UnsafeMutableRawPointer(start),
-        size: UInt(utf8CodeUnitCount))
-      // Copying the bytes directly from the literal into an integer assumes
-      // little endianness, so convert the copied data into host endianness.
-      let utf8Chunk = UInt64(littleEndian: buffer)
-      let bits = maxCodeUnitCount &* 8 &- 1
-      // Verify that the highest bit isn't set so that we can truncate it to
-      // 63 bits.
-      if _fastPath(utf8Chunk & (1 &<< numericCast(bits)) != 0) {
-        _representation = .small(Builtin.trunc_Int64_Int63(utf8Chunk._value))
-        return
-      }
+    let utf8 = UnsafeBufferPointer(
+      start: UnsafePointer<Unicode.UTF8.CodeUnit>(start),
+      count: Int(utf8CodeUnitCount))
+    
+    if utf8.count == 1 {
+      _representation = .smallUTF16(
+        Builtin.zext_Int8_Int63(utf8.first._unsafelyUnwrappedUnchecked._value))
+      return
     }
+
+  FastPath: 
+    repeat {
+      var shift = 0
+      let maxShift = 64 - 16
+      var bits: UInt64 = 0
+      
+      for s8 in Unicode._ParsingIterator(
+        codeUnits: utf8.makeIterator(), parser: UTF8.ForwardParser()) {
+        
+        let s16
+          = UTF16.transcode(s8, from: UTF8.self)._unsafelyUnwrappedUnchecked
+
+        for u16 in s16 {
+          guard _fastPath(shift <= maxShift) else { break FastPath }
+          bits |= UInt64(u16) &<< shift
+          shift += 16
+        }
+      }
+      guard _fastPath(Int64(extendingOrTruncating: bits) >= 0) else {
+        break FastPath
+      }
+      _representation = .smallUTF16(Builtin.trunc_Int64_Int63(bits._value))
+      return
+    }
+    while false
+    
     // For anything that doesn't fit in 63 bits, build the large
     // representation.
     self = Character(_largeRepresentationString:
@@ -142,6 +147,48 @@
         isASCII: isASCII))
   }
 
+  // Inlining ensures that the whole constructor can be folded away to a single
+  // integer constant in case of small character literals.
+  @inline(__always)
+  @effects(readonly)
+  public init(
+    _builtinExtendedGraphemeClusterLiteral start: Builtin.RawPointer,
+    utf16CodeUnitCount: Builtin.Word
+  ) {
+    let utf16 = UnsafeBufferPointer(
+      start: UnsafePointer<Unicode.UTF16.CodeUnit>(start),
+      count: Int(utf16CodeUnitCount))
+
+    switch utf16.count {
+    case 1:
+      _representation = .smallUTF16(Builtin.zext_Int16_Int63(utf16[0]._value))
+    case 2:
+      let bits = UInt32(utf16[0]) | UInt32(utf16[1]) &<< 16
+      _representation = .smallUTF16(Builtin.zext_Int32_Int63(bits._value))
+    case 3:
+      let bits = UInt64(utf16[0])
+        | UInt64(utf16[1]) &<< 16
+        | UInt64(utf16[2]) &<< 32
+      _representation = .smallUTF16(Builtin.trunc_Int64_Int63(bits._value))
+    case 4 where utf16[3] < 0x8000:
+      let bits = UInt64(utf16[0])
+        | UInt64(utf16[1]) &<< 16
+        | UInt64(utf16[2]) &<< 32
+        | UInt64(utf16[3]) &<< 48
+      _representation = .smallUTF16(Builtin.trunc_Int64_Int63(bits._value))
+    default:
+      _representation = Character(
+        _largeRepresentationString: String(
+          _StringCore(
+            baseAddress: UnsafeMutableRawPointer(start), 
+            count: utf16.count,
+            elementShift: 1,
+            hasCocoaBuffer: false,
+            owner: nil)
+        ))._representation
+    }
+  }
+  
   /// Creates a character with the specified value.
   ///
   /// Do not call this initalizer directly. It is used by the compiler when
@@ -169,32 +216,21 @@
   /// - Parameter s: The single-character string to convert to a `Character`
   ///   instance. `s` must contain exactly one extended grapheme cluster.
   public init(_ s: String) {
-    // The small representation can accept up to 8 code units as long
-    // as the last one is a continuation.  Since the high bit of the
-    // last byte is used for the enum's discriminator, we have to
-    // reconstruct it.  As a result, we can't store 0x7f in the final
-    // byte, because we wouldn't be able to distinguish it from an
-    // unused 0xFF byte.  Rather than trying to squeeze in other
-    // one-byte code points there, we simplify decoding by banning
-    // starting a code point in the last byte, and assuming that its
-    // high bit is 1.
     _precondition(
       s._core.count != 0, "Can't form a Character from an empty String")
-    _precondition(
+    _debugPrecondition(
       s.index(after: s.startIndex) == s.endIndex,
       "Can't form a Character from a String containing more than one extended grapheme cluster")
 
-    let (count, initialUTF8) = s._core._encodeSomeUTF8(from: 0)
-    // Notice that the result of sizeof() is a small non-zero number and can't
-    // overflow when multiplied by 8.
-    let bits = MemoryLayout.size(ofValue: initialUTF8) &* 8 &- 1
-    if _fastPath(
-      count == s._core.count && (initialUTF8 & (1 &<< numericCast(bits))) != 0) {
-      _representation = .small(Builtin.trunc_Int64_Int63(initialUTF8._value))
+    if _fastPath(s._core.count <= 4) {
+      let b = _UIntBuffer<UInt64, Unicode.UTF16.CodeUnit>(s._core)
+      if _fastPath(Int64(extendingOrTruncating: b._storage) >= 0) {
+        _representation = .smallUTF16(
+          Builtin.trunc_Int64_Int63(b._storage._value))
+        return
+      }
     }
-    else {
-      self = Character(_largeRepresentationString: s)
-    }
+    self = Character(_largeRepresentationString: s)
   }
 
   /// Creates a Character from a String that is already known to require the
@@ -216,145 +252,8 @@
     _representation = .large(nativeString._core.nativeBuffer!._storage)
   }
 
-  /// Returns the index of the lowest byte that is 0xFF, or 8 if
-  /// there is none.
-  static func _smallSize(_ value: UInt64) -> Int {
-    var mask: UInt64 = 0xFF
-    for i in 0..<8 {
-      if (value & mask) == mask {
-        return i
-      }
-      mask &<<= 8
-    }
-    return 8
-  }
-
   static func _smallValue(_ value: Builtin.Int63) -> UInt64 {
-    return UInt64(Builtin.zext_Int63_Int64(value)) | (1 &<< 63)
-  }
-
-  internal struct _SmallUTF8 : RandomAccessCollection {
-    typealias Indices = CountableRange<Int>
-    
-    var indices: CountableRange<Int> {
-      return startIndex..<endIndex
-    }
-
-    init(_ u8: UInt64) {
-      let utf8Count = Character._smallSize(u8)
-      _sanityCheck(utf8Count <= 8, "Character with more than 8 UTF-8 code units")
-      self._count = UInt16(utf8Count)
-      self._data = u8
-    }
-
-    /// The position of the first element in a non-empty collection.
-    ///
-    /// In an empty collection, `startIndex == endIndex`.
-    var startIndex: Int {
-      return 0
-    }
-
-    /// The collection's "past the end" position.
-    ///
-    /// `endIndex` is not a valid argument to `subscript`, and is always
-    /// reachable from `startIndex` by zero or more applications of
-    /// `index(after:)`.
-    var endIndex: Int {
-      return Int(_count)
-    }
-
-    /// Access the code unit at `position`.
-    ///
-    /// - Precondition: `position` is a valid position in `self` and
-    ///   `position != endIndex`.
-    subscript(position: Int) -> UTF8.CodeUnit {
-      _sanityCheck(position >= startIndex)
-      _sanityCheck(position < endIndex)
-      // Note: using unchecked arithmetic because overflow cannot happen if the
-      // above sanity checks hold.
-      return UTF8.CodeUnit(
-        extendingOrTruncating: _data &>> (UInt64(position) &* 8))
-    }
-
-    internal struct Iterator : IteratorProtocol {
-      init(_ data: UInt64) {
-        self._data = data
-      }
-
-      internal mutating func next() -> UInt8? {
-        let result = UInt8(extendingOrTruncating: _data)
-        if result == 0xFF {
-          return nil
-        }
-        _data = (_data &>> 8) | 0xFF00_0000_0000_0000
-        return result
-      }
-
-      internal var _data: UInt64
-    }
-
-    internal func makeIterator() -> Iterator {
-      return Iterator(_data)
-    }
-
-    var _count: UInt16
-    var _data: UInt64
-  }
-
-  struct _SmallUTF16 : RandomAccessCollection {
-    typealias Indices = CountableRange<Int>
-    
-    init(_ u8: UInt64) {
-      let count = UTF16.transcodedLength(
-        of: _SmallUTF8(u8).makeIterator(),
-        decodedAs: UTF8.self,
-        repairingIllFormedSequences: true)!.0
-      _sanityCheck(count <= 4, "Character with more than 4 UTF-16 code units")
-      self._count = UInt16(count)
-      var u16: UInt64 = 0
-      let output: (UTF16.CodeUnit) -> Void = {
-        u16 = u16 &<< 16
-        u16 = u16 | UInt64(extendingOrTruncating: $0)
-      }
-      _ = transcode(
-        _SmallUTF8(u8).makeIterator(),
-        from: UTF8.self, to: UTF16.self,
-        stoppingOnError: false,
-        into: output)
-      self._data = u16
-    }
-
-    /// The position of the first element in a non-empty collection.
-    ///
-    /// In an empty collection, `startIndex == endIndex`.
-    var startIndex: Int {
-      return 0
-    }
-
-    /// The collection's "past the end" position.
-    ///
-    /// `endIndex` is not a valid argument to `subscript`, and is always
-    /// reachable from `startIndex` by zero or more applications of
-    /// `successor()`.
-    var endIndex: Int {
-      return Int(_count)
-    }
-
-    /// Access the code unit at `position`.
-    ///
-    /// - Precondition: `position` is a valid position in `self` and
-    ///   `position != endIndex`.
-    subscript(position: Int) -> UTF16.CodeUnit {
-      _sanityCheck(position >= startIndex)
-      _sanityCheck(position < endIndex)
-      // Note: using unchecked arithmetic because overflow cannot happen if the
-      // above sanity checks hold.
-      return UTF16.CodeUnit(extendingOrTruncating:
-        _data &>> ((UInt64(_count) &- UInt64(position) &- 1) &* 16))
-    }
-
-    var _count: UInt16
-    var _data: UInt64
+    return UInt64(Builtin.zext_Int63_Int64(value))
   }
 
   /// The character's hash value.
@@ -391,19 +290,36 @@
   }
 }
 
+extension Character {
+  @_versioned
+  internal var _smallUTF16 : _UIntBuffer<UInt64, Unicode.UTF16.CodeUnit>? {
+    guard case .smallUTF16(let _63bits) = _representation  else { return nil }
+    _onFastPath()
+    let bits = UInt64(Builtin.zext_Int63_Int64(_63bits))
+    let nonZeroBitCount = type(of: bits).bitWidth - bits.leadingZeroBitCount
+    return _UIntBuffer<UInt64, Unicode.UTF16.CodeUnit>(
+      _storage: bits,
+      _bitCount: 16 * Swift.max(1, (nonZeroBitCount + 15) / 16)
+    )
+  }
+
+  @_versioned
+  internal var _largeUTF16 : _StringCore? {
+    guard case .large(let storage) = _representation else { return nil }
+    return _StringCore(_StringBuffer(storage))
+  }
+}
+
 extension String {
   /// Creates a string containing the given character.
   ///
   /// - Parameter c: The character to convert to a string.
   public init(_ c: Character) {
-    switch c._representation {
-    case let .small(_63bits):
-      let value = Character._smallValue(_63bits)
-      let smallUTF8 = Character._SmallUTF8(value)
-      self = String._fromWellFormedCodeUnitSequence(
-        UTF8.self, input: smallUTF8)
-    case let .large(value):
-      self = String(_StringCore(_StringBuffer(value)))
+    if let utf16 = c._smallUTF16 {
+      self = String(decoding: utf16, as: Unicode.UTF16.self)
+    }
+    else {
+      self = String(c._largeUTF16!)
     }
   }
 }
@@ -422,33 +338,38 @@
 }
 
 extension Character : Equatable {
+  @_inlineable
+  @inline(__always)
   public static func == (lhs: Character, rhs: Character) -> Bool {
-    switch (lhs._representation, rhs._representation) {
-    case let (.small(lbits), .small(rbits)) where
-      Bool(Builtin.cmp_uge_Int63(lbits, _minASCIICharReprBuiltin))
-      && Bool(Builtin.cmp_uge_Int63(rbits, _minASCIICharReprBuiltin)):
-      return Bool(Builtin.cmp_eq_Int63(lbits, rbits))
-    default:
-      // FIXME(performance): constructing two temporary strings is extremely
-      // wasteful and inefficient.
-      return String(lhs) == String(rhs)
+    let l0 = lhs._smallUTF16
+    if _fastPath(l0 != nil), let l = l0?._storage {
+      let r0 = rhs._smallUTF16
+      if _fastPath(r0 != nil), let r = r0?._storage {
+        if (l | r) < 0x300 { return l == r }
+        if l == r { return true }
+      }
     }
+    
+    // FIXME(performance): constructing two temporary strings is extremely
+    // wasteful and inefficient.
+    return String(lhs) == String(rhs)
   }
 }
 
 extension Character : Comparable {
+  @_inlineable
+  @inline(__always)
   public static func < (lhs: Character, rhs: Character) -> Bool {
-    switch (lhs._representation, rhs._representation) {
-    case let (.small(lbits), .small(rbits)) where
-      // Note: This is consistent with Foundation but unicode incorrect.
-      // See String._compareASCII.
-      Bool(Builtin.cmp_uge_Int63(lbits, _minASCIICharReprBuiltin))
-      && Bool(Builtin.cmp_uge_Int63(rbits, _minASCIICharReprBuiltin)):
-      return Bool(Builtin.cmp_ult_Int63(lbits, rbits))
-    default:
-      // FIXME(performance): constructing two temporary strings is extremely
-      // wasteful and inefficient.
-      return String(lhs) < String(rhs)
+    let l0 = lhs._smallUTF16
+    if _fastPath(l0 != nil), let l = l0?._storage {
+      let r0 = rhs._smallUTF16
+      if _fastPath(r0 != nil), let r = r0?._storage {
+        if (l | r) < 0x80 { return l < r }
+        if l == r { return false }
+      }
     }
+    // FIXME(performance): constructing two temporary strings is extremely
+    // wasteful and inefficient.
+    return String(lhs) < String(rhs)
   }
 }
diff --git a/stdlib/public/core/CharacterUnicodeScalars.swift b/stdlib/public/core/CharacterUnicodeScalars.swift
index a72ec2b..51b0f79 100644
--- a/stdlib/public/core/CharacterUnicodeScalars.swift
+++ b/stdlib/public/core/CharacterUnicodeScalars.swift
@@ -11,17 +11,17 @@
 //===----------------------------------------------------------------------===//
 extension Character {
   public struct UnicodeScalarView {
-    internal let _base: String.UnicodeScalarView
+    internal let _base: Character
   }
   
   public var unicodeScalars : UnicodeScalarView {
-    return UnicodeScalarView(_base: String(self).unicodeScalars)
+    return UnicodeScalarView(_base: self)
   }
 }
 
 extension Character.UnicodeScalarView {
   public struct Iterator {
-    internal var _base: String.UnicodeScalarView.Iterator
+    internal var _base: IndexingIterator<Character.UnicodeScalarView>
   }
 }
     
@@ -33,13 +33,15 @@
 
 extension Character.UnicodeScalarView : Sequence {
   public func makeIterator() -> Iterator {
-    return Iterator(_base: _base.makeIterator())
+    return Iterator(_base: IndexingIterator(_elements: self))
   }
 }
 
 extension Character.UnicodeScalarView {
   public struct Index {
-    internal let _base: String.UnicodeScalarView.Index
+    internal let _encodedOffset: Int
+    internal let _scalar: Unicode.UTF16.EncodedScalar
+    internal let _stride: UInt8
   }
 }
 
@@ -48,7 +50,7 @@
     lhs: Character.UnicodeScalarView.Index,
     rhs: Character.UnicodeScalarView.Index
   ) -> Bool {
-    return lhs._base == rhs._base
+    return lhs._encodedOffset == rhs._encodedOffset
   }
 }
 
@@ -57,27 +59,94 @@
     lhs: Character.UnicodeScalarView.Index,
     rhs: Character.UnicodeScalarView.Index
   ) -> Bool {
-    return lhs._base < rhs._base
+    return lhs._encodedOffset < rhs._encodedOffset
   }
 }
 
 extension Character.UnicodeScalarView : Collection {
   public var startIndex: Index {
-    return Index(_base: _base.startIndex)
+    return index(
+      after: Index(
+        _encodedOffset: 0,
+        _scalar: Unicode.UTF16.EncodedScalar(),
+        _stride: 0
+      ))
   }
+  
   public var endIndex: Index {
-    return Index(_base: _base.endIndex)
+    return Index(
+        _encodedOffset: _base._smallUTF16?.count ?? _base._largeUTF16!.count,
+        _scalar: Unicode.UTF16.EncodedScalar(),
+        _stride: 0
+      )
   }
+  
   public func index(after i: Index) -> Index {
-    return Index(_base: _base.index(after: i._base))
+    var parser = Unicode.UTF16.ForwardParser()
+    let startOfNextScalar = i._encodedOffset + numericCast(i._stride)
+    let r: Unicode.ParseResult<Unicode.UTF16.EncodedScalar>
+    
+    let small_ = _base._smallUTF16
+    if _fastPath(small_ != nil), let u16 = small_ {
+      var i = u16[u16.index(u16.startIndex, offsetBy: startOfNextScalar)...]
+        .makeIterator()
+      r = parser.parseScalar(from: &i)
+    }
+    else {
+      var i = _base._largeUTF16![startOfNextScalar...].makeIterator()
+      r = parser.parseScalar(from: &i)
+    }
+    
+    switch r {
+    case .valid(let s):
+      return Index(
+        _encodedOffset: startOfNextScalar, _scalar: s,
+        _stride: UInt8(extendingOrTruncating: s.count))
+    case .error:
+      return Index(
+        _encodedOffset: startOfNextScalar,
+        _scalar: Unicode.UTF16.encodedReplacementCharacter,
+        _stride: 1)
+    case .emptyInput:
+      if i._stride != 0 { return endIndex }
+      fatalError("no position after end of Character's last Unicode.Scalar")
+    }
   }
+  
   public subscript(_ i: Index) -> UnicodeScalar {
-    return _base[i._base]
+    return Unicode.UTF16.decode(i._scalar)
   }
 }
 
 extension Character.UnicodeScalarView : BidirectionalCollection {
   public func index(before i: Index) -> Index {
-    return Index(_base: _base.index(before: i._base))
+    var parser = Unicode.UTF16.ReverseParser()
+    let r: Unicode.ParseResult<Unicode.UTF16.EncodedScalar>
+    
+    let small_ = _base._smallUTF16
+    if _fastPath(small_ != nil), let u16 = small_ {
+      var i = u16[..<u16.index(u16.startIndex, offsetBy: i._encodedOffset)]
+        .reversed().makeIterator()
+      r = parser.parseScalar(from: &i)
+    }
+    else {
+      var i = _base._largeUTF16![..<i._encodedOffset].reversed().makeIterator()
+      r = parser.parseScalar(from: &i)
+    }
+    
+    switch r {
+    case .valid(let s):
+      return Index(
+        _encodedOffset: i._encodedOffset - s.count, _scalar: s,
+        _stride: UInt8(extendingOrTruncating: s.count))
+    case .error:
+      return Index(
+        _encodedOffset: i._encodedOffset - 1,
+        _scalar: Unicode.UTF16.encodedReplacementCharacter,
+        _stride: 1)
+    case .emptyInput:
+      fatalError("no position before Character's last Unicode.Scalar")
+    }
   }
 }
+
diff --git a/stdlib/public/core/ClosedRange.swift b/stdlib/public/core/ClosedRange.swift
index c542be7..ff9b7f4 100644
--- a/stdlib/public/core/ClosedRange.swift
+++ b/stdlib/public/core/ClosedRange.swift
@@ -174,8 +174,6 @@
 /// bound by floating-point values, see the `ClosedRange` type. If you need to
 /// iterate over consecutive floating-point values, see the
 /// `stride(from:through:by:)` function.
-///
-/// - SeeAlso: `CountableRange`, `ClosedRange`, `Range`
 @_fixed_layout
 public struct CountableClosedRange<Bound> : RandomAccessCollection
   where
@@ -373,8 +371,6 @@
 ///     let lowercaseA = "a"..."a"
 ///     print(lowercaseA.isEmpty)
 ///     // Prints "false"
-///
-/// - SeeAlso: `CountableRange`, `Range`, `CountableClosedRange`
 @_fixed_layout
 public struct ClosedRange<
   Bound : Comparable
diff --git a/stdlib/public/core/Codable.swift b/stdlib/public/core/Codable.swift
index 6db6061..0403cef 100644
--- a/stdlib/public/core/Codable.swift
+++ b/stdlib/public/core/Codable.swift
@@ -3412,11 +3412,11 @@
         // Initialize self here so we can print type(of: self).
         self.init()
 
-        guard Key.self is Encodable.Type else {
+        guard Key.self is Decodable.Type else {
             preconditionFailure("\(type(of: self)) does not conform to Decodable because \(Key.self) does not conform to Decodable.")
         }
 
-        guard Value.self is Encodable.Type else {
+        guard Value.self is Decodable.Type else {
             preconditionFailure("\(type(of: self)) does not conform to Decodable because \(Value.self) does not conform to Decodable.")
         }
 
@@ -3574,213 +3574,138 @@
 
 // Default implementations for decode(_:forKey:) in terms of decodeIfPresent(_:forKey:)
 public extension KeyedDecodingContainerProtocol {
-    public func decode(_ type: Bool.Type, forKey key: Key) throws -> Bool {
-        if let value = try decodeIfPresent(Bool.self, forKey: key) {
-            return value
-        } else if contains(key) {
+    @_semantics("optimize.sil.specialize.generic.never")
+    @_semantics("optimize.sil.specialize.generic.partial.never")
+    @inline(never)
+    internal func _errorInDecoding<T: Decodable>(_ type: T.Type, forKey key: Key) -> DecodingError {
+        if contains(key) {
             var path = codingPath
             path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
+            return DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
             var path = codingPath
             path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            return DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+        }
+    }
+
+    public func decode(_ type: Bool.Type, forKey key: Key) throws -> Bool {
+        if let value = try decodeIfPresent(Bool.self, forKey: key) {
+            return value
+        } else {
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: Int.Type, forKey key: Key) throws -> Int {
         if let value = try decodeIfPresent(Int.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: Int8.Type, forKey key: Key) throws -> Int8 {
         if let value = try decodeIfPresent(Int8.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: Int16.Type, forKey key: Key) throws -> Int16 {
         if let value = try decodeIfPresent(Int16.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: Int32.Type, forKey key: Key) throws -> Int32 {
         if let value = try decodeIfPresent(Int32.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: Int64.Type, forKey key: Key) throws -> Int64 {
         if let value = try decodeIfPresent(Int64.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: UInt.Type, forKey key: Key) throws -> UInt {
         if let value = try decodeIfPresent(UInt.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: UInt8.Type, forKey key: Key) throws -> UInt8 {
         if let value = try decodeIfPresent(UInt8.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: UInt16.Type, forKey key: Key) throws -> UInt16 {
         if let value = try decodeIfPresent(UInt16.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: UInt32.Type, forKey key: Key) throws -> UInt32 {
         if let value = try decodeIfPresent(UInt32.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: UInt64.Type, forKey key: Key) throws -> UInt64 {
         if let value = try decodeIfPresent(UInt64.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: Float.Type, forKey key: Key) throws -> Float {
         if let value = try decodeIfPresent(Float.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: Double.Type, forKey key: Key) throws -> Double {
         if let value = try decodeIfPresent(Double.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode(_ type: String.Type, forKey key: Key) throws -> String {
         if let value = try decodeIfPresent(String.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 
     public func decode<T : Decodable>(_ type: T.Type, forKey key: Key) throws -> T {
         if let value = try decodeIfPresent(T.self, forKey: key) {
             return value
-        } else if contains(key) {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: path, debugDescription: "Found null value when expecting non-optional type \(type) for coding key \"\(key)\""))
         } else {
-            var path = codingPath
-            path.append(key)
-            throw DecodingError.keyNotFound(key, DecodingError.Context(codingPath: path, debugDescription: "Key not found when expecting non-optional type \(type) for coding key \"\(key)\""))
+            throw _errorInDecoding(type, forKey: key)
         }
     }
 }
@@ -3884,153 +3809,134 @@
 
 // Default implementations for decode(_:) in terms of decodeIfPresent(_:)
 public extension UnkeyedDecodingContainer {
+    @_semantics("optimize.sil.specialize.generic.never")
+    @_semantics("optimize.sil.specialize.generic.partial.never")
+    @inline(never)
+    internal func _errorInDecoding<T: Decodable>(_ type: T.Type) -> DecodingError {
+        if !isAtEnd {
+            return DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
+        } else {
+            return DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+        }
+    }
+
     mutating func decode(_ type: Bool.Type) throws -> Bool {
         if let value = try decodeIfPresent(Bool.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: Int.Type) throws -> Int {
         if let value = try decodeIfPresent(Int.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: Int8.Type) throws -> Int8 {
         if let value = try decodeIfPresent(Int8.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: Int16.Type) throws -> Int16 {
         if let value = try decodeIfPresent(Int16.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: Int32.Type) throws -> Int32 {
         if let value = try decodeIfPresent(Int32.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: Int64.Type) throws -> Int64 {
         if let value = try decodeIfPresent(Int64.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: UInt.Type) throws -> UInt {
         if let value = try decodeIfPresent(UInt.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: UInt8.Type) throws -> UInt8 {
         if let value = try decodeIfPresent(UInt8.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: UInt16.Type) throws -> UInt16 {
         if let value = try decodeIfPresent(UInt16.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: UInt32.Type) throws -> UInt32 {
         if let value = try decodeIfPresent(UInt32.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: UInt64.Type) throws -> UInt64 {
         if let value = try decodeIfPresent(UInt64.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: Float.Type) throws -> Float {
         if let value = try decodeIfPresent(Float.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: Double.Type) throws -> Double {
         if let value = try decodeIfPresent(Double.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode(_ type: String.Type) throws -> String {
         if let value = try decodeIfPresent(String.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 
     mutating func decode<T : Decodable>(_ type: T.Type) throws -> T {
         if let value = try decodeIfPresent(T.self) {
             return value
-        } else if !isAtEnd {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "Found null value when expecting non-optional type \(type)"))
         } else {
-            throw DecodingError.valueNotFound(type, DecodingError.Context(codingPath: codingPath, debugDescription: "No remaining elements when expecting non-optional type \(type)"))
+            throw _errorInDecoding(type)
         }
     }
 }
diff --git a/stdlib/public/core/Collection.swift b/stdlib/public/core/Collection.swift
index b554efd..876a1ed 100644
--- a/stdlib/public/core/Collection.swift
+++ b/stdlib/public/core/Collection.swift
@@ -32,8 +32,6 @@
   /// Valid indices consist of the position of every element and a
   /// "past the end" position that's not valid for use as a subscript
   /// argument.
-  ///
-  /// - SeeAlso: endIndex
   associatedtype Index : Comparable
 
   /// The position of the first element in a nonempty collection.
@@ -153,8 +151,6 @@
   ///
   /// - Parameter i: A valid index of the collection. `i` must be less than
   ///   `endIndex`.
-  ///
-  /// - SeeAlso: `index(after:)`
   func formIndex(after i: inout Index)
 }
 
@@ -195,7 +191,6 @@
   ///   If `n` is negative, this is the same value as the result of `-n` calls
   ///   to `index(before:)`.
   ///
-  /// - SeeAlso: `index(_:offsetBy:limitedBy:)`, `formIndex(_:offsetBy:)`
   /// - Complexity: O(1) if the collection conforms to
   ///   `RandomAccessCollection`; otherwise, O(*n*), where *n* is the absolute
   ///   value of `n`.
@@ -238,7 +233,6 @@
   ///   would be beyond `limit` in the direction of movement. In that case,
   ///   the method returns `nil`.
   ///
-  /// - SeeAlso: `index(_:offsetBy:)`, `formIndex(_:offsetBy:limitedBy:)`
   /// - Complexity: O(1) if the collection conforms to
   ///   `RandomAccessCollection`; otherwise, O(*n*), where *n* is the absolute
   ///   value of `n`.
@@ -256,7 +250,6 @@
   ///   - n: The distance to offset `i`. `n` must not be negative unless the
   ///     collection conforms to the `BidirectionalCollection` protocol.
   ///
-  /// - SeeAlso: `index(_:offsetBy:)`, `formIndex(_:offsetBy:limitedBy:)`
   /// - Complexity: O(1) if the collection conforms to
   ///   `RandomAccessCollection`; otherwise, O(*n*), where *n* is the absolute
   ///   value of `n`.
@@ -280,7 +273,6 @@
   ///   going beyond `limit`; otherwise, `false`. When the return value is
   ///   `false`, the value of `i` is equal to `limit`.
   ///
-  /// - SeeAlso: `index(_:offsetBy:)`, `formIndex(_:offsetBy:limitedBy:)`
   /// - Complexity: O(1) if the collection conforms to
   ///   `RandomAccessCollection`; otherwise, O(*n*), where *n* is the absolute
   ///   value of `n`.
@@ -428,20 +420,18 @@
 }
 
 /// A sequence whose elements can be traversed multiple times,
-/// nondestructively, and accessed by indexed subscript.
+/// nondestructively, and accessed by an indexed subscript.
 ///
 /// Collections are used extensively throughout the standard library. When you
-/// use arrays, dictionaries, views of a string's contents and other types,
-/// you benefit from the operations that the `Collection` protocol declares
-/// and implements.
-///
-/// In addition to the methods that collections inherit from the `Sequence`
+/// use arrays, dictionaries, and other collections, you benefit from the
+/// operations that the `Collection` protocol declares and implements. In
+/// addition to the operations that collections inherit from the `Sequence`
 /// protocol, you gain access to methods that depend on accessing an element
-/// at a specific position when using a collection.
+/// at a specific position in a collection.
 ///
-/// For example, if you want to print only the first word in a string, search
-/// for the index of the first space, and then create a subsequence up to that
-/// position.
+/// For example, if you want to print only the first word in a string, you can
+/// search for the index of the first space, and then create a substring up to
+/// that position.
 ///
 ///     let text = "Buffalo buffalo buffalo buffalo."
 ///     if let firstSpace = text.index(of: " ") {
@@ -462,7 +452,7 @@
 /// such as the `startIndex` property of a different collection, are invalid
 /// indices for this collection.
 ///
-/// Saved indices may become invalid as a result of mutating operations; for
+/// Saved indices may become invalid as a result of mutating operations. For
 /// more information about index invalidation in mutable collections, see the
 /// reference for the `MutableCollection` and `RangeReplaceableCollection`
 /// protocols, as well as for the specific type you're using.
@@ -470,9 +460,10 @@
 /// Accessing Individual Elements
 /// =============================
 ///
-/// You can access an element of a collection through its subscript with any
-/// valid index except the collection's `endIndex` property, a "past the end"
-/// index that does not correspond with any element of the collection.
+/// You can access an element of a collection through its subscript by using
+/// any valid index except the collection's `endIndex` property. This property
+/// is a "past the end" index that does not correspond with any element of the
+/// collection.
 ///
 /// Here's an example of accessing the first character in a string through its
 /// subscript:
@@ -499,7 +490,7 @@
 /// and shares the original collection's semantics.
 ///
 /// The following example creates a `firstWord` constant by using the
-/// `prefix(where:)` method to get a slice of the `text` string.
+/// `prefix(while:)` method to get a slice of the `text` string.
 ///
 ///     let firstWord = text.prefix(while: { $0 != " " })
 ///     print(firstWord)
@@ -553,7 +544,7 @@
 /// A slice inherits the value or reference semantics of its base collection.
 /// That is, when working with a slice of a mutable collection that has value
 /// semantics, such as an array, mutating the original collection triggers a
-/// copy of that collection, and does not affect the contents of the slice.
+/// copy of that collection and does not affect the contents of the slice.
 ///
 /// For example, if you update the last element of the `absences` array from
 /// `0` to `2`, the `secondHalf` slice is unchanged.
@@ -568,11 +559,12 @@
 /// =======================
 ///
 /// Although a sequence can be consumed as it is traversed, a collection is
-/// guaranteed to be multipass: Any element may be repeatedly accessed by
+/// guaranteed to be *multipass*: Any element can be repeatedly accessed by
 /// saving its index. Moreover, a collection's indices form a finite range of
-/// the positions of the collection's elements. This guarantees the safety of
-/// operations that depend on a sequence being finite, such as checking to see
-/// whether a collection contains an element.
+/// the positions of the collection's elements. The fact that all collections
+/// are finite guarantees the safety of many sequence operations, such as
+/// using the `contains(_:)` method to test whether a collection includes an
+/// element.
 ///
 /// Iterating over the elements of a collection by their positions yields the
 /// same elements in the same order as iterating over that collection using
@@ -606,31 +598,31 @@
 /// elements, make sure that its type conforms to the `Collection` protocol in
 /// order to give a more useful and more efficient interface for sequence and
 /// collection operations. To add `Collection` conformance to your type, you
-/// must declare at least the four following requirements:
+/// must declare at least the following requirements:
 ///
-/// - the `startIndex` and `endIndex` properties,
-/// - a subscript that provides at least read-only access to your type's
-///   elements, and
-/// - the `index(after:)` method for advancing an index into your collection.
+/// - The `startIndex` and `endIndex` properties
+/// - A subscript that provides at least read-only access to your type's
+///   elements
+/// - The `index(after:)` method for advancing an index into your collection
 ///
 /// Expected Performance
 /// ====================
 ///
 /// Types that conform to `Collection` are expected to provide the `startIndex`
 /// and `endIndex` properties and subscript access to elements as O(1)
-/// operations. Types that are not able to guarantee that expected performance
-/// must document the departure, because many collection operations depend on
-/// O(1) subscripting performance for their own performance guarantees.
+/// operations. Types that are not able to guarantee this performance must
+/// document the departure, because many collection operations depend on O(1)
+/// subscripting performance for their own performance guarantees.
 ///
 /// The performance of some collection operations depends on the type of index
 /// that the collection provides. For example, a random-access collection,
-/// which can measure the distance between two indices in O(1) time, will be
-/// able to calculate its `count` property in O(1) time. Conversely, because a
-/// forward or bidirectional collection must traverse the entire collection to
-/// count the number of contained elements, accessing its `count` property is
-/// an O(*n*) operation.
-public protocol Collection : _Indexable, Sequence 
-// FIXME(ABI) (Revert Where Clauses): Restore these 
+/// which can measure the distance between two indices in O(1) time, can
+/// calculate its `count` property in O(1) time. Conversely, because a forward
+/// or bidirectional collection must traverse the entire collection to count
+/// the number of contained elements, accessing its `count` property is an
+/// O(*n*) operation.
+public protocol Collection : _Indexable, Sequence
+// FIXME(ABI) (Revert Where Clauses): Restore these
 // where SubSequence: Collection, Indices: Collection,
 {
   /// A type that represents the number of steps between a pair of
@@ -793,7 +785,6 @@
   /// - Returns: A subsequence up to, but not including, the `end` position.
   ///
   /// - Complexity: O(1)
-  /// - SeeAlso: `prefix(through:)`
   func prefix(upTo end: Index) -> SubSequence
 
   /// Returns a subsequence from the specified position to the end of the
@@ -860,7 +851,6 @@
   /// - Returns: A subsequence up to, and including, the `end` position.
   ///
   /// - Complexity: O(1)
-  /// - SeeAlso: `prefix(upTo:)`
   func prefix(through position: Index) -> SubSequence
 
   /// A Boolean value indicating whether the collection is empty.
@@ -936,7 +926,6 @@
   ///   If `n` is negative, this is the same value as the result of `-n` calls
   ///   to `index(before:)`.
   ///
-  /// - SeeAlso: `index(_:offsetBy:limitedBy:)`, `formIndex(_:offsetBy:)`
   /// - Complexity: O(1) if the collection conforms to
   ///   `RandomAccessCollection`; otherwise, O(*n*), where *n* is the absolute
   ///   value of `n`.
@@ -979,7 +968,6 @@
   ///   would be beyond `limit` in the direction of movement. In that case,
   ///   the method returns `nil`.
   ///
-  /// - SeeAlso: `index(_:offsetBy:)`, `formIndex(_:offsetBy:limitedBy:)`
   /// - Complexity: O(1) if the collection conforms to
   ///   `RandomAccessCollection`; otherwise, O(*n*), where *n* is the absolute
   ///   value of `n`.
@@ -1078,7 +1066,6 @@
   ///   If `n` is negative, this is the same value as the result of `-n` calls
   ///   to `index(before:)`.
   ///
-  /// - SeeAlso: `index(_:offsetBy:limitedBy:)`, `formIndex(_:offsetBy:)`
   /// - Complexity: O(1) if the collection conforms to
   ///   `RandomAccessCollection`; otherwise, O(*n*), where *n* is the absolute
   ///   value of `n`.
@@ -1124,7 +1111,6 @@
   ///   would be beyond `limit` in the direction of movement. In that case,
   ///   the method returns `nil`.
   ///
-  /// - SeeAlso: `index(_:offsetBy:)`, `formIndex(_:offsetBy:limitedBy:)`
   /// - Complexity: O(1) if the collection conforms to
   ///   `RandomAccessCollection`; otherwise, O(*n*), where *n* is the absolute
   ///   value of `n`.
@@ -1145,7 +1131,6 @@
   ///   - n: The distance to offset `i`. `n` must not be negative unless the
   ///     collection conforms to the `BidirectionalCollection` protocol.
   ///
-  /// - SeeAlso: `index(_:offsetBy:)`, `formIndex(_:offsetBy:limitedBy:)`
   /// - Complexity: O(1) if the collection conforms to
   ///   `RandomAccessCollection`; otherwise, O(*n*), where *n* is the absolute
   ///   value of `n`.
@@ -1172,7 +1157,6 @@
   ///   going beyond `limit`; otherwise, `false`. When the return value is
   ///   `false`, the value of `i` is equal to `limit`.
   ///
-  /// - SeeAlso: `index(_:offsetBy:)`, `formIndex(_:offsetBy:limitedBy:)`
   /// - Complexity: O(1) if the collection conforms to
   ///   `RandomAccessCollection`; otherwise, O(*n*), where *n* is the absolute
   ///   value of `n`.
@@ -1644,7 +1628,6 @@
   /// - Returns: A subsequence up to, but not including, the `end` position.
   ///
   /// - Complexity: O(1)
-  /// - SeeAlso: `prefix(through:)`
   @_inlineable
   public func prefix(upTo end: Index) -> SubSequence {
     return self[startIndex..<end]
@@ -1717,7 +1700,6 @@
   /// - Returns: A subsequence up to, and including, the `end` position.
   ///
   /// - Complexity: O(1)
-  /// - SeeAlso: `prefix(upTo:)`
   @_inlineable
   public func prefix(through position: Index) -> SubSequence {
     return prefix(upTo: index(after: position))
@@ -1884,7 +1866,6 @@
   /// - Returns: The first element of the collection.
   ///
   /// - Complexity: O(1)
-  /// - SeeAlso: `popFirst()`
   @_inlineable
   @discardableResult
   public mutating func removeFirst() -> Element {
diff --git a/stdlib/public/core/CollectionAlgorithms.swift.gyb b/stdlib/public/core/CollectionAlgorithms.swift.gyb
index 8eed3f3..4231051 100644
--- a/stdlib/public/core/CollectionAlgorithms.swift.gyb
+++ b/stdlib/public/core/CollectionAlgorithms.swift.gyb
@@ -53,8 +53,6 @@
   /// - Parameter element: An element to search for in the collection.
   /// - Returns: The first index where `element` is found. If `element` is not
   ///   found in the collection, returns `nil`.
-  ///
-  /// - SeeAlso: `index(where:)`
   @_inlineable
   public func index(of element: Element) -> Index? {
     if let result = _customIndexOfEquatableElement(element) {
@@ -93,8 +91,6 @@
   /// - Returns: The index of the first element for which `predicate` returns
   ///   `true`. If no elements in the collection satisfy the given predicate,
   ///   returns `nil`.
-  ///
-  /// - SeeAlso: `index(of:)`
   @_inlineable
   public func index(
     where predicate: (Element) throws -> Bool
@@ -252,8 +248,6 @@
   ///     // Prints "["Peter", "Kweku", "Kofi", "Akosua", "Abena"]"
   ///
   /// - Returns: A sorted array of the ${sequenceKind}'s elements.
-  ///
-  /// - SeeAlso: `sorted(by:)`, `sort()`
   @_inlineable
   public func sorted() -> [Element] {
     var result = ContiguousArray(self)
@@ -326,8 +320,6 @@
   ///   argument should be ordered before its second argument; otherwise,
   ///   `false`.
   /// - Returns: A sorted array of the ${sequenceKind}'s elements.
-  ///
-  /// - SeeAlso: `sorted()`, `sort(by:)`
   @_inlineable
   public func sorted(
     by areInIncreasingOrder:
diff --git a/stdlib/public/core/CompilerProtocols.swift b/stdlib/public/core/CompilerProtocols.swift
index dc791d9..38a7a7e 100644
--- a/stdlib/public/core/CompilerProtocols.swift
+++ b/stdlib/public/core/CompilerProtocols.swift
@@ -98,8 +98,6 @@
 ///     // Prints "false"
 ///     print(allowedMoves.rawValue & Directions.right.rawValue)
 ///     // Prints "0"
-///
-/// - SeeAlso: `OptionSet`, `FixedWidthInteger`
 public protocol RawRepresentable {
   /// The raw type that can be used to represent all values of the conforming
   /// type.
@@ -183,8 +181,6 @@
 /// `Optional` type conforms to `ExpressibleByNilLiteral`.
 /// `ExpressibleByNilLiteral` conformance for types that use `nil` for other
 /// purposes is discouraged.
-///
-/// - SeeAlso: `Optional`
 public protocol ExpressibleByNilLiteral {
   /// Creates an instance initialized with `nil`.
   init(nilLiteral: ())
@@ -347,6 +343,14 @@
   init(unicodeScalarLiteral value: UnicodeScalarLiteralType)
 }
 
+public protocol _ExpressibleByBuiltinUTF16ExtendedGraphemeClusterLiteral
+  : _ExpressibleByBuiltinExtendedGraphemeClusterLiteral {
+
+  init(
+    _builtinExtendedGraphemeClusterLiteral start: Builtin.RawPointer,
+    utf16CodeUnitCount: Builtin.Word)
+}
+
 public protocol _ExpressibleByBuiltinExtendedGraphemeClusterLiteral
   : _ExpressibleByBuiltinUnicodeScalarLiteral {
 
diff --git a/stdlib/public/core/DoubleWidth.swift.gyb b/stdlib/public/core/DoubleWidth.swift.gyb
new file mode 100644
index 0000000..2fa5f8a
--- /dev/null
+++ b/stdlib/public/core/DoubleWidth.swift.gyb
@@ -0,0 +1,557 @@
+//===--- DoubleWidth.swift.gyb --------------------------------*- swift -*-===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
+/// A fixed-width integer that is twice the size of its base type.
+public struct DoubleWidth<Base : FixedWidthInteger> :
+  FixedWidthInteger, _ExpressibleByBuiltinIntegerLiteral {
+
+  public typealias High = Base
+  public typealias Low = Base.Magnitude
+
+  internal var _storage: (high: Base, low: Base.Magnitude)
+
+  public // @testable
+  init(_ _value: (High, Low)) {
+    self._storage = (high: _value.0, low: _value.1)
+  }
+
+  public var high: High {
+    return _storage.high
+  }
+
+  public var low: Low {
+    return _storage.low
+  }
+
+  // Numeric
+  //
+  public init() {
+    self.init((0, 0))
+  }
+
+  // BinaryInteger
+  //
+  public var magnitude: DoubleWidth<Low> {
+    if Base.isSigned && _storage.high < (0 as High) {
+      return self == .min
+        ? DoubleWidth.max.magnitude &+ 1
+        : (0 - self).magnitude
+    }
+    return DoubleWidth<Low>((
+      _storage.high.magnitude, _storage.low.magnitude))
+  }
+
+  internal init(_ _magnitude: Magnitude) {
+    self.init((High(_magnitude._storage.high), _magnitude._storage.low))
+  }
+
+  public static func ==(lhs: DoubleWidth, rhs: DoubleWidth) -> Bool {
+    return (lhs._storage.high == rhs._storage.high) &&
+      (lhs._storage.low == rhs._storage.low)
+  }
+
+  public static func <(lhs: DoubleWidth, rhs: DoubleWidth) -> Bool {
+    if lhs._storage.high < rhs._storage.high {
+      return true
+    }
+    if lhs._storage.high > rhs._storage.high {
+      return false
+    }
+    return lhs._storage.low < rhs._storage.low
+  }
+
+  public init<T : BinaryInteger>(_ source: T) {
+    self.init(exactly: source)!
+  }
+
+  public init?<T : BinaryInteger>(exactly source: T) {
+    // Can't represent a negative 'source' if Base is unsigned
+    guard source >= 0 || DoubleWidth.isSigned else { return nil }
+    
+    // Is 'source' is entirely representable in Low?
+    if let low = Low(exactly: source.magnitude) {
+      if source < (0 as T) {
+        self.init((~0, ~low + 1))
+      } else {
+        self.init((0, low))
+      }
+    } else {
+      // At this point we know source's bitWidth > Base.bitWidth, or else
+      // we would've taken the first branch.
+      let lowInT = source & T(~0 as Low)
+      let highInT = source &>> numericCast(High.bitWidth)
+      
+      let low = Low(lowInT.magnitude)
+      guard let high = High(exactly: highInT) else { return nil }
+      self.init((high, low))
+    }
+  }
+
+  public init<T : FloatingPoint>(_ source: T) {
+    fatalError()
+  }
+
+  public init?<T : FloatingPoint>(exactly source: T) {
+    fatalError()
+  }
+    
+  public init<T : BinaryFloatingPoint>(_ source: T)
+    where T.RawSignificand : FixedWidthInteger
+  {
+    _precondition(source.isFinite, "Can't create a DoubleWidth from a non-finite value")
+    self.init(exactly: source.rounded(.towardZero))!
+  }
+    
+  public init?<T : BinaryFloatingPoint>(exactly source: T)
+    where T.RawSignificand : FixedWidthInteger
+  {
+    // Need a finite value
+    guard source.isFinite else { return nil }
+
+    // Don't need to go further with zero.
+    if source.isZero {
+      self.init(0)
+      return
+    }
+
+    // Need a value with a non-negative exponent
+    guard source.exponent >= 0 else { return nil }
+
+    typealias Raw = T.RawSignificand
+    let bitPattern = source.significandBitPattern |
+      ((1 as Raw) &<< Raw(T.significandBitCount))
+    let offset = T.significandBitCount - Int(source.exponent)
+    
+    // FIXME: spurious compile error when 'where' clause above is removed:
+    // error: non-nominal type 'T.RawSignificand' does not support explicit initialization
+    let fractionPart: Raw = bitPattern &<< Raw(Raw.bitWidth - offset)
+    guard fractionPart == (0 as Raw) else {
+      return nil
+    }
+
+    let integerPart: Raw = bitPattern &>> Raw(offset)
+
+    // Should have caught any actual zero values above
+    _sanityCheck(integerPart > (0 as Raw))
+
+    if source.sign == .minus {
+      if !DoubleWidth.isSigned || integerPart &- 1 > DoubleWidth.max {
+        return nil
+      }
+      // Have to juggle, or else the intermediate step of creating a value
+      // with Self.min's magnitude will overflow. It's okay to use wrapping
+      // subtraction because integerPart > 0.
+      self.init(integerPart &- 1)
+      self = 0 &- self &- 1
+    } else {
+      self.init(exactly: integerPart)
+    }
+  }
+    
+  public func _word(at n: Int) -> UInt {
+    if Base.bitWidth < UInt.bitWidth {
+      if UInt.bitWidth % Base.bitWidth != 0 {
+        fatalError("word(at:) is not supported on this type")
+      }
+      if n > 0 {
+        // Since `Base` is narrower than word, any non-zero word will give us
+        // the correct value here (0 or ~0).
+        return _storage.high._word(at: n)
+      }
+      return _storage.low._word(at: 0) |
+        (_storage.high._word(at: 0) << numericCast(Base.bitWidth))
+    } else {
+      // multiples of word-size only
+      if Base.bitWidth % UInt.bitWidth != 0 {
+        fatalError("word(at:) is not supported on this type")
+      }
+
+      // TODO: move to Int128 just like init(_builtinIntegerLiteral:) ?
+      return (n < _storage.low.countRepresentedWords) ?
+        _storage.low._word(at: n) :
+        _storage.high._word(at: n - _storage.low.countRepresentedWords)
+    }
+  }
+
+  public static var isSigned: Bool {
+    return Base.isSigned
+  }
+
+  // fixed width
+  //
+  public static var max: DoubleWidth {
+    return self.init((High.max, Low.max))
+  }
+
+  public static var min: DoubleWidth {
+    return self.init((High.min, Low.min))
+  }
+
+  public static var bitWidth: Int {
+    return 2 * Base.bitWidth
+  }
+
+% for (operator, name) in [('+', 'adding'), ('-', 'subtracting')]:
+%   highAffectedByLowOverflow = 'Base.max' if operator == '+' else 'Base.min'
+  public func ${name}ReportingOverflow(_ rhs: DoubleWidth)
+    -> (partialValue: DoubleWidth, overflow: ArithmeticOverflow) {
+    let (low, lowOverflow) =
+      _storage.low.${name}ReportingOverflow(rhs._storage.low)
+    let (high, highOverflow) =
+      _storage.high.${name}ReportingOverflow(rhs._storage.high)
+    let isLowOverflow = lowOverflow == .overflow
+    let result = (high &${operator} (isLowOverflow ? 1 : 0), low)
+    let overflow = ArithmeticOverflow(
+      highOverflow == .overflow ||
+      high == ${highAffectedByLowOverflow} && isLowOverflow
+    )
+    return (partialValue: DoubleWidth(result),
+      overflow: overflow)
+  }
+% end
+
+  public func multipliedReportingOverflow(
+    by rhs: DoubleWidth
+  ) -> (partialValue: DoubleWidth, overflow: ArithmeticOverflow) {
+    let (carry, product) = multipliedFullWidth(by: rhs)
+    let result = DoubleWidth(extendingOrTruncating: product)
+    
+    let isNegative = (self < (0 as DoubleWidth)) != (rhs < (0 as DoubleWidth))
+    let didCarry = isNegative
+      ? carry != ~(0 as DoubleWidth)
+      : carry != (0 as DoubleWidth)
+    let hadPositiveOverflow = !isNegative &&
+      DoubleWidth.isSigned && product.leadingZeroBitCount == 0
+
+    return (result, ArithmeticOverflow(didCarry || hadPositiveOverflow))
+  }
+
+  public func quotientAndRemainder(dividingBy other: DoubleWidth)
+    -> (quotient: DoubleWidth, remainder: DoubleWidth) {
+    let isNegative = (self < (0 as DoubleWidth)) != (other < (0 as DoubleWidth))
+
+    let rhs = other.magnitude
+    var q = self.magnitude
+
+    // Bail if |other| > |self|
+    if rhs.leadingZeroBitCount < q.leadingZeroBitCount {
+      return (0, self)
+    }
+    
+    // Calculate the number of bits before q and rhs line up,
+    // we can skip that many bits of iteration.
+    let initialOffset = q.leadingZeroBitCount +
+      (DoubleWidth.bitWidth - rhs.leadingZeroBitCount) - 1
+
+    // TODO(performance): Use &>> instead here?
+    // Start with remainder capturing the high bits of q.
+    var r = q >> Magnitude(DoubleWidth.bitWidth - initialOffset)
+    q <<= Magnitude(initialOffset)
+
+    let highBit = ~(~0 >> 1) as Magnitude
+    for _ in initialOffset..<DoubleWidth.bitWidth {
+      r <<= 1
+      if q & highBit != (0 as Magnitude) {
+        r += 1 as Magnitude
+      }
+      q <<= 1
+
+      if r >= rhs {
+        q |= 1
+        r -= rhs
+      }
+    }
+
+    // Sign of remainder matches dividend
+    let remainder = self < (0 as DoubleWidth)
+      ? 0 - DoubleWidth(r)
+      : DoubleWidth(r)
+
+    if isNegative {
+      return (0 - DoubleWidth(q), remainder)
+    } else {
+      return (DoubleWidth(q), remainder)
+    }
+  }
+
+  public func dividedReportingOverflow(by other: DoubleWidth)
+    -> (partialValue: DoubleWidth, overflow: ArithmeticOverflow) {
+    if other == (0 as DoubleWidth) ||
+      (DoubleWidth.isSigned && other == (-1 as Int) && self == .min)
+    {
+      return (self, .overflow)
+    }
+
+    return (quotientAndRemainder(dividingBy: other).quotient, .none)
+  }
+
+  public func remainderReportingOverflow(dividingBy other: DoubleWidth)
+    -> (partialValue: DoubleWidth, overflow: ArithmeticOverflow) {
+    if other == 0 ||
+      (DoubleWidth.isSigned && other == -1 && self == .min)
+    {
+      return (self, .overflow)
+    }
+
+    return (quotientAndRemainder(dividingBy: other).remainder, .none)
+  }
+
+  public func multipliedFullWidth(by other: DoubleWidth)
+    -> (high: DoubleWidth, low: DoubleWidth.Magnitude) {
+    let isNegative = DoubleWidth.isSigned &&
+      (self < (0 as DoubleWidth)) != (other < (0 as DoubleWidth))
+
+    func mul(_ x: Low, _ y: Low) -> (partial: Low, carry: Low) {
+      let (high, low) = x.multipliedFullWidth(by: y)
+      return (low, high)
+    }
+        
+    func sum(_ x: Low, _ y: Low, _ z: Low) -> (partial: Low, carry: Low) {
+      let (sum1, overflow1) = x.addingReportingOverflow(y)
+      let (sum2, overflow2) = sum1.addingReportingOverflow(z)
+      let carry: Low = (overflow1 == .overflow ? 1 : 0) +
+        (overflow2 == .overflow ? 1 : 0)
+      return (sum2, carry)
+    }
+        
+    let lhs = self.magnitude
+    let rhs = other.magnitude
+        
+    let a = mul(rhs._storage.low, lhs._storage.low)
+    let b = mul(rhs._storage.low, lhs._storage.high)
+    let c = mul(rhs._storage.high, lhs._storage.low)
+    let d = mul(rhs._storage.high, lhs._storage.high)
+        
+    let mid1 = sum(a.carry, b.partial, c.partial)
+    let mid2 = sum(b.carry, c.carry, d.partial)
+        
+    let low = DoubleWidth<Low>((mid1.partial, a.partial))
+    let high = DoubleWidth(
+      (High(mid2.carry + d.carry), mid1.carry + mid2.partial))
+        
+    if isNegative {
+      let (lowComplement, overflow) = (~low).addingReportingOverflow(1)
+      return (~high + (overflow == .overflow ? 1 : 0), lowComplement)
+    } else {
+      return (high, low)
+    }
+  }
+
+  public func dividingFullWidth(
+    _ dividend: (high: DoubleWidth, low: DoubleWidth.Magnitude)
+  ) -> (quotient: DoubleWidth, remainder: DoubleWidth) {
+    let lhs = DoubleWidth<DoubleWidth<Base>>(dividend)
+    let rhs = DoubleWidth<DoubleWidth<Base>>(self)
+    let (quotient, remainder) = lhs.quotientAndRemainder(dividingBy: rhs)
+
+    // FIXME(integers): check for overflow of quotient and remainder
+    return (DoubleWidth(quotient.low), DoubleWidth(remainder.low))
+  }
+
+% for operator in ['&', '|', '^']:
+  public static func ${operator}=(
+    lhs: inout DoubleWidth, rhs: DoubleWidth
+  ) {
+    lhs._storage.low ${operator}= rhs._storage.low
+    lhs._storage.high ${operator}= rhs._storage.high
+  }
+% end
+
+  public static func <<=(lhs: inout DoubleWidth, rhs: DoubleWidth) {
+    if rhs < (0 as DoubleWidth) {
+      lhs >>= 0 - rhs
+      return
+    }
+    
+    if rhs._storage.high != (0 as High) ||
+      rhs._storage.low >= DoubleWidth.bitWidth
+    {
+      lhs = 0
+      return
+    }
+    
+    // Shift is exactly the width of `Base`, so low -> high.
+    if rhs._storage.low == Base.bitWidth {
+      lhs = DoubleWidth((High(extendingOrTruncating: lhs._storage.low), 0))
+      return
+    }
+    
+    lhs &<<= rhs
+  }
+  
+  public static func >>=(lhs: inout DoubleWidth, rhs: DoubleWidth) {
+    if rhs < (0 as DoubleWidth) {
+      lhs <<= 0 - rhs
+      return
+    }
+
+    // Shift is larger than this type's bit width.
+    if rhs._storage.high != (0 as High) ||
+      rhs._storage.low >= DoubleWidth.bitWidth
+    {
+      lhs = lhs < (0 as DoubleWidth) ? ~0 : 0
+      return
+    }
+    
+    // Shift is exactly the width of `Base`, so high -> low.
+    if rhs._storage.low == Base.bitWidth {
+      lhs = DoubleWidth((
+        lhs < (0 as DoubleWidth) ? ~0 : 0,
+        Low(extendingOrTruncating: lhs._storage.high)
+      ))
+      return
+    }
+
+    lhs &>>= rhs
+  }
+  
+  public static func &<<=(lhs: inout DoubleWidth, rhs: DoubleWidth) {
+    let rhs = rhs & DoubleWidth(DoubleWidth.bitWidth - 1)
+
+    lhs._storage.high <<= High(rhs._storage.low)
+    if Base.bitWidth > rhs._storage.low {
+      lhs._storage.high |= High(extendingOrTruncating: lhs._storage.low >>
+        (numericCast(Base.bitWidth) - rhs._storage.low))
+    } else {
+      lhs._storage.high |= High(extendingOrTruncating: lhs._storage.low <<
+        (rhs._storage.low - numericCast(Base.bitWidth)))
+    }
+    lhs._storage.low <<= rhs._storage.low
+  }
+  
+  public static func &>>=(lhs: inout DoubleWidth, rhs: DoubleWidth) {
+    let rhs = rhs & DoubleWidth(DoubleWidth.bitWidth - 1)
+
+    lhs._storage.low >>= rhs._storage.low
+    if Base.bitWidth > rhs._storage.low {
+      lhs._storage.low |= Low(extendingOrTruncating: lhs._storage.high <<
+        numericCast(numericCast(Base.bitWidth) - rhs._storage.low))
+    } else {
+      lhs._storage.low |= Low(extendingOrTruncating: lhs._storage.high >>
+        numericCast(rhs._storage.low - numericCast(Base.bitWidth)))
+    }
+    lhs._storage.high >>= High(extendingOrTruncating: rhs._storage.low)
+  }
+  
+%{
+binaryOperators = [
+  ('+', 'adding', '_', '+'),
+  ('-', 'subtracting', '_', '-'),
+  ('*', 'multiplied', 'by', '*'),
+  ('/', 'divided', 'by', '/'),
+  ('%', 'remainder', 'dividingBy', '/'),
+]
+}%
+% for (operator, name, firstArg, kind) in binaryOperators:
+
+  // FIXME(integers): remove this once the operators are back to Numeric
+  public static func ${operator} (
+    lhs: DoubleWidth, rhs: DoubleWidth
+  ) -> DoubleWidth {
+    var lhs = lhs
+    lhs ${operator}= rhs
+    return lhs
+  }
+
+%   argumentLabel = (firstArg + ':') if firstArg != '_' else ''
+  public static func ${operator}=(
+    lhs: inout DoubleWidth, rhs: DoubleWidth
+  ) {
+    let (result, overflow) = lhs.${name}ReportingOverflow(${argumentLabel}rhs)
+    _precondition(overflow == .none, "Overflow in ${operator}=")
+    lhs = result
+  }
+% end
+
+  public init(_truncatingBits bits: UInt) {
+    _storage.low = Low(_truncatingBits: bits)
+    _storage.high = High(_truncatingBits: bits >> UInt(Base.bitWidth))
+  }
+
+  // other
+  //
+  public init(_builtinIntegerLiteral x: _MaxBuiltinIntegerType) {
+    // FIXME: This won't work if `x` is out of range for `Int64`
+    self.init(Int64(_builtinIntegerLiteral: x))
+  }
+
+  public var description: String {
+    return "(\(_storage.high), \(_storage.low))"
+  }
+
+  public var leadingZeroBitCount: Int {
+    return high == (0 as High)
+      ? Base.bitWidth + low.leadingZeroBitCount
+      : high.leadingZeroBitCount
+  }
+
+  public var trailingZeroBitCount: Int {
+    return low == (0 as Low)
+      ? Base.bitWidth + high.trailingZeroBitCount
+      : low.trailingZeroBitCount
+  }
+
+  public var nonzeroBitCount: Int {
+    return high.nonzeroBitCount + low.nonzeroBitCount
+  }
+
+  public var hashValue: Int {
+    return _mixInt(high.hashValue) ^ low.hashValue
+  }
+
+  @_transparent
+  public var byteSwapped: DoubleWidth {
+    return DoubleWidth((High(extendingOrTruncating: low.byteSwapped),
+      Low(extendingOrTruncating: high.byteSwapped)))
+  }
+}
+
+// FIXME(ABI) (Conditional Conformance):
+// DoubleWidth should conform to SignedInteger where Base : SignedInteger
+extension DoubleWidth where Base : SignedInteger {
+  /// Returns the additive inverse of the specified value.
+  ///
+  /// The negation operator (prefix `-`) returns the additive inverse of its
+  /// argument.
+  ///
+  ///     let x = 21 as DoubleWidth<Int>
+  ///     let y = -x
+  ///     // y == -21
+  ///
+  /// The resulting value must be representable in the same type as the
+  /// argument. In particular, negating a signed, fixed-width integer type's
+  /// minimum results in a value that cannot be represented.
+  ///
+  ///     let z = -DoubleWidth<Int>.min
+  ///     // Overflow error
+  ///
+  /// - Returns: The additive inverse of this value.
+  ///
+  /// - SeeAlso: `negate()`
+  public static prefix func - (_ operand: DoubleWidth) -> DoubleWidth {
+    return 0 - operand
+  }
+  
+  /// Replaces this value with its additive inverse.
+  ///
+  /// The following example uses the `negate()` method to negate the value of
+  /// an integer `x`:
+  ///
+  ///     var x = 21 as DoubleWidth<Int>
+  ///     x.negate()
+  ///     // x == -21
+  ///
+  /// - SeeAlso: The unary minus operator (`-`).
+  public mutating func negate() {
+    self = 0 - self
+  }
+}
diff --git a/stdlib/public/core/EmptyCollection.swift b/stdlib/public/core/EmptyCollection.swift
index 74ea7e8..c82838f 100644
--- a/stdlib/public/core/EmptyCollection.swift
+++ b/stdlib/public/core/EmptyCollection.swift
@@ -18,8 +18,6 @@
 //===----------------------------------------------------------------------===//
 
 /// An iterator that never produces an element.
-///
-/// - SeeAlso: `EmptyCollection<Element>`.
 public struct EmptyIterator<Element> : IteratorProtocol, Sequence {
   /// Creates an instance.
   public init() {}
diff --git a/stdlib/public/core/Equatable.swift b/stdlib/public/core/Equatable.swift
index 9f07935..a72e3a2 100644
--- a/stdlib/public/core/Equatable.swift
+++ b/stdlib/public/core/Equatable.swift
@@ -233,8 +233,6 @@
 /// - Parameters:
 ///   - lhs: A reference to compare.
 ///   - rhs: Another reference to compare.
-///
-/// - SeeAlso: `Equatable`, `==`, `!==`
 public func === (lhs: AnyObject?, rhs: AnyObject?) -> Bool {
   switch (lhs, rhs) {
   case let (l?, r?):
@@ -259,8 +257,6 @@
 /// - Parameters:
 ///   - lhs: A reference to compare.
 ///   - rhs: Another reference to compare.
-///
-/// - SeeAlso: `Equatable`, `===`, `!=`
 public func !== (lhs: AnyObject?, rhs: AnyObject?) -> Bool {
   return !(lhs === rhs)
 }
diff --git a/stdlib/public/core/ExistentialCollection.swift.gyb b/stdlib/public/core/ExistentialCollection.swift.gyb
index bac2d09..db1b041 100644
--- a/stdlib/public/core/ExistentialCollection.swift.gyb
+++ b/stdlib/public/core/ExistentialCollection.swift.gyb
@@ -41,8 +41,6 @@
 /// This iterator forwards its `next()` method to an arbitrary underlying
 /// iterator having the same `Element` type, hiding the specifics of the
 /// underlying `IteratorProtocol`.
-///
-/// - SeeAlso: `AnySequence`
 @_fixed_layout
 public struct AnyIterator<Element> : IteratorProtocol {
   /// Creates an iterator that wraps a base iterator but whose type depends
@@ -731,8 +729,6 @@
 /// An instance of `AnySequence` forwards its operations to an underlying base
 /// sequence having the same `Element` type, hiding the specifics of the
 /// underlying sequence.
-///
-/// - SeeAlso: `AnyIterator`
 //@_versioned
 @_fixed_layout
 public struct AnySequence<Element> : Sequence {
@@ -940,8 +936,6 @@
 }
 
 /// A wrapper over an underlying index that hides the specific underlying type.
-///
-/// - SeeAlso: `AnyCollection`
 @_fixed_layout
 public struct AnyIndex {
   /// Creates a new index wrapping `base`.
@@ -1015,8 +1009,6 @@
 /// An `${Self}` instance forwards its operations to a base collection having the
 /// same `Element` type, hiding the specifics of the underlying
 /// collection.
-///
-/// - SeeAlso: ${', '.join('`Any%sCollection`' % t for t in (2 * TRAVERSALS)[ti + 1 : ti + 3]) }
 @_fixed_layout
 public struct ${Self}<Element>
   : _AnyCollectionProtocol, ${SelfProtocol} {
diff --git a/stdlib/public/core/Flatten.swift.gyb b/stdlib/public/core/Flatten.swift.gyb
index 1bf5972..f8091e6 100644
--- a/stdlib/public/core/Flatten.swift.gyb
+++ b/stdlib/public/core/Flatten.swift.gyb
@@ -121,8 +121,6 @@
   ///
   /// - Returns: A flattened view of the elements of this
   ///   sequence of sequences.
-  ///
-  /// - SeeAlso: `flatMap(_:)`, `joined(separator:)`
   public func joined() -> FlattenSequence<Self> {
     return FlattenSequence(_base: self)
   }
@@ -397,8 +395,6 @@
   ///
   /// - Returns: A flattened view of the elements of this
   ///   collection of collections.
-  ///
-  /// - SeeAlso: `flatMap(_:)`, `joined(separator:)`
   public func joined() -> ${Collection}<Self> {
     return ${Collection}(self)
   }
diff --git a/stdlib/public/core/FloatingPoint.swift.gyb b/stdlib/public/core/FloatingPoint.swift.gyb
index 426220b..e34a1c1 100644
--- a/stdlib/public/core/FloatingPoint.swift.gyb
+++ b/stdlib/public/core/FloatingPoint.swift.gyb
@@ -304,8 +304,6 @@
   ///     // Prints "false"
   ///     print(y.isNaN)
   ///     // Prints "true"
-  ///
-  /// - SeeAlso: `isNaN`, `signalingNaN`
   static var nan: Self { get }
 
   /// A signaling NaN ("not a number").
@@ -323,8 +321,6 @@
   ///
   /// Other than these signaling operations, a signaling NaN behaves in the
   /// same manner as a quiet NaN.
-  ///
-  /// - SeeAlso: `nan`
   static var signalingNaN: Self { get }
 
   /// Positive infinity.
@@ -664,9 +660,6 @@
   ///
   /// - Parameter other: The value to use when dividing this value.
   /// - Returns: The remainder of this value divided by `other`.
-  ///
-  /// - SeeAlso: `formRemainder(dividingBy:)`,
-  ///   `truncatingRemainder(dividingBy:)`
   func remainder(dividingBy other: Self) -> Self
 
   /// Replaces this value with the remainder of itself divided by the given
@@ -698,9 +691,6 @@
   /// `remainder(dividingBy:)` method is always exact.
   ///
   /// - Parameter other: The value to use when dividing this value.
-  ///
-  /// - SeeAlso: `remainder(dividingBy:)`,
-  ///   `formTruncatingRemainder(dividingBy:)`
   mutating func formRemainder(dividingBy other: Self)
 
   /// Returns the remainder of this value divided by the given value using
@@ -734,9 +724,6 @@
   /// - Parameter other: The value to use when dividing this value.
   /// - Returns: The remainder of this value divided by `other` using
   ///   truncating division.
-  ///
-  /// - SeeAlso: `formTruncatingRemainder(dividingBy:)`,
-  ///   `remainder(dividingBy:)`
   func truncatingRemainder(dividingBy other: Self) -> Self
 
   /// Replaces this value with the remainder of itself divided by the given
@@ -768,9 +755,6 @@
   /// method is always exact.
   ///
   /// - Parameter other: The value to use when dividing this value.
-  ///
-  /// - SeeAlso: `truncatingRemainder(dividingBy:)`,
-  ///   `formRemainder(dividingBy:)`
   mutating func formTruncatingRemainder(dividingBy other: Self)
 
   /// Returns the square root of the value, rounded to a representable value.
@@ -787,14 +771,10 @@
   ///     // distance == 5.0
   ///
   /// - Returns: The square root of the value.
-  ///
-  /// - SeeAlso: `sqrt(_:)`, `formSquareRoot()`
   func squareRoot() -> Self
 
   /// Replaces this value with its square root, rounded to a representable
   /// value.
-  ///
-  /// - SeeAlso: `sqrt(_:)`, `squareRoot()`
   mutating func formSquareRoot()
 
   /// Returns the result of adding the product of the two given values to this
@@ -973,8 +953,6 @@
   ///
   /// - Parameter rule: The rounding rule to use.
   /// - Returns: The integral value found by rounding using `rule`.
-  ///
-  /// - SeeAlso: `rounded()`, `round(_:)`, `FloatingPointRoundingRule`
   func rounded(_ rule: FloatingPointRoundingRule) -> Self
 
   /// Rounds the value to an integral value using the specified rounding rule.
@@ -1011,8 +989,6 @@
   ///     // w1 == 7.0
   ///
   /// - Parameter rule: The rounding rule to use.
-  ///
-  /// - SeeAlso: `round()`, `rounded(_:)`, `FloatingPointRoundingRule`
   mutating func round(_ rule: FloatingPointRoundingRule)
 
   /// The least representable value that compares greater than this value.
@@ -1266,14 +1242,10 @@
   case negativeInfinity
 
   /// A negative value that uses the full precision of the floating-point type.
-  ///
-  /// - SeeAlso: `FloatingPoint.isNormal`
   case negativeNormal
 
   /// A negative, nonzero number that does not use the full precision of the
   /// floating-point type.
-  ///
-  /// - SeeAlso: `FloatingPoint.isSubnormal`
   case negativeSubnormal
 
   /// A value equal to zero with a negative sign.
@@ -1284,13 +1256,9 @@
 
   /// A positive, nonzero number that does not use the full precision of the
   /// floating-point type.
-  ///
-  /// - SeeAlso: `FloatingPoint.isSubnormal`
   case positiveSubnormal
 
   /// A positive value that uses the full precision of the floating-point type.
-  ///
-  /// - SeeAlso: `FloatingPoint.isNormal`
   case positiveNormal
 
   /// A value equal to `+infinity`.
@@ -1568,8 +1536,6 @@
   /// The raw encoding of the value's exponent field.
   ///
   /// This value is unadjusted by the type's exponent bias.
-  ///
-  /// - SeeAlso: `exponentBitCount`
   var exponentBitPattern: RawExponent { get }
 
   /// The raw encoding of the value's significand field.
@@ -1663,8 +1629,6 @@
   ///
   /// - Returns: The nearest integral value, or, if two integral values are
   ///   equally close, the integral value with greater magnitude.
-  ///
-  /// - SeeAlso: `rounded(_:)`, `round()`, `FloatingPointRoundingRule`
   @_transparent
   public func rounded() -> Self {
     return rounded(.toNearestOrAwayFromZero)
@@ -1689,8 +1653,6 @@
   ///
   /// To specify an alternative rule for rounding, use the `round(_:)` method
   /// instead.
-  ///
-  /// - SeeAlso: `round(_:)`, `rounded()`, `FloatingPointRoundingRule`
   @_transparent
   public mutating func round() {
     round(.toNearestOrAwayFromZero)
diff --git a/stdlib/public/core/FloatingPointTypes.swift.gyb b/stdlib/public/core/FloatingPointTypes.swift.gyb
index 8f495dd..d3fa0c6 100644
--- a/stdlib/public/core/FloatingPointTypes.swift.gyb
+++ b/stdlib/public/core/FloatingPointTypes.swift.gyb
@@ -160,8 +160,6 @@
   /// [IEEE 754 specification][spec].
   ///
   /// [spec]: http://ieeexplore.ieee.org/servlet/opac?punumber=4610933
-  ///
-  /// - SeeAlso: `init(bitPattern:)`
   public var bitPattern: UInt${bits} {
     return UInt${bits}(Builtin.bitcast_FPIEEE${bits}_Int${bits}(_value))
   }
@@ -174,8 +172,6 @@
   /// [spec]: http://ieeexplore.ieee.org/servlet/opac?punumber=4610933
   ///
   /// - Parameter bitPattern: The integer encoding of a `${Self}` instance.
-  ///
-  /// - SeeAlso: `bitPattern`
   public init(bitPattern: UInt${bits}) {
     self.init(_bits: Builtin.bitcast_Int${bits}_FPIEEE${bits}(bitPattern._value))
   }
@@ -793,8 +789,6 @@
   ///     // Use 'abs(_:)' instead of 'magnitude'
   ///     print("Missed the target by \(abs(margin)) meters.")
   ///     // Prints "Missed the target by 0.25 meters."
-  ///
-  /// - SeeAlso: `abs(_:)`
   @_transparent
   public var magnitude: ${Self} {
     return ${Self}(_bits: Builtin.int_fabs_FPIEEE${bits}(_value))
diff --git a/stdlib/public/core/GroupInfo.json b/stdlib/public/core/GroupInfo.json
index 94f5817..c4c41db 100644
--- a/stdlib/public/core/GroupInfo.json
+++ b/stdlib/public/core/GroupInfo.json
@@ -34,7 +34,8 @@
     "UTFEncoding.swift",
     "UTF8.swift",
     "UTF16.swift",
-    "UTF32.swift"
+    "UTF32.swift",
+    "ValidUTF8Buffer.swift"
   ],
   "Bool": [
     "Bool.swift"
@@ -123,6 +124,7 @@
     "BuiltinMath.swift",
     {
     "Integers": [
+      "DoubleWidth.swift",
       "Integers.swift",
       "IntegerParsing.swift"],
     "Floating": [
diff --git a/stdlib/public/core/Hashable.swift b/stdlib/public/core/Hashable.swift
index 7dac092..48b2ed3 100644
--- a/stdlib/public/core/Hashable.swift
+++ b/stdlib/public/core/Hashable.swift
@@ -14,7 +14,7 @@
 ///
 /// You can use any type that conforms to the `Hashable` protocol in a set or
 /// as a dictionary key. Many types in the standard library conform to
-/// `Hashable`: strings, integers, floating-point and Boolean values, and even
+/// `Hashable`: Strings, integers, floating-point and Boolean values, and even
 /// sets provide a hash value by default. Your own custom types can be
 /// hashable as well. When you define an enumeration without associated
 /// values, it gains `Hashable` conformance automatically, and you can add
@@ -23,12 +23,12 @@
 ///
 /// A hash value, provided by a type's `hashValue` property, is an integer that
 /// is the same for any two instances that compare equally. That is, for two
-/// instances `a` and `b` of the same type, if `a == b` then
+/// instances `a` and `b` of the same type, if `a == b`, then
 /// `a.hashValue == b.hashValue`. The reverse is not true: Two instances with
 /// equal hash values are not necessarily equal to each other.
 ///
 /// - Important: Hash values are not guaranteed to be equal across different
-///   executions of your program. Do not save hash values to use during a
+///   executions of your program. Do not save hash values to use in a
 ///   future execution.
 ///
 /// Conforming to the Hashable Protocol
@@ -68,9 +68,9 @@
 /// point's `x` property with the hash value of its `y` property multiplied by
 /// a prime constant.
 ///
-/// - Note: The example given above is a reasonably good hash function for a
+/// - Note: The above example above is a reasonably good hash function for a
 ///   simple type. If you're writing a hash function for a custom type, choose
-///   a hashing algorithm that is appropriate for kinds of data your type
+///   a hashing algorithm that is appropriate for the kinds of data your type
 ///   comprises. Set and dictionary performance depends on hash values that
 ///   minimize collisions for their associated element and key types,
 ///   respectively.
diff --git a/stdlib/public/core/HashedCollections.swift.gyb b/stdlib/public/core/HashedCollections.swift.gyb
index 092973b..f081132 100644
--- a/stdlib/public/core/HashedCollections.swift.gyb
+++ b/stdlib/public/core/HashedCollections.swift.gyb
@@ -440,8 +440,6 @@
 /// unspecified. The instances of `NSSet` and `Set` share buffer using the
 /// same copy-on-write optimization that is used when two instances of `Set`
 /// share buffer.
-///
-/// - SeeAlso: `Hashable`
 @_fixed_layout
 public struct Set<Element : Hashable> :
   SetAlgebra, Hashable, Collection, ExpressibleByArrayLiteral {
@@ -1676,8 +1674,6 @@
 /// `NSDictionary` and `Dictionary` share buffer using the same copy-on-write
 /// optimization that is used when two instances of `Dictionary` share
 /// buffer.
-///
-/// - SeeAlso: `Hashable`
 @_fixed_layout
 public struct Dictionary<Key : Hashable, Value> :
   Collection, ExpressibleByDictionaryLiteral {
@@ -1730,13 +1726,13 @@
   ///     print(wordToValue)
   ///     // Prints "["three": 3, "four": 4, "five": 5, "one": 1, "two": 2]"
   ///
-  /// - Parameter keysAndValues: A sequence of `(Key, Value)` tuples to use for
+  /// - Parameter keysAndValues: A sequence of key-value pairs to use for
   ///   the new dictionary. Every key in `keysAndValues` must be unique.
   /// - Returns: A new dictionary initialized with the elements of
   ///   `keysAndValues`.
   public init<S: Sequence>(
     uniqueKeysWithValues keysAndValues: S
-  ) where S.Iterator.Element == (Key, Value) {
+  ) where S.Element == (Key, Value) {
     if let d = keysAndValues as? Dictionary<Key, Value> {
       self = d
     } else {
@@ -1756,8 +1752,9 @@
   /// of key-value tuples that might have duplicate keys. As the dictionary is
   /// built, the initializer calls the `combine` closure with the current and
   /// new values for any duplicate keys. Pass a closure as `combine` that
-  /// selects which value to use in the returned dictionary, or to combine the
-  /// values as the dictionary is initialized.
+  /// returns the value to use in the resulting dictionary: The closure can
+  /// choose between the two values, combine them to produce a new value, or
+  /// even throw an error.
   ///
   /// The following example shows how to choose the first and last values for
   /// any duplicate keys:
@@ -1773,7 +1770,7 @@
   ///     // ["b": 4, "a": 3]
   ///
   /// - Parameters:
-  ///   - keysAndValues: A sequence of `(Key, Value)` tuples to use for the new
+  ///   - keysAndValues: A sequence of key-value pairs to use for the new
   ///     dictionary.
   ///   - combine: A closure that is called with the values for any duplicate
   ///     keys that are encountered. The closure returns the desired value for
@@ -1781,21 +1778,21 @@
   public init<S: Sequence>(
     _ keysAndValues: S,
     uniquingKeysWith combine: (Value, Value) throws -> Value
-  ) rethrows where S.Iterator.Element == (Key, Value) {
+  ) rethrows where S.Element == (Key, Value) {
     self = Dictionary(minimumCapacity: keysAndValues.underestimatedCount)
     try _variantBuffer.merge(keysAndValues, uniquingKeysWith: combine)
   }
 
-  /// Creates a new dictionary where the keys are the groupings returned by the
-  /// given closure and the values are arrays of the elements that returned
-  /// each specific key.
+  /// Creates a new dictionary whose keys are the groupings returned by the
+  /// given closure and whose values are arrays of the elements that returned
+  /// each key.
   ///
   /// The arrays in the "values" position of the new dictionary each contain at
   /// least one element, with the elements in the same order as the source
   /// sequence.
   ///
   /// The following example declares an array of names, and then creates a
-  /// dictionary from that array by grouping the names by their first letter:
+  /// dictionary from that array by grouping the names by first letter:
   ///
   ///     let students = ["Kofi", "Abena", "Efua", "Kweku", "Akosua"]
   ///     let studentsByLetter = Dictionary(grouping: students, by: { $0.first! })
@@ -1810,8 +1807,8 @@
   ///     `values`.
   public init<S: Sequence>(
     grouping values: S,
-    by keyForValue: (S.Iterator.Element) throws -> Key
-  ) rethrows where Value == [S.Iterator.Element] {
+    by keyForValue: (S.Element) throws -> Key
+  ) rethrows where Value == [S.Element] {
     self = [:]
     for value in values {
       self[try keyForValue(value), default: []].append(value)
@@ -2081,7 +2078,7 @@
   /// Merges the key-value pairs in the given sequence into the dictionary,
   /// using a combining closure to determine the value for any duplicate keys.
   ///
-  /// Use the `combine` closure to select which value to use in the updated
+  /// Use the `combine` closure to select a value to use in the updated
   /// dictionary, or to combine existing and new values. As the key-value
   /// pairs are merged with the dictionary, the `combine` closure is called
   /// with the current and new values for any duplicate keys that are
@@ -2093,32 +2090,65 @@
   ///     var dictionary = ["a": 1, "b": 2]
   ///
   ///     // Keeping existing value for key "a":
-  ///     dictionary.merge(["a": 3, "c": 4])
-  ///           { (current, _) in current }
+  ///     dictionary.merge(zip(["a", "c"], [3, 4])) { (current, _) in current }
   ///     // ["b": 2, "a": 1, "c": 4]
   ///
   ///     // Taking the new value for key "a":
-  ///     dictionary.merge(["a": 5, "d": 6])
-  ///           { (_, new) in new }
+  ///     dictionary.merge(zip(["a", "d"], [5, 6])) { (_, new) in new }
   ///     // ["b": 2, "a": 5, "c": 4, "d": 6]
   ///
   /// - Parameters:
-  ///   - other:  A sequence of `(Key, Value)` tuples.
+  ///   - other:  A sequence of key-value pairs.
   ///   - combine: A closure that takes the current and new values for any
   ///     duplicate keys. The closure returns the desired value for the final
   ///     dictionary.
   public mutating func merge<S: Sequence>(
     _ other: S,
     uniquingKeysWith combine: (Value, Value) throws -> Value
-  ) rethrows where S.Iterator.Element == (Key, Value) {
+  ) rethrows where S.Element == (Key, Value) {
     try _variantBuffer.merge(other, uniquingKeysWith: combine)
   }
 
-  /// Returns a new dictionary created by merging the key-value pairs in the
-  /// given sequence into the dictionary, using a combining closure to
-  /// determine the value for any duplicate keys.
+  /// Merges the given dictionary into this dictionary, using a combining
+  /// closure to determine the value for any duplicate keys.
   ///
-  /// Use the `combine` closure to select which value to use in the returned
+  /// Use the `combine` closure to select a value to use in the updated
+  /// dictionary, or to combine existing and new values. As the key-values
+  /// pairs in `other` are merged with this dictionary, the `combine` closure
+  /// is called with the current and new values for any duplicate keys that
+  /// are encountered.
+  ///
+  /// This example shows how to choose the current or new values for any
+  /// duplicate keys:
+  ///
+  ///     var dictionary = ["a": 1, "b": 2]
+  ///
+  ///     // Keeping existing value for key "a":
+  ///     dictionary.merge(["a": 3, "c": 4]) { (current, _) in current }
+  ///     // ["b": 2, "a": 1, "c": 4]
+  ///
+  ///     // Taking the new value for key "a":
+  ///     dictionary.merge(["a": 5, "d": 6]) { (_, new) in new }
+  ///     // ["b": 2, "a": 5, "c": 4, "d": 6]
+  ///
+  /// - Parameters:
+  ///   - other:  A dictionary to merge.
+  ///   - combine: A closure that takes the current and new values for any
+  ///     duplicate keys. The closure returns the desired value for the final
+  ///     dictionary.
+  public mutating func merge(
+    _ other: [Key: Value],
+    uniquingKeysWith combine: (Value, Value) throws -> Value) rethrows
+  {
+    try _variantBuffer.merge(
+      other.lazy.map { ($0, $1) }, uniquingKeysWith: combine)
+  }
+
+  /// Creates a dictionary by merging key-value pairs in a sequence into the
+  /// dictionary, using a combining closure to determine the value for
+  /// duplicate keys.
+  ///
+  /// Use the `combine` closure to select a value to use in the returned
   /// dictionary, or to combine existing and new values. As the key-value
   /// pairs are merged with the dictionary, the `combine` closure is called
   /// with the current and new values for any duplicate keys that are
@@ -2128,16 +2158,15 @@
   /// duplicate keys:
   ///
   ///     let dictionary = ["a": 1, "b": 2]
-  ///     let otherDictionary = ["a": 3, "b": 4]
-  ///     let keepingCurrent = dictionary.merging(otherDictionary)
-  ///           { (current, _) in current }
+  ///     let newKeyValues = zip(["a", "b"], [3, 4])
+  ///
+  ///     let keepingCurrent = dictionary.merging(newKeyValues) { (current, _) in current }
   ///     // ["b": 2, "a": 1]
-  ///     let replacingCurrent = dictionary.merging(otherDictionary)
-  ///           { (_, new) in new }
+  ///     let replacingCurrent = dictionary.merging(newKeyValues) { (_, new) in new }
   ///     // ["b": 4, "a": 3]
   ///
   /// - Parameters:
-  ///   - other:  A sequence of `(Key, Value)` tuples.
+  ///   - other:  A sequence of key-value pairs.
   ///   - combine: A closure that takes the current and new values for any
   ///     duplicate keys. The closure returns the desired value for the final
   ///     dictionary.
@@ -2146,7 +2175,46 @@
   public func merging<S: Sequence>(
     _ other: S,
     uniquingKeysWith combine: (Value, Value) throws -> Value
-  ) rethrows -> [Key: Value] where S.Iterator.Element == (Key, Value) {
+  ) rethrows -> [Key: Value] where S.Element == (Key, Value) {
+    var result = self
+    try result._variantBuffer.merge(other, uniquingKeysWith: combine)
+    return result
+  }
+
+  /// Creates a dictionary by merging the given dictionary into this
+  /// dictionary, using a combining closure to determine the value for
+  /// duplicate keys.
+  ///
+  /// Use the `combine` closure to select a value to use in the returned
+  /// dictionary, or to combine existing and new values. As the key-value
+  /// pairs in `other` are merged with this dictionary, the `combine` closure
+  /// is called with the current and new values for any duplicate keys that
+  /// are encountered.
+  ///
+  /// This example shows how to choose the current or new values for any
+  /// duplicate keys:
+  ///
+  ///     let dictionary = ["a": 1, "b": 2]
+  ///     let otherDictionary = ["a": 3, "b": 4]
+  ///
+  ///     let keepingCurrent = dictionary.merging(otherDictionary)
+  ///           { (current, _) in current }
+  ///     // ["b": 2, "a": 1]
+  ///     let replacingCurrent = dictionary.merging(otherDictionary)
+  ///           { (_, new) in new }
+  ///     // ["b": 4, "a": 3]
+  ///
+  /// - Parameters:
+  ///   - other:  A dictionary to merge.
+  ///   - combine: A closure that takes the current and new values for any
+  ///     duplicate keys. The closure returns the desired value for the final
+  ///     dictionary.
+  /// - Returns: A new dictionary with the combined keys and values of this
+  ///   dictionary and `other`.
+  public func merging(
+    _ other: [Key: Value],
+    uniquingKeysWith combine: (Value, Value) throws -> Value
+  ) rethrows -> [Key: Value] {
     var result = self
     try result.merge(other, uniquingKeysWith: combine)
     return result
@@ -2274,8 +2342,6 @@
   ///
   /// - Parameter elements: The key-value pairs that will make up the new
   ///   dictionary. Each key in `elements` must be unique.
-  ///
-  /// - SeeAlso: `ExpressibleByDictionaryLiteral`
   @effects(readonly)
   public init(dictionaryLiteral elements: (Key, Value)...) {
     self.init(_nativeBuffer: _NativeDictionaryBuffer.fromArray(elements))
@@ -4938,7 +5004,7 @@
   internal mutating func nativeMerge<S: Sequence>(
     _ keysAndValues: S,
     uniquingKeysWith combine: (Value, Value) throws -> Value
-  ) rethrows where S.Iterator.Element == (Key, Value) {
+  ) rethrows where S.Element == (Key, Value) {
     for (key, value) in keysAndValues {
       var (i, found) = asNative._find(key, startBucket: asNative._bucket(key))
 
@@ -4969,7 +5035,7 @@
   internal mutating func merge<S: Sequence>(
     _ keysAndValues: S,
     uniquingKeysWith combine: (Value, Value) throws -> Value
-  ) rethrows where S.Iterator.Element == (Key, Value) {
+  ) rethrows where S.Element == (Key, Value) {
     if _fastPath(guaranteedNative) {
       try nativeMerge(keysAndValues, uniquingKeysWith: combine)
       return
@@ -5368,11 +5434,10 @@
 %{
 if Self == 'Set':
   SubscriptingWithIndexDoc = """\
-/// Used to access the members in an instance of `Set<Element>`."""
+/// The position of an element in a set."""
 elif Self == 'Dictionary':
   SubscriptingWithIndexDoc = """\
-/// Used to access the key-value pairs in an instance of
-/// `Dictionary<Key, Value>`.
+/// The position of a key-value pair in a dictionary.
 ///
 /// Dictionary has two subscripting interfaces:
 ///
diff --git a/stdlib/public/core/HeapBuffer.swift b/stdlib/public/core/HeapBuffer.swift
index 71f8a47..7c2e294 100644
--- a/stdlib/public/core/HeapBuffer.swift
+++ b/stdlib/public/core/HeapBuffer.swift
@@ -13,216 +13,74 @@
 import SwiftShims
 typealias _HeapObject = SwiftShims.HeapObject
 
-@_silgen_name("swift_bufferAllocate")
-internal func _swift_bufferAllocate(
-  bufferType type: AnyClass,
-  size: Int,
-  alignmentMask: Int
-) -> AnyObject
-
-/// A class containing an ivar "value" of type Value, and
-/// containing storage for an array of Element whose size is
-/// determined at create time.
-///
-/// The analogous C++-ish class template would be:
-///
-///     template <class Value, class Element>
-///     struct _HeapBuffer {
-///       Value value;
-///       Element baseAddress[];        // length determined at creation time
-///
-///       _HeapBuffer() = delete
-///       static shared_ptr<_HeapBuffer> create(Value init, int capacity);
-///     }
-///
-/// Note that the Element array is RAW MEMORY.  You are expected to
-/// construct and---if necessary---destroy Elements there yourself,
-/// either in a derived class, or it can be in some manager object
-/// that owns the _HeapBuffer.
-public // @testable (test/Prototypes/MutableIndexableDict.swift)
-class _HeapBufferStorage<Value, Element> {
-  public init() {}
-
-  /// The type used to actually manage instances of
-  /// `_HeapBufferStorage<Value, Element>`.
-  typealias Buffer = _HeapBuffer<Value, Element>
-  deinit {
-    Buffer(self)._value.deinitialize()
-  }
-
-  final func __getInstanceSizeAndAlignMask() -> (Int, Int) {
-    return Buffer(self)._allocatedSizeAndAlignMask()
-  }
+internal protocol _HeapBufferHeader_ {
+  associatedtype Value
+  init(_ value: Value)
+  var value: Value { get set }
 }
 
-/// Management API for `_HeapBufferStorage<Value, Element>`
-public // @testable
-struct _HeapBuffer<Value, Element> : Equatable {
-  /// A default type to use as a backing store.
-  typealias Storage = _HeapBufferStorage<Value, Element>
+@_versioned
+internal struct _HeapBufferHeader<T> : _HeapBufferHeader_ {
+  typealias Value = T
+  init(_ value: T) { self.value = value }
+  var value: T
+}
 
-  // _storage is passed inout to _isUnique.  Although its value
-  // is unchanged, it must appear mutable to the optimizer.
-  internal var _storage: Builtin.NativeObject?
+internal typealias _HeapBuffer<Value,Element>
+  = ManagedBufferPointer<_HeapBufferHeader<Value>, Element>
 
-  public // @testable
-  var storage: AnyObject? {
-    return _storage.map { Builtin.castFromNativeObject($0) }
-  }
+internal typealias _HeapBufferStorage<Value,Element>
+  = ManagedBuffer<_HeapBufferHeader<Value>, Element>
 
-  internal static func _valueOffset() -> Int {
-    return _roundUp(
-      MemoryLayout<_HeapObject>.size,
-      toAlignment: MemoryLayout<Value>.alignment)
-  }
+extension ManagedBufferPointer where Header : _HeapBufferHeader_ {
+  typealias Value = Header.Value
 
-  internal static func _elementOffset() -> Int {
-    return _roundUp(
-      _valueOffset() + MemoryLayout<Value>.size,
-      toAlignment: MemoryLayout<Element>.alignment)
-  }
-
-  internal static func _requiredAlignMask() -> Int {
-    // We can't use max here because it can allocate an array.
-    let heapAlign = MemoryLayout<_HeapObject>.alignment &- 1
-    let valueAlign = MemoryLayout<Value>.alignment &- 1
-    let elementAlign = MemoryLayout<Element>.alignment &- 1
-    return (heapAlign < valueAlign
-            ? (valueAlign < elementAlign ? elementAlign : valueAlign)
-            : (heapAlign < elementAlign ? elementAlign : heapAlign))
-  }
-
-  internal var _address: UnsafeMutableRawPointer {
-    return UnsafeMutableRawPointer(
-      Builtin.bridgeToRawPointer(self._nativeObject))
-  }
-
-  internal var _value: UnsafeMutablePointer<Value> {
-    return (_HeapBuffer._valueOffset() + _address).assumingMemoryBound(
-      to: Value.self)
-  }
-
-  public // @testable
-  var baseAddress: UnsafeMutablePointer<Element> {
-    return (_HeapBuffer._elementOffset() + _address).assumingMemoryBound(
-      to: Element.self)
-  }
-
-  internal func _allocatedSize() -> Int {
-    return _swift_stdlib_malloc_size(_address)
-  }
-
-  internal func _allocatedAlignMask() -> Int {
-    return _HeapBuffer._requiredAlignMask()
-  }
-
-  internal func _allocatedSizeAndAlignMask() -> (Int, Int) {
-    return (_allocatedSize(), _allocatedAlignMask())
-  }
-
-  /// Returns the actual number of `Elements` we can possibly store.
-  internal func _capacity() -> Int {
-    return (_allocatedSize() - _HeapBuffer._elementOffset())
-      / MemoryLayout<Element>.stride
-  }
-
-  internal init() {
-    self._storage = nil
-  }
-
-  public // @testable
-  init(_ storage: _HeapBufferStorage<Value, Element>) {
-    self._storage = Builtin.unsafeCastToNativeObject(storage)
-  }
-
-  internal init(_ storage: AnyObject) {
-    _sanityCheck(
-      _usesNativeSwiftReferenceCounting(type(of: storage)),
-      "HeapBuffer manages only native objects"
-    )
-    self._storage = Builtin.unsafeCastToNativeObject(storage)
-  }
-
-  internal init<T : AnyObject>(_ storage: T?) {
-    self = storage.map { _HeapBuffer($0) } ?? _HeapBuffer()
-  }
-
-  internal init(nativeStorage: Builtin.NativeObject?) {
-    self._storage = nativeStorage
-  }
-
-  /// Create a `_HeapBuffer` with `self.value = initializer` and
-  /// `self._capacity() >= capacity`.
-  public // @testable
-  init(
+  @_versioned
+  internal init(
     _ storageClass: AnyClass,
     _ initializer: Value, _ capacity: Int
   ) {
-    _sanityCheck(capacity >= 0, "creating a _HeapBuffer with negative capacity")
-    _sanityCheck(
-      _usesNativeSwiftReferenceCounting(storageClass),
-      "HeapBuffer can only create native objects"
-    )
-
-    let totalSize = _HeapBuffer._elementOffset() +
-        capacity * MemoryLayout<Element>.stride
-    let alignMask = _HeapBuffer._requiredAlignMask()
-
-    let object: AnyObject = _swift_bufferAllocate(
-      bufferType: storageClass,
-      size: totalSize,
-      alignmentMask: alignMask)
-    self._storage = Builtin.unsafeCastToNativeObject(object)
-    self._value.initialize(to: initializer)
-  }
-
-  public // @testable
-  var value: Value {
-    unsafeAddress {
-      return UnsafePointer(_value)
+    self.init(
+      _uncheckedBufferClass: storageClass,
+      minimumCapacity: capacity)
+    self.withUnsafeMutablePointerToHeader {
+      $0.initialize(to: Header(initializer))
     }
-    nonmutating unsafeMutableAddress {
-      return _value
+  }
+  
+  @_versioned
+  internal var value: Value {
+    @inline(__always)
+    get {
+      return header.value
+    }
+    @inline(__always)
+    set {
+      return header.value = newValue
     }
   }
 
-  /// `true` if storage is non-`nil`.
-  internal var hasStorage: Bool {
-    return _storage != nil
-  }
-
+  @_versioned
   internal subscript(i: Int) -> Element {
-    unsafeAddress {
-      return UnsafePointer(baseAddress + i)
-    }
-    nonmutating unsafeMutableAddress {
-      return baseAddress + i
+    @inline(__always)
+    get {
+      return withUnsafeMutablePointerToElements { $0[i] }
     }
   }
 
-  internal var _nativeObject: Builtin.NativeObject {
-    return _storage!
+  @_versioned
+  internal var baseAddress: UnsafeMutablePointer<Element> {
+    @inline(__always)
+    get {
+      return withUnsafeMutablePointerToElements { $0 }
+    }
   }
-
-  internal static func fromNativeObject(_ x: Builtin.NativeObject) -> _HeapBuffer {
-    return _HeapBuffer(nativeStorage: x)
+  
+  @_versioned
+  internal var storage: AnyObject? {
+    @inline(__always)
+    get {
+      return buffer
+    }
   }
-
-  public // @testable
-  mutating func isUniquelyReferenced() -> Bool {
-    return _isUnique(&_storage)
-  }
-
-  public // @testable
-  mutating func isUniquelyReferencedOrPinned() -> Bool {
-    return _isUniqueOrPinned(&_storage)
-  }
-}
-
-// HeapBuffers are equal when they reference the same buffer
-public // @testable
-func == <Value, Element>(
-  lhs: _HeapBuffer<Value, Element>,
-  rhs: _HeapBuffer<Value, Element>) -> Bool {
-  return lhs._nativeObject == rhs._nativeObject
 }
diff --git a/stdlib/public/core/IntegerParsing.swift b/stdlib/public/core/IntegerParsing.swift
index 333a3a1..3c385f1 100644
--- a/stdlib/public/core/IntegerParsing.swift
+++ b/stdlib/public/core/IntegerParsing.swift
@@ -84,6 +84,20 @@
 }
 
 extension FixedWidthInteger {
+  // _parseASCII function thunk that prevents inlining used as an implementation
+  // detail for FixedWidthInteger.init(_: radix:) on the slow path to save code
+  // size.
+  @_semantics("optimize.sil.specialize.generic.partial.never")
+  @inline(never)
+  internal static func _parseASCIISlowPath<
+    CodeUnits : IteratorProtocol, Result: FixedWidthInteger
+  >(
+    codeUnits: inout CodeUnits, radix: Result
+  ) -> Result?
+  where CodeUnits.Element : UnsignedInteger {
+    return _parseASCII(codeUnits: &codeUnits, radix: radix)
+  }
+
   /// Creates a new integer value from the given string and radix.
   ///
   /// The string passed as `text` may begin with a plus or minus sign character
@@ -116,6 +130,7 @@
   ///     `radix`.
   ///   - radix: The radix, or base, to use for converting `text` to an integer
   ///     value. `radix` must be in the range `2...36`. The default is 10.
+  @_semantics("optimize.sil.specialize.generic.partial.never")
   public init?/*<S : StringProtocol>*/(_ text: String, radix: Int = 10) {
     _precondition(2...36 ~= radix, "Radix not in range 2...36")
     let r = Self(radix)
@@ -126,7 +141,7 @@
     let result: Self?
     if _slowPath(c._baseAddress == nil) {
       var i = s.utf16.makeIterator()
-      result = _parseASCII(codeUnits: &i, radix: r)
+      result = Self._parseASCIISlowPath(codeUnits: &i, radix: r)
     }
     else if _fastPath(c.elementWidth == 1), let a = c.asciiBuffer {
       var i = a.makeIterator()
@@ -135,7 +150,7 @@
     else {
       let b = UnsafeBufferPointer(start: c.startUTF16, count: c.count)
       var i = b.makeIterator()
-      result = _parseASCII(codeUnits: &i, radix: r)
+      result = Self._parseASCIISlowPath(codeUnits: &i, radix: r)
     }
     guard _fastPath(result != nil) else { return nil }
     self = result!
diff --git a/stdlib/public/core/Integers.swift.gyb b/stdlib/public/core/Integers.swift.gyb
index 287f5b2..77f3533 100644
--- a/stdlib/public/core/Integers.swift.gyb
+++ b/stdlib/public/core/Integers.swift.gyb
@@ -260,8 +260,6 @@
   /// - Parameters:
   ///   - lhs: The first value to add.
   ///   - rhs: The second value to add.
-  ///
-  /// - SeeAlso: `+`
 """,
         '&-': """\
   /// Returns the difference of the two given values, discarding any overflow.
@@ -279,8 +277,6 @@
   /// - Parameters:
   ///   - lhs: A numeric value.
   ///   - rhs: The value to subtract from `lhs`.
-  ///
-  /// - SeeAlso: `-`
 """,
         '&*': """\
   /// Returns the product of the two given values, discarding any overflow.
@@ -375,8 +371,6 @@
   ///   - rhs: The number of bits to shift `lhs` to the right. If `rhs` is
   ///     outside the range `0..<lhs.bitWidth`, it is masked to produce a
   ///     value within that range.
-  ///
-  /// - SeeAlso: `>>`, `&<<`
 """,
         '&<<': """\
   /// Returns the result of shifting a value's binary representation the
@@ -406,8 +400,6 @@
   ///   - rhs: The number of bits to shift `lhs` to the left. If `rhs` is
   ///     outside the range `0..<lhs.bitWidth`, it is masked to produce a
   ///     value within that range.
-  ///
-  /// - SeeAlso: `<<`, `&>>`
 """,
         '>>': """\
   /// Returns the result of shifting a value's binary representation the
@@ -459,8 +451,6 @@
   /// - Parameters:
   ///   - lhs: The value to shift.
   ///   - rhs: The number of bits to shift `lhs` to the right.
-  ///
-  /// - SeeAlso: `<<`
 """,
         '<<': """\
   /// Returns the result of shifting a value's binary representation the
@@ -501,8 +491,6 @@
   /// - Parameters:
   ///   - lhs: The value to shift.
   ///   - rhs: The number of bits to shift `lhs` to the left.
-  ///
-  /// - SeeAlso: `>>`
 """,
   }
     return comments[operator]
@@ -681,8 +669,6 @@
   ///   - rhs: The number of bits to shift `lhs` to the right. If `rhs` is
   ///     outside the range `0..<lhs.bitWidth`, it is masked to produce a
   ///     value within that range.
-  ///
-  /// - SeeAlso: `>>=`, `&<<=`
 """,
         '&<<': """\
   /// Returns the result of shifting a value's binary representation the
@@ -713,8 +699,6 @@
   ///   - rhs: The number of bits to shift `lhs` to the left. If `rhs` is
   ///     outside the range `0..<lhs.bitWidth`, it is masked to produce a
   ///     value within that range.
-  ///
-  /// - SeeAlso: `<<=`, `&>>=`
 """,
         '>>': """\
   /// Stores the result of shifting a value's binary representation the
@@ -771,8 +755,6 @@
   /// - Parameters:
   ///   - lhs: The value to shift.
   ///   - rhs: The number of bits to shift `lhs` to the right.
-  ///
-  /// - SeeAlso: `<<=`
 """,
         '<<': """\
   /// Stores the result of shifting a value's binary representation the
@@ -817,8 +799,6 @@
   /// - Parameters:
   ///   - lhs: The value to shift.
   ///   - rhs: The number of bits to shift `lhs` to the left.
-  ///
-  /// - SeeAlso: `>>=`
 """,
   }
     return comments[operator]
@@ -867,8 +847,6 @@
   ///   product. If the `overflow` component is `.overflow`, an overflow
   ///   occurred and the `partialValue` component contains the truncated
   ///   product of this value and `rhs`.
-  ///
-  /// - SeeAlso: `multipliedFullWidth(by:)`
 """,
         '/': """\
   /// Returns the quotient of dividing this value by the given value along with
@@ -883,8 +861,6 @@
   ///   is `.none`, the `partialValue` component contains the entire quotient.
   ///   If the `overflow` component is `.overflow`, an overflow occurred and
   ///   the `partialValue` component contains the truncated quotient.
-  ///
-  /// - SeeAlso: `doubleWidthDivide(_:_:)`
 """,
         '%': """\
   // FIXME(integers): the comment is for division instead of remainder
@@ -900,8 +876,6 @@
   ///   is `.none`, the `partialValue` component contains the entire quotient.
   ///   If the `overflow` component is `.overflow`, an overflow occurred and
   ///   the `partialValue` component contains the truncated quotient.
-  ///
-  /// - SeeAlso: `doubleWidthDivide(_:_:)`
 """,
     }
     return comments[operator]
@@ -1040,8 +1014,6 @@
   /// to find an absolute value. In addition, because `abs(_:)` always returns
   /// a value of the same type, even in a generic context, using the function
   /// instead of the `magnitude` property is encouraged.
-  ///
-  /// - SeeAlso: `abs(_:)`
   var magnitude: Magnitude { get }
 
 % for x in binaryArithmetic['Numeric']:
@@ -1112,8 +1084,6 @@
   ///     // Overflow error
   ///
   /// - Returns: The additive inverse of this value.
-  ///
-  /// - SeeAlso: `negate()`
   static prefix func - (_ operand: Self) -> Self
 
   /// Replaces this value with its additive inverse.
@@ -1124,8 +1094,6 @@
   ///     var x = 21
   ///     x.negate()
   ///     // x == -21
-  ///
-  /// - SeeAlso: The unary minus operator (`-`).
   mutating func negate()
 }
 
@@ -1339,8 +1307,9 @@
 ///     }
 ///     // Prints "23 is greater than -23."
 public protocol BinaryInteger :
-  Hashable, Numeric, CustomStringConvertible, Strideable {
-
+  Hashable, Numeric, CustomStringConvertible, Strideable
+  where Magnitude : BinaryInteger, Magnitude.Magnitude == Magnitude
+{
   /// A Boolean value indicating whether this type is a signed integer type.
   ///
   /// *Signed* integer types can represent both positive and negative values.
@@ -2021,7 +1990,9 @@
 /// customization points for arithmetic operations. When you provide just those
 /// methods, the standard library provides default implementations for all
 /// other arithmetic methods and operators.
-public protocol FixedWidthInteger : BinaryInteger, _BitwiseOperations {
+public protocol FixedWidthInteger : BinaryInteger, _BitwiseOperations
+  where Magnitude : FixedWidthInteger
+{
   /// The number of bits used for the underlying binary representation of
   /// values of this type.
   ///
@@ -2083,8 +2054,6 @@
   ///   - other: A value to multiply `self` by.
   /// - Returns: A tuple containing the high and low parts of the result of
   ///   multiplying `self` and `other`.
-  ///
-  /// - SeeAlso: `multipliedReportingOverflow(by:)`
   // FIXME(integers): figure out how to return DoubleWidth<Self> or correct the
   // doc comment
   func multipliedFullWidth(by other: Self) -> (high: Self, low: Self.Magnitude)
@@ -2146,8 +2115,6 @@
   /// If necessary, the byte order of this value is reversed from the typical
   /// byte order of this integer type. On a big-endian platform, for any
   /// integer `x`, `x == x.bigEndian`.
-  ///
-  /// - SeeAlso: `littleEndian`
   var bigEndian: Self { get }
 
   /// The little-endian representation of this integer.
@@ -2155,8 +2122,6 @@
   /// If necessary, the byte order of this value is reversed from the typical
   /// byte order of this integer type. On a little-endian platform, for any
   /// integer `x`, `x == x.littleEndian`.
-  ///
-  /// - SeeAlso: `bigEndian`
   var littleEndian: Self { get }
 
   /// A representation of this integer with the byte order swapped.
@@ -2187,6 +2152,37 @@
   @_inlineable
   public var bitWidth: Int { return Self.bitWidth }
 
+  public init(littleEndian value: Self) {
+#if _endian(little)
+    self = value
+#else
+    self = value.byteSwapped
+#endif
+  }
+  
+  public init(bigEndian value: Self) {
+#if _endian(big)
+    self = value
+#else
+    self = value.byteSwapped
+#endif
+  }
+  
+  public var littleEndian: Self {
+#if _endian(little)
+    return self
+#else
+    return byteSwapped
+#endif
+  }
+  
+  public var bigEndian: Self {
+#if _endian(big)
+    return self
+#else
+    return byteSwapped
+#endif
+  }
 }
 
 //===----------------------------------------------------------------------===//
@@ -2271,6 +2267,7 @@
 }
 
 extension FixedWidthInteger {
+  @_semantics("optimize.sil.specialize.generic.partial.never")
   public init<Other: BinaryInteger>(clamping source: Other) {
     if _slowPath(source < Self.min) {
       self = Self.min
@@ -2361,8 +2358,7 @@
 //===----------------------------------------------------------------------===//
 
 /// An integer type that can represent only nonnegative values.
-public protocol UnsignedInteger : BinaryInteger
-  where Magnitude : BinaryInteger { }
+public protocol UnsignedInteger : BinaryInteger { }
 
 extension UnsignedInteger {
   /// The magnitude of this value.
@@ -2374,8 +2370,6 @@
   /// to find an absolute value. In addition, because `abs(_:)` always returns
   /// a value of the same type, even in a generic context, using the function
   /// instead of the `magnitude` property is encouraged.
-  ///
-  /// - SeeAlso: `abs(_:)`
   @_transparent
   public var magnitude: Self { return self }
 
@@ -2416,6 +2410,7 @@
 }
 
 extension UnsignedInteger where Self : FixedWidthInteger {
+  @_semantics("optimize.sil.specialize.generic.partial.never")
   @inline(__always)
   public init<T : BinaryInteger>(_ source: T) {
     // This check is potentially removable by the optimizer
@@ -2430,6 +2425,7 @@
     self.init(extendingOrTruncating: source)
   }
 
+  @_semantics("optimize.sil.specialize.generic.partial.never")
   @inline(__always)
   public init?<T : BinaryInteger>(exactly source: T) {
     // This check is potentially removable by the optimizer
@@ -2468,8 +2464,7 @@
 //===----------------------------------------------------------------------===//
 
 /// An integer type that can represent both positive and negative values.
-public protocol SignedInteger : BinaryInteger, SignedNumeric
-    where Magnitude : BinaryInteger {
+public protocol SignedInteger : BinaryInteger, SignedNumeric {
   // These requirements are for the source code compatibility with Swift 3
   static func _maskingAdd(_ lhs: Self, _ rhs: Self) -> Self
   static func _maskingSubtract(_ lhs: Self, _ rhs: Self) -> Self
@@ -2494,6 +2489,7 @@
 }
 
 extension SignedInteger where Self : FixedWidthInteger {
+  @_semantics("optimize.sil.specialize.generic.partial.never")
   @inline(__always)
   public init<T : BinaryInteger>(_ source: T) {
     // This check is potentially removable by the optimizer
@@ -2510,6 +2506,7 @@
     self.init(extendingOrTruncating: source)
   }
 
+  @_semantics("optimize.sil.specialize.generic.partial.never")
   @inline(__always)
   public init?<T : BinaryInteger>(exactly source: T) {
     // This check is potentially removable by the optimizer
@@ -2597,9 +2594,10 @@
 
 %   if Self in ['Int32', 'Int64']:
 %     Floating = {32 : 'Float', 64 : 'Double'}[bits]
-  @_transparent
+  @available(*, unavailable,
+    message: "Please use ${Self}(bitPattern: ${OtherSelf}) in combination with ${Floating}.bitPattern property.")
   public init(bitPattern x: ${Floating}) {
-    _value = Builtin.bitcast_FPIEEE${bits}_Int${bits}(x._value)
+    Builtin.unreachable()
   }
 %   end
 
@@ -2841,16 +2839,13 @@
   // FIXME(integers): tests
   public func multipliedFullWidth(by other: ${Self})
   -> (high: ${Self}, low: ${Self}.Magnitude) {
-    // FIXME(integers): properly replace rhs and lhs with self and other
-    let lhs = self
-    let rhs = other
 %   # 128 bit types are not provided by the 32-bit LLVM
 %   if word_bits == 32 and bits == 64:
     // FIXME(integers): implement
     fatalError("Operation is not supported")
 %   else:
-    let lhs_ = Builtin.${z}ext_Int${bits}_Int${dbits}(lhs._value)
-    let rhs_ = Builtin.${z}ext_Int${bits}_Int${dbits}(rhs._value)
+    let lhs_ = Builtin.${z}ext_Int${bits}_Int${dbits}(self._value)
+    let rhs_ = Builtin.${z}ext_Int${bits}_Int${dbits}(other._value)
 
     let res = Builtin.mul_Int${dbits}(lhs_, rhs_)
     let low = ${Self}.Magnitude(Builtin.truncOrBitCast_Int${dbits}_Int${bits}(res))
@@ -2865,23 +2860,24 @@
   public func dividingFullWidth(
     _ dividend: (high: ${Self}, low: ${Self}.Magnitude)
   ) -> (quotient: ${Self}, remainder: ${Self}) {
-    // FIXME(integers): properly rename lhs to dividend and rhs to self.
-    let lhs = dividend
-    let rhs = self
-
 %   # 128 bit types are not provided by the 32-bit LLVM
-%   if word_bits == 32 and bits == 64:
-    // FIXME(integers): implement
-    fatalError("Operation is not supported")
+%   #if word_bits == 32 and bits == 64:
+%   if bits == 64:
+    let lhs = DoubleWidth<${Self}>(dividend)
+    let rhs = DoubleWidth<${Self}>(self)
+
+    let (quotient, remainder) = lhs.quotientAndRemainder(dividingBy: rhs)
+    // FIXME(integers): check for high words in quotient and remainder
+    return (${Self}(quotient.low), ${Self}(remainder.low))
 %   else:
     // FIXME(integers): handle division by zero and overflows
-    _precondition(rhs != 0, "Division by zero")
-    let lhsHigh = Builtin.${z}ext_Int${bits}_Int${dbits}(lhs.high._value)
+    _precondition(self != 0, "Division by zero")
+    let lhsHigh = Builtin.${z}ext_Int${bits}_Int${dbits}(dividend.high._value)
     let shift = Builtin.zextOrBitCast_Int8_Int${dbits}(UInt8(${bits})._value)
     let lhsHighShifted = Builtin.shl_Int${dbits}(lhsHigh, shift)
-    let lhsLow = Builtin.zext_Int${bits}_Int${dbits}(lhs.low._value)
+    let lhsLow = Builtin.zext_Int${bits}_Int${dbits}(dividend.low._value)
     let lhs_ = Builtin.or_Int${dbits}(lhsHighShifted, lhsLow)
-    let rhs_ = Builtin.${z}ext_Int${bits}_Int${dbits}(rhs._value)
+    let rhs_ = Builtin.${z}ext_Int${bits}_Int${dbits}(self._value)
 
     let quotient_ = Builtin.${u}div_Int${dbits}(lhs_, rhs_)
     let remainder_ = Builtin.${u}rem_Int${dbits}(lhs_, rhs_)
@@ -2895,87 +2891,8 @@
 %   end
   }
 
-  /// Creates an integer using the specified big-endian representation,
-  /// changing the byte order if necessary.
-  ///
-  /// On a big-endian platform, for any integer `x`,
-  /// `x == ${Self}(bigEndian: x)`.
-  ///
-  /// - Parameter value: A value to use as the big-endian representation of the
-  ///   new integer.
-  @_transparent
-  public init(bigEndian value: ${Self}) {
-%   if bits <= 8:
-    self = value
-%   else:
-#if _endian(big)
-    self = value
-#else
-    self = ${Self}(Builtin.int_bswap_${BuiltinName}(value._value) )
-#endif
-%   end
-  }
-
-  /// Creates an integer using the specified little-endian representation,
-  /// changing the byte order if necessary.
-  ///
-  /// On a little-endian platform, for any integer `x`,
-  /// `x == ${Self}(littleEndian: x)`.
-  ///
-  /// - Parameter value: A value to use as the little-endian representation of
-  ///   the new integer.
-  @_transparent
-  public init(littleEndian value: ${Self}) {
-%   if bits <= 8:
-    self = value
-%   else:
-#if _endian(little)
-    self = value
-#else
-    self = ${Self}(Builtin.int_bswap_${BuiltinName}(value._value) )
-#endif
-%   end
-  }
-
-  /// The big-endian representation of this integer.
-  ///
-  /// If necessary, the byte order of this value is reversed from the typical
-  /// byte order of this integer type. On a big-endian platform, for any
-  /// integer `x`, `x == x.bigEndian`.
-  ///
-  /// - SeeAlso: `littleEndian`
-  public var bigEndian: ${Self} {
-%   if bits <= 8:
-    return self
-%   else:
-#if _endian(big)
-    return self
-#else
-    return ${Self}(Builtin.int_bswap_${BuiltinName}(_value))
-#endif
-%   end
-  }
-
-  /// The little-endian representation of this integer.
-  ///
-  /// If necessary, the byte order of this value is reversed from the typical
-  /// byte order of this integer type. On a little-endian platform, for any
-  /// integer `x`, `x == x.littleEndian`.
-  ///
-  /// - SeeAlso: `bigEndian`
-  public var littleEndian: ${Self} {
-%   if bits <= 8:
-    return self
-%   else:
-#if _endian(little)
-    return self
-#else
-    return ${Self}(Builtin.int_bswap_${BuiltinName}(_value))
-#endif
-%   end
-  }
-
   /// A representation of this integer with the byte order swapped.
+  @_transparent
   public var byteSwapped: ${Self} {
 %   if bits <= 8:
     return self
@@ -3201,291 +3118,6 @@
   return U(x)
 }
 
-
-//===----------------------------------------------------------------------===//
-//===--- DoubleWidth ------------------------------------------------------===//
-//===----------------------------------------------------------------------===//
-
-public struct DoubleWidth<T : FixedWidthInteger>
-  : FixedWidthInteger, _ExpressibleByBuiltinIntegerLiteral
-  where
-  T.Magnitude : FixedWidthInteger,
-  T.Magnitude.Magnitude == T.Magnitude {
-
-  public typealias High = T
-  public typealias Low = T.Magnitude
-
-  internal var _storage: (high: T, low: T.Magnitude)
-
-  internal init(_ _value: (High, Low)) {
-    self._storage = (high: _value.0, low: _value.1)
-  }
-
-  public var high: High {
-    return _storage.high
-  }
-
-  public var low: Low {
-    return _storage.low
-  }
-
-  // Numeric
-  //
-  public init() {
-    self.init((High(), Low()))
-  }
-
-  // integer
-  //
-  public var magnitude: DoubleWidth<Low> {
-    if T.isSigned && _storage.high < 0 {
-        return (DoubleWidth<T>() - self).magnitude
-    }
-    return DoubleWidth<Low>((
-      _storage.high.magnitude, _storage.low.magnitude))
-  }
-
-  public func isEqual(to rhs: DoubleWidth<T>) -> Bool {
-    return (_storage.high == rhs._storage.high) &&
-           (_storage.low == rhs._storage.low)
-  }
-
-  public func isLess(than rhs: DoubleWidth<T>) -> Bool {
-    if _storage.high < rhs._storage.high {
-      return true
-    }
-    if (_storage.high > rhs._storage.high) {
-      return false
-    }
-    return _storage.low < rhs._storage.low
-  }
-
-  public init<T : BinaryInteger>(_ source: T) {
-    fatalError()
-  }
-
-  public init?<T : BinaryInteger>(exactly source: T) {
-    fatalError()
-  }
-
-  public init<T : BinaryInteger>(extendingOrTruncating source: T) {
-    fatalError()
-  }
-
-  public init<T : FloatingPoint>(_ source: T) {
-    fatalError()
-  }
-
-  public init?<T : FloatingPoint>(exactly source: T) {
-    fatalError()
-  }
-
-  public func _word(at n: Int) -> UInt {
-    if T.bitWidth < ${word_bits} || T.bitWidth % ${word_bits} != 0 {
-      fatalError("_word(at:) is not supported on this type")
-    }
-    // TODO: move to Int128 just like init(_builtinIntegerLiteral:) ?
-    let wordsInT = T.bitWidth / ${word_bits}
-    return (n < wordsInT) ?
-      _storage.low._word(at: n) :
-      _storage.high._word(at: n - wordsInT)
-  }
-
-  public static var isSigned: Bool {
-    return T.isSigned
-  }
-
-  // fixed width
-  //
-  public static var max: DoubleWidth<T> {
-    return self.init((High.max, Low.max))
-  }
-
-  public static var min: DoubleWidth<T> {
-    return self.init((High.min, Low.min))
-  }
-
-  public static var bitWidth : Int { return 2 * T.bitWidth }
-
-% # This covers + and -
-% for x in binaryArithmetic['Numeric'][:2]:
-%   highAffectedByLowOverflow = 'T.max' if x.operator == '+' else 'T.min'
-  public func ${x.name}ReportingOverflow(_ rhs: DoubleWidth<T>)
-    -> (partialValue: DoubleWidth<T>, overflow: ArithmeticOverflow) {
-    let (low, lowOverflow) =
-      _storage.low.${x.name}ReportingOverflow(rhs._storage.low)
-    let (high, highOverflow) =
-      _storage.high.${x.name}ReportingOverflow(rhs._storage.high)
-    let isLowOverflow = lowOverflow == .overflow
-    let result = (high ${x.operator} (isLowOverflow ? 1 : 0), low)
-    let overflow = ArithmeticOverflow(
-      highOverflow == .overflow ||
-      high == ${highAffectedByLowOverflow} && isLowOverflow
-    )
-    return (partialValue: DoubleWidth<T>(result),
-      overflow: overflow)
-  }
-% end
-
-
-  public func multipliedReportingOverflow(
-    by rhs: DoubleWidth<T>
-  ) -> (partialValue: DoubleWidth<T>, overflow: ArithmeticOverflow) {
-    let isNegative = (self < DoubleWidth<T>()) != (rhs < DoubleWidth<T>())
-
-    func mul(_ x: Low, _ y: Low, _ carry: Low) -> (partial: Low, carry: Low) {
-      let pair = x.multipliedFullWidth(by: y)
-      let t = DoubleWidth<Low>(pair) + DoubleWidth<Low>((0, carry))
-      return (partial: t._storage.low, carry: t._storage.high)
-    }
-
-    var high: Low = 0
-    var low: Low = 0
-
-    func mkResult(_ isOverflow: Bool)
-      -> (partialValue: DoubleWidth<T>, overflow: ArithmeticOverflow) {
-
-      // TODO: High() cast fails
-      let result = DoubleWidth<T>((High(high), low))
-      if isNegative {
-        return DoubleWidth<T>().subtractingReportingOverflow(result)
-      }
-      return (partialValue: result, overflow: ArithmeticOverflow(isOverflow))
-    }
-
-    var carry: Low = 0
-
-    let lhs = self.magnitude
-    let rhs = rhs.magnitude
-
-    // TODO: gyb me!
-    let a = mul(rhs._storage.low, lhs._storage.low, carry)
-    low += a.partial
-    carry = a.carry
-    /*_log("(II) 1 (\(high), \(low)) carry: \(carry)")*/
-
-    let b = mul(rhs._storage.low, lhs._storage.high, carry)
-    high += b.partial
-    carry = b.carry
-    /*_log("(II) 2 (\(high), \(low)) carry: \(carry)")*/
-
-    if carry != 0 {
-      /*_log("(EE) overflow")*/
-      return mkResult(true)
-    }
-
-    let c = mul(rhs._storage.high, lhs._storage.low, carry)
-    low += c.partial
-    carry = c.carry
-    /*_log("(II) 3 (\(high), \(low)) carry: \(carry)")*/
-
-    let d = mul(rhs._storage.high, lhs._storage.high, carry)
-    high += d.partial
-    carry = d.carry
-    /*_log("(II) 4 (\(high), \(low)) carry: \(carry)")*/
-
-    /*if (carry > 0) { _log("(EE) overflow") }*/
-    return mkResult(carry > 0)
-  }
-
-  public func dividedReportingOverflow(by other: DoubleWidth<T>)
-    -> (partialValue: DoubleWidth<T>, overflow: ArithmeticOverflow) {
-    fatalError()
-  }
-
-  public func remainderReportingOverflow(dividingBy other: DoubleWidth<T>)
-    -> (partialValue: DoubleWidth<T>, overflow: ArithmeticOverflow) {
-    fatalError()
-  }
-
-  public func multipliedFullWidth(by other: DoubleWidth<T>)
-    -> (high: DoubleWidth<T>, low: DoubleWidth<T>.Magnitude) {
-    fatalError()
-  }
-
-  public func dividingFullWidth(
-    _ dividend: (high: DoubleWidth<T>, low: DoubleWidth<T>.Magnitude)
-  ) -> (quotient: DoubleWidth<T>, remainder: DoubleWidth<T>) {
-    fatalError()
-  }
-
-% for x in binaryBitwise + maskingShifts:
-  public static func ${x.operator}=(
-    lhs: inout DoubleWidth<T>, rhs: DoubleWidth<T>
-  ) {
-    fatalError()
-  }
-% end
-
-% for x in chain(*binaryArithmetic.values()):
-
-  // FIXME(integers): remove this once the operators are back to Numeric
-  public static func ${x.operator} (
-    lhs: DoubleWidth<T>, rhs: DoubleWidth<T>
-  ) -> DoubleWidth<T> {
-    var lhs = lhs
-    lhs ${x.operator}= rhs
-    return lhs
-  }
-
-  public static func ${x.operator}=(
-    lhs: inout DoubleWidth<T>, rhs: DoubleWidth<T>
-  ) {
-    fatalError()
-  }
-% end
-
-  public init(_truncatingBits bits: UInt) {
-    fatalError()
-  }
-
-  // other
-  //
-  public init(_builtinIntegerLiteral x: _MaxBuiltinIntegerType) {
-    fatalError("Method must be overridden")
-  }
-
-  public var description: String {
-    return "(\(_storage.high), \(_storage.low))"
-  }
-
-  public var leadingZeroBitCount: Int {
-    fatalError()
-  }
-
-  public var trailingZeroBitCount: Int {
-    fatalError()
-  }
-
-  public var nonzeroBitCount: Int {
-    fatalError()
-  }
-
-  public var hashValue: Int {
-    fatalError()
-  }
-
-  public init(littleEndian: DoubleWidth<T>) {
-    fatalError()
-  }
-
-  public init(bigEndian: DoubleWidth<T>) {
-    fatalError()
-  }
-
-  public var littleEndian: DoubleWidth<T> {
-    fatalError()
-  }
-
-  public var bigEndian: DoubleWidth<T> {
-    fatalError()
-  }
-
-  public var byteSwapped: DoubleWidth<T> {
-    fatalError()
-  }
-}
-
 // FIXME(integers): switch to using `FixedWidthInteger.unsafeAdding`
 internal func _unsafePlus(_ lhs: Int, _ rhs: Int) -> Int {
 #if INTERNAL_CHECKS_ENABLED
@@ -3506,23 +3138,23 @@
 
 // Swift 3 compatibility APIs
 
-@available(swift, obsoleted: 4)
+@available(swift, obsoleted: 4, renamed: "BinaryInteger")
 public typealias Integer = BinaryInteger
 
-@available(swift, obsoleted: 4)
+@available(swift, obsoleted: 4, renamed: "BinaryInteger")
 public typealias IntegerArithmetic = BinaryInteger
 
-@available(swift, obsoleted: 4)
+@available(swift, obsoleted: 4, message: "Please use 'SignedNumeric & Comparable' instead.")
 public typealias SignedNumber = SignedNumeric & Comparable
 
-@available(swift, obsoleted: 4)
+@available(swift, obsoleted: 4, message: "Please use 'SignedNumeric & Comparable' instead.")
 public typealias AbsoluteValuable = SignedNumeric & Comparable
 
-@available(swift, obsoleted: 4)
+@available(swift, obsoleted: 4, renamed: "SignedInteger")
 public typealias _SignedInteger = SignedInteger
 
 extension SignedNumeric where Self : Comparable {
-  @available(swift, obsoleted: 4)
+  @available(swift, obsoleted: 4, message: "Please use the 'abs(_:)' free function.")
   @_transparent
   public static func abs(_ x: Self) -> Self {
     return Swift.abs(x)
@@ -3576,14 +3208,18 @@
 
 }
 
+%{
+overflowingOps = [
+  ('add', 'adding', ''),
+  ('subtract', 'subtracting', ''),
+  ('multiply', 'multiplied', 'by:'),
+  ('divide', 'divided', 'by:'),
+  ('remainder', 'remainder', 'dividingBy:'),
+]
+}%
+
 extension FixedWidthInteger {
-% for oldPrefix, newPrefix, argLabel in [
-%   ('add', 'adding', ''),
-%   ('subtract', 'subtracting', ''),
-%   ('multiply', 'multiplied', 'by:'),
-%   ('divide', 'divided', 'by:'),
-%   ('remainder', 'remainder', 'dividingBy:'),
-%   ]:
+% for oldPrefix, newPrefix, argLabel in overflowingOps:
   @available(swift, obsoleted: 4, message: "Use ${newPrefix}ReportingOverflow(${argLabel or '_:'}) instead.")
   @_transparent
   public static func ${oldPrefix}WithOverflow(
@@ -3597,6 +3233,18 @@
 % end
 }
 
+extension BinaryInteger {
+% for oldPrefix, newPrefix, argLabel in overflowingOps:
+  @available(swift, obsoleted: 3.2,
+    message: "Please use FixedWidthInteger protocol as a generic constraint and ${newPrefix}ReportingOverflow(${argLabel or '_:'}) method instead.")
+  public static func ${oldPrefix}WithOverflow(
+    _ lhs: Self, _ rhs: Self
+  ) -> (Self, overflow: Bool) {
+    fatalError("Unavailable")
+  }
+% end
+}
+
 // FIXME(integers): Absence of &+ causes ambiguity in the code like the
 // following:
 //    func f<T : SignedInteger>(_ x: T, _ y: T) {
@@ -3615,7 +3263,8 @@
     fatalError("Should be overridden in a more specific type")
   }
 
-  @available(swift, obsoleted: 4.0)
+  @available(swift, obsoleted: 4.0,
+      message: "Please use 'FixedWidthInteger' instead of 'SignedInteger' to get '${op}' in generic code.")
   public static func ${op} (lhs: Self, rhs: Self) -> Self {
     return ${helper}(lhs, rhs)
   }
diff --git a/stdlib/public/core/Join.swift b/stdlib/public/core/Join.swift
index 017f375..0f1e66b 100644
--- a/stdlib/public/core/Join.swift
+++ b/stdlib/public/core/Join.swift
@@ -166,8 +166,6 @@
   /// - Parameter separator: A sequence to insert between each of this
   ///   sequence's elements.
   /// - Returns: The joined sequence of elements.
-  ///
-  /// - SeeAlso: `joined()`
   public func joined<Separator : Sequence>(
     separator: Separator
   ) -> JoinedSequence<Self>
diff --git a/stdlib/public/core/KeyPath.swift b/stdlib/public/core/KeyPath.swift
index bec387d..632e9ca 100644
--- a/stdlib/public/core/KeyPath.swift
+++ b/stdlib/public/core/KeyPath.swift
@@ -614,8 +614,11 @@
     static var outOfLineOffsetPayload: UInt32 {
       return _SwiftKeyPathComponentHeader_OutOfLineOffsetPayload
     }
-    static var unresolvedOffsetPayload: UInt32 {
-      return _SwiftKeyPathComponentHeader_UnresolvedOffsetPayload
+    static var unresolvedFieldOffsetPayload: UInt32 {
+      return _SwiftKeyPathComponentHeader_UnresolvedFieldOffsetPayload
+    }
+    static var unresolvedIndirectOffsetPayload: UInt32 {
+      return _SwiftKeyPathComponentHeader_UnresolvedIndirectOffsetPayload
     }
     static var computedMutatingFlag: UInt32 {
       return _SwiftKeyPathComponentHeader_ComputedMutatingFlag
@@ -1613,10 +1616,13 @@
     let header = buffer.pop(RawKeyPathComponent.Header.self)
 
     func popOffset() {
-      if header.payload == RawKeyPathComponent.Header.unresolvedOffsetPayload
+      if header.payload == RawKeyPathComponent.Header.unresolvedFieldOffsetPayload
         || header.payload == RawKeyPathComponent.Header.outOfLineOffsetPayload {
         _ = buffer.pop(UInt32.self)
       }
+      if header.payload == RawKeyPathComponent.Header.unresolvedIndirectOffsetPayload {
+        _ = buffer.pop(Int.self)
+      }
     }
 
     switch header.kind {
@@ -1712,6 +1718,12 @@
     count: origDestData.count - MemoryLayout<KeyPathBuffer.Header>.size)
 
   func pushDest<T>(_ value: T) {
+    // TODO: If key path patterns were better optimized to try to be constant-
+    // memory objects, then it might become profitable to try to avoid writes
+    // here in the case when the dest memory contains the value we want to write
+    // here so that we don't dirty memory. (In practice the current
+    // implementation will always dirty the page when the key path is
+    // instantiated.)
     _sanityCheck(_isPOD(T.self))
     var value2 = value
     let size = MemoryLayout<T>.size
@@ -1729,12 +1741,15 @@
 
   // Instantiate components that need it.
   var base: Any.Type = rootType
+  // Some pattern forms are pessimistically larger than what we need in the
+  // instantiated key path. Keep track of this.
+  var shrinkage = 0
   while true {
     let componentAddr = destData.baseAddress.unsafelyUnwrapped
     let header = patternBuffer.pop(RawKeyPathComponent.Header.self)
 
     func tryToResolveOffset() {
-      if header.payload == RawKeyPathComponent.Header.unresolvedOffsetPayload {
+      if header.payload == RawKeyPathComponent.Header.unresolvedFieldOffsetPayload {
         // Look up offset in type metadata. The value in the pattern is the
         // offset within the metadata object.
         let metadataPtr = unsafeBitCast(base, to: UnsafeRawPointer.self)
@@ -1749,6 +1764,21 @@
         return
       }
 
+      if header.payload == RawKeyPathComponent.Header.unresolvedIndirectOffsetPayload {
+        // Look up offset in the indirectly-referenced variable we have a
+        // pointer.
+        let offsetVar = patternBuffer.pop(UnsafeRawPointer.self)
+        let offsetValue = UInt32(offsetVar.load(as: UInt.self))
+        // Rewrite the header for a resolved offset.
+        var newHeader = header
+        newHeader.payload = RawKeyPathComponent.Header.outOfLineOffsetPayload
+        pushDest(newHeader)
+        pushDest(offsetValue)
+        shrinkage += MemoryLayout<UnsafeRawPointer>.size
+                   - MemoryLayout<UInt32>.size
+        return
+      }
+
       // Otherwise, just transfer the pre-resolved component.
       pushDest(header)
       if header.payload == RawKeyPathComponent.Header.outOfLineOffsetPayload {
@@ -1846,10 +1876,11 @@
   }
 
   // We should have traversed both buffers.
-  _sanityCheck(patternBuffer.data.isEmpty && destData.isEmpty)
+  _sanityCheck(patternBuffer.data.isEmpty && destData.count == shrinkage)
 
   // Write out the header.
-  let destHeader = KeyPathBuffer.Header(size: origPatternBuffer.data.count,
+  let destHeader = KeyPathBuffer.Header(
+    size: origPatternBuffer.data.count - shrinkage,
     trivial: true, // TODO: nontrivial indexes
     hasReferencePrefix: endOfReferencePrefixComponent != nil)
 
diff --git a/stdlib/public/core/LazyCollection.swift.gyb b/stdlib/public/core/LazyCollection.swift.gyb
index faee60a..d8404cb 100644
--- a/stdlib/public/core/LazyCollection.swift.gyb
+++ b/stdlib/public/core/LazyCollection.swift.gyb
@@ -21,8 +21,6 @@
 /// To add new lazy collection operations, extend this protocol with
 /// methods that return lazy wrappers that are themselves
 /// `LazyCollectionProtocol`s.
-///
-/// - SeeAlso: `LazySequenceProtocol`, `LazyCollection`
 public protocol LazyCollectionProtocol
   : Collection, LazySequenceProtocol {
   /// A `Collection` that can contain the same elements as this one,
@@ -249,8 +247,6 @@
   /// Use the `lazy` property when chaining operations to prevent
   /// intermediate operations from allocating storage, or when you only
   /// need a part of the final collection to avoid unnecessary computation.
-  ///
-  /// - SeeAlso: `LazySequenceProtocol`, `LazyCollectionProtocol`.
   @_inlineable
   public var lazy: ${Self}<Self> {
     return ${Self}(_base: self)
diff --git a/stdlib/public/core/LazySequence.swift b/stdlib/public/core/LazySequence.swift
index e5e8159..1b1bee7 100644
--- a/stdlib/public/core/LazySequence.swift
+++ b/stdlib/public/core/LazySequence.swift
@@ -182,8 +182,6 @@
   /// A sequence containing the same elements as this sequence,
   /// but on which some operations, such as `map` and `filter`, are
   /// implemented lazily.
-  ///
-  /// - SeeAlso: `LazySequenceProtocol`, `LazySequence`
   public var lazy: LazySequence<Self> {
     return LazySequence(_base: self)
   }
diff --git a/stdlib/public/core/LifetimeManager.swift b/stdlib/public/core/LifetimeManager.swift
index 295ef94..47796e6 100644
--- a/stdlib/public/core/LifetimeManager.swift
+++ b/stdlib/public/core/LifetimeManager.swift
@@ -16,8 +16,9 @@
 /// - Parameters:
 ///   - x: An instance to preserve until the execution of `body` is completed.
 ///   - body: A closure to execute that depends on the lifetime of `x` being
-///     extended.
-/// - Returns: The return value of `body`, if any.
+///     extended. If `body` has a return value, that value is also used as the
+///     return value for the `withExtendedLifetime(_:_:)` method.
+/// - Returns: The return value, if any, of the `body` closure parameter.
 @_inlineable
 public func withExtendedLifetime<T, Result>(
   _ x: T, _ body: () throws -> Result
@@ -32,8 +33,9 @@
 /// - Parameters:
 ///   - x: An instance to preserve until the execution of `body` is completed.
 ///   - body: A closure to execute that depends on the lifetime of `x` being
-///     extended.
-/// - Returns: The return value of `body`, if any.
+///     extended. If `body` has a return value, that value is also used as the
+///     return value for the `withExtendedLifetime(_:_:)` method.
+/// - Returns: The return value, if any, of the `body` closure parameter.
 @_inlineable
 public func withExtendedLifetime<T, Result>(
   _ x: T, _ body: (T) throws -> Result
@@ -53,10 +55,10 @@
   ///
   /// - Parameter body: A closure with a pointer parameter that points to a
   ///   null-terminated sequence of UTF-8 code units. If `body` has a return
-  ///   value, it is used as the return value for the `withCString(_:)`
-  ///   method. The pointer argument is valid only for the duration of the
-  ///   method's execution.
-  /// - Returns: The return value of the `body` closure parameter, if any.
+  ///   value, that value is also used as the return value for the
+  ///   `withCString(_:)` method. The pointer argument is valid only for the
+  ///   duration of the method's execution.
+  /// - Returns: The return value, if any, of the `body` closure parameter.
   @_inlineable
   public func withCString<Result>(
     _ body: (UnsafePointer<Int8>) throws -> Result
@@ -87,12 +89,11 @@
 /// - Parameters:
 ///   - arg: An instance to temporarily use via pointer.
 ///   - body: A closure that takes a mutable pointer to `arg` as its sole
-///     argument. If the closure has a return value, it is used as the return
-///     value of the `withUnsafeMutablePointer(to:_:)` function. The pointer
-///     argument is valid only for the duration of the function's execution.
-/// - Returns: The return value of the `body` closure, if any.
-///
-/// - SeeAlso: `withUnsafePointer(to:_:)`
+///     argument. If the closure has a return value, that value is also used
+///     as the return value of the `withUnsafeMutablePointer(to:_:)` function.
+///     The pointer argument is valid only for the duration of the function's
+///     execution.
+/// - Returns: The return value, if any, of the `body` closure.
 @_inlineable
 public func withUnsafeMutablePointer<T, Result>(
   to arg: inout T,
@@ -115,12 +116,10 @@
 /// - Parameters:
 ///   - arg: An instance to temporarily use via pointer.
 ///   - body: A closure that takes a pointer to `arg` as its sole argument. If
-///     the closure has a return value, it is used as the return value of the
-///     `withUnsafePointer(to:_:)` function. The pointer argument is valid
-///     only for the duration of the function's execution.
-/// - Returns: The return value of the `body` closure, if any.
-///
-/// - SeeAlso: `withUnsafeMutablePointer(to:_:)`
+///     the closure has a return value, that value is also used as the return
+///     value of the `withUnsafePointer(to:_:)` function. The pointer argument
+///     is valid only for the duration of the function's execution.
+/// - Returns: The return value, if any, of the `body` closure.
 @_inlineable
 public func withUnsafePointer<T, Result>(
   to arg: inout T,
diff --git a/stdlib/public/core/ManagedBuffer.swift b/stdlib/public/core/ManagedBuffer.swift
index 25b8b45..a8dbf5a 100644
--- a/stdlib/public/core/ManagedBuffer.swift
+++ b/stdlib/public/core/ManagedBuffer.swift
@@ -12,6 +12,13 @@
 
 import SwiftShims
 
+@_silgen_name("swift_bufferAllocate")
+internal func _swift_bufferAllocate(
+  bufferType type: AnyClass,
+  size: Int,
+  alignmentMask: Int
+) -> AnyObject
+
 /// A class whose instances contain a property of type `Header` and raw
 /// storage for an array of `Element`, whose size is determined at
 /// instance creation.
@@ -337,6 +344,7 @@
   ///
   /// - Note: It is an error to use the `header` property of the resulting
   ///   instance unless it has been initialized.
+  @_versioned
   internal init(_ buffer: ManagedBuffer<Header, Element>) {
     _nativeBuffer = Builtin.unsafeCastToNativeObject(buffer)
   }
diff --git a/stdlib/public/core/MemoryLayout.swift b/stdlib/public/core/MemoryLayout.swift
index e4b3634..8b8a916 100644
--- a/stdlib/public/core/MemoryLayout.swift
+++ b/stdlib/public/core/MemoryLayout.swift
@@ -48,8 +48,6 @@
   ///
   /// When allocating memory for multiple instances of `T` using an unsafe
   /// pointer, use a multiple of the type's stride instead of its size.
-  ///
-  /// - SeeAlso: `stride`
   @_transparent
   public static var size: Int {
     return Int(Builtin.sizeof(T.self))
@@ -100,8 +98,6 @@
   ///
   /// - Parameter value: A value representative of the type to describe.
   /// - Returns: The size, in bytes, of the given value's type.
-  ///
-  /// - SeeAlso: `MemoryLayout.size`
   @_transparent
   public static func size(ofValue value: T) -> Int {
     return MemoryLayout.size
@@ -130,8 +126,6 @@
   ///
   /// - Parameter value: A value representative of the type to describe.
   /// - Returns: The stride, in bytes, of the given value's type.
-  ///
-  /// - SeeAlso: `MemoryLayout.stride`
   @_transparent
   public static func stride(ofValue value: T) -> Int {
     return MemoryLayout.stride
@@ -157,8 +151,6 @@
   /// - Parameter value: A value representative of the type to describe.
   /// - Returns: The default memory alignment, in bytes, of the given value's
   ///   type. This value is always positive.
-  ///
-  /// - SeeAlso: `MemoryLayout.alignment`
   @_transparent
   public static func alignment(ofValue value: T) -> Int {
     return MemoryLayout.alignment
diff --git a/stdlib/public/core/Mirror.swift b/stdlib/public/core/Mirror.swift
index 8f760ef..8e33172 100644
--- a/stdlib/public/core/Mirror.swift
+++ b/stdlib/public/core/Mirror.swift
@@ -162,6 +162,8 @@
     return nil
   }
 
+  @_semantics("optimize.sil.specialize.generic.never")
+  @inline(never)
   @_versioned
   internal static func _superclassIterator<Subject>(
     _ subject: Subject, _ ancestorRepresentation: AncestorRepresentation
@@ -856,8 +858,6 @@
   ///
   ///     print(String(describing: p))
   ///     // Prints "(21, 30)"
-  ///
-  /// - SeeAlso: `String.init<Subject>(reflecting: Subject)`
   public init<Subject>(describing instance: Subject) {
     self.init()
     _print_unlocked(instance, &self)
@@ -907,8 +907,6 @@
   ///
   ///     print(String(reflecting: p))
   ///     // Prints "Point(x: 21, y: 30)"
-  ///
-  /// - SeeAlso: `String.init<Subject>(Subject)`
   public init<Subject>(reflecting subject: Subject) {
     self.init()
     _debugPrint_unlocked(subject, &self)
diff --git a/stdlib/public/core/MutableCollection.swift b/stdlib/public/core/MutableCollection.swift
index ac68c76..a926fa2 100644
--- a/stdlib/public/core/MutableCollection.swift
+++ b/stdlib/public/core/MutableCollection.swift
@@ -291,7 +291,7 @@
 
   /// Exchanges the values at the specified indices of the collection.
   ///
-  /// Both parameters must be valid indices of the collection that are not
+  /// Both parameters must be valid indices of the collection and not
   /// equal to `endIndex`. Passing the same index as both `i` and `j` has no
   /// effect.
   ///
diff --git a/stdlib/public/core/ObjectIdentifier.swift b/stdlib/public/core/ObjectIdentifier.swift
index dae2219..3d38847 100644
--- a/stdlib/public/core/ObjectIdentifier.swift
+++ b/stdlib/public/core/ObjectIdentifier.swift
@@ -23,8 +23,6 @@
   /// The hash value is not guaranteed to be stable across different
   /// invocations of the same program.  Do not persist the hash value across
   /// program runs.
-  ///
-  /// - SeeAlso: `Hashable`
   public var hashValue: Int {
     return Int(Builtin.ptrtoint_Word(_value))
   }
diff --git a/stdlib/public/core/OptionSet.swift b/stdlib/public/core/OptionSet.swift
index 8f26be5..d6252b3 100644
--- a/stdlib/public/core/OptionSet.swift
+++ b/stdlib/public/core/OptionSet.swift
@@ -82,8 +82,6 @@
 ///         print("Add more to your cart for free priority shipping!")
 ///     }
 ///     // Prints "You've earned free priority shipping!"
-///
-/// - SeeAlso: `FixedWidthInteger`, `SetAlgebra`
 public protocol OptionSet : SetAlgebra, RawRepresentable {
   // We can't constrain the associated Element type to be the same as
   // Self, but we can do almost as well with a default and a
diff --git a/stdlib/public/core/OutputStream.swift b/stdlib/public/core/OutputStream.swift
index cd5065f..7aa4561 100644
--- a/stdlib/public/core/OutputStream.swift
+++ b/stdlib/public/core/OutputStream.swift
@@ -144,8 +144,6 @@
 ///
 ///     print(p)
 ///     // Prints "(21, 30)"
-///
-/// - SeeAlso: `String.init<T>(T)`, `CustomDebugStringConvertible`
 public protocol CustomStringConvertible {
   /// A textual representation of this instance.
   ///
@@ -232,8 +230,6 @@
 ///
 ///     print(String(reflecting: p))
 ///     // Prints "Point(x: 21, y: 30)"
-///
-/// - SeeAlso: `String.init<T>(reflecting: T)`, `CustomStringConvertible`
 public protocol CustomDebugStringConvertible {
   /// A textual representation of this instance, suitable for debugging.
   var debugDescription: String { get }
diff --git a/stdlib/public/core/Policy.swift b/stdlib/public/core/Policy.swift
index 7d5b81e..306d3fc 100644
--- a/stdlib/public/core/Policy.swift
+++ b/stdlib/public/core/Policy.swift
@@ -248,12 +248,8 @@
 ///         print("'obj' does not have a 'getIntegerValue()' method")
 ///     }
 ///     // Prints "The value of 'obj' is 100"
-///
-/// - SeeAlso: `AnyClass`
 #else
 /// The protocol to which all classes implicitly conform.
-///
-/// - SeeAlso: `AnyClass`
 #endif
 public typealias AnyObject = Builtin.AnyObject
 
@@ -284,8 +280,6 @@
 ///
 ///     print(getDefaultValue(NSString.self))
 ///     // Prints "nil"
-///
-/// - SeeAlso: `AnyObject`
 public typealias AnyClass = AnyObject.Type
 
 /// A type that supports standard bitwise arithmetic operators.
@@ -377,8 +371,6 @@
 /// - `x & Self.allZeros == .allZeros`
 /// - `x & ~Self.allZeros == x`
 /// - `~x == x ^ ~Self.allZeros`
-///
-/// - SeeAlso: `OptionSet`
 @available(swift, deprecated: 3.1, obsoleted: 4.0, message: "Use FixedWidthInteger protocol instead")
 public typealias BitwiseOperations = _BitwiseOperations
 
diff --git a/stdlib/public/core/Print.swift b/stdlib/public/core/Print.swift
index ff510a6..45a2137 100644
--- a/stdlib/public/core/Print.swift
+++ b/stdlib/public/core/Print.swift
@@ -49,9 +49,6 @@
 ///     space (`" "`).
 ///   - terminator: The string to print after all items have been printed. The
 ///     default is a newline (`"\n"`).
-///
-/// - SeeAlso: `debugPrint(_:separator:terminator:)`, `TextOutputStreamable`,
-///   `CustomStringConvertible`, `CustomDebugStringConvertible`
 @inline(never)
 @_semantics("stdlib_binary_only")
 public func print(
@@ -112,9 +109,6 @@
 ///     space (`" "`).
 ///   - terminator: The string to print after all items have been printed. The
 ///     default is a newline (`"\n"`).
-///
-/// - SeeAlso: `print(_:separator:terminator:)`, `TextOutputStreamable`,
-///   `CustomStringConvertible`, `CustomDebugStringConvertible`
 @inline(never)
 @_semantics("stdlib_binary_only")
 public func debugPrint(
@@ -171,11 +165,6 @@
 ///     default is a newline (`"\n"`).
 ///   - output: An output stream to receive the text representation of each
 ///     item.
-///
-/// - SeeAlso: `print(_:separator:terminator:)`,
-///   `debugPrint(_:separator:terminator:to:)`,
-///   `TextOutputStream`, `TextOutputStreamable`,
-///   `CustomStringConvertible`, `CustomDebugStringConvertible`
 @inline(__always)
 public func print<Target : TextOutputStream>(
   _ items: Any...,
@@ -224,11 +213,6 @@
 ///     default is a newline (`"\n"`).
 ///   - output: An output stream to receive the text representation of each
 ///     item.
-///
-/// - SeeAlso: `debugPrint(_:separator:terminator:)`,
-///   `print(_:separator:terminator:to:)`,
-///   `TextOutputStream`, `TextOutputStreamable`,
-///   `CustomStringConvertible`, `CustomDebugStringConvertible`
 @inline(__always)
 public func debugPrint<Target : TextOutputStream>(
   _ items: Any...,
diff --git a/stdlib/public/core/Range.swift.gyb b/stdlib/public/core/Range.swift.gyb
index 4dffe3a..2daaabb 100644
--- a/stdlib/public/core/Range.swift.gyb
+++ b/stdlib/public/core/Range.swift.gyb
@@ -104,8 +104,6 @@
 ///     }
 ///     print(brackets(-99..<100, 0))
 ///     // Prints "0"
-///
-/// - SeeAlso: `CountableClosedRange`, `Range`, `ClosedRange`
 @_fixed_layout
 public struct CountableRange<Bound> : RandomAccessCollection
   where
@@ -342,8 +340,6 @@
 ///     let empty = 0.0..<0.0
 ///     print(empty.contains(0.0))          // Prints "false"
 ///     print(empty.isEmpty)                // Prints "true"
-///
-/// - SeeAlso: `CountableRange`, `ClosedRange`, `CountableClosedRange`
 @_fixed_layout
 public struct Range<
   Bound : Comparable
@@ -855,21 +851,22 @@
   }
 }
 
-/// A partial interval extending upward from a lower bound.
+/// A partial interval extending upward from a lower bound that forms a
+/// sequence of increasing values.
 ///
-/// You create `PartialRangeFrom` instances by using the postfix range operator
-/// (postfix `...`).
+/// You create `CountablePartialRangeFrom` instances by using the postfix range
+/// operator (postfix `...`).
 ///
 ///     let atLeastFive = 5.0...
 ///
-/// You can use a `PartialRangeFrom` instance to quickly check if a value is
+/// You can use a countable partial range to quickly check if a value is
 /// contained in a particular range of values. For example:
 ///
 ///     atLeastFive.contains(4.0)     // false
 ///     atLeastFive.contains(5.0)     // true
 ///     atLeastFive.contains(6.0)     // true
 ///
-/// You can use a `PartialRangeFrom` instance of a collection's indices to
+/// You can use a countable partial range of a collection's indices to
 /// represent the range from the partial range's lower bound up to the end of
 /// the collection.
 ///
@@ -885,9 +882,8 @@
 /// Using a Partial Range as a Sequence
 /// ===================================
 ///
-/// You can iterate over a `PartialRangeFrom` instance using a `for`-`in` loop,
-/// or call any sequence method that doesn't require that the sequence is
-/// finite.
+/// You can iterate over a countable partial range using a `for`-`in` loop, or
+/// call any sequence method that doesn't require that the sequence is finite.
 ///
 ///     func isTheMagicNumber(_ x: Int) -> Bool {
 ///         return x == 3
@@ -906,8 +902,8 @@
 ///     // "3 is the magic number!"
 ///
 /// Because a `CountablePartialRangeFrom` sequence counts upward indefinitely,
-/// do not use one with methods such as `map(_:)`, `filter(_:)`, or
-/// `suffix(_:)` that read the entire sequence before returning. It is safe to
+/// do not use one with methods that read the entire sequence before
+/// returning, such as `map(_:)`, `filter(_:)`, or `suffix(_:)`. It is safe to
 /// use operations that put an upper limit on the number of elements they
 /// access, such as `prefix(_:)` or `dropFirst(_:)`, and operations that you
 /// can guarantee will terminate, such as passing a closure you know will
diff --git a/stdlib/public/core/Sequence.swift b/stdlib/public/core/Sequence.swift
index aa2de70..2191fc2 100644
--- a/stdlib/public/core/Sequence.swift
+++ b/stdlib/public/core/Sequence.swift
@@ -322,8 +322,6 @@
 /// makes no other requirements about element access, so routines that
 /// traverse a sequence should be considered O(*n*) unless documented
 /// otherwise.
-///
-/// - SeeAlso: `IteratorProtocol`, `Collection`
 public protocol Sequence {
   /// A type that provides the sequence's iteration interface and
   /// encapsulates its iteration state.
@@ -1291,7 +1289,6 @@
   ///   that satisfy `predicate`.
   ///
   /// - Complexity: O(*n*), where *n* is the length of the collection.
-  /// - SeeAlso: `prefix(while:)`
   @_inlineable
   public func drop(
     while predicate: (Element) throws -> Bool
@@ -1351,7 +1348,6 @@
   ///   satisfy `predicate`.
   ///
   /// - Complexity: O(*n*), where *n* is the length of the collection.
-  /// - SeeAlso: `drop(while:)`
   @_inlineable
   public func prefix(
     while predicate: (Element) throws -> Bool
diff --git a/stdlib/public/core/SequenceAlgorithms.swift.gyb b/stdlib/public/core/SequenceAlgorithms.swift.gyb
index e13e841..95b06d3 100644
--- a/stdlib/public/core/SequenceAlgorithms.swift.gyb
+++ b/stdlib/public/core/SequenceAlgorithms.swift.gyb
@@ -61,16 +61,16 @@
   ///     // Prints "3: 'f'"
   ///     // Prints "4: 't'"
   ///
-  /// When enumerating a collection, the integer part of each pair is a counter
-  /// for the enumeration, not necessarily the index of the paired value.
-  /// These counters can only be used as indices in instances of zero-based,
+  /// When you enumerate a collection, the integer part of each pair is a counter
+  /// for the enumeration, but is not necessarily the index of the paired value.
+  /// These counters can be used as indices only in instances of zero-based,
   /// integer-indexed collections, such as `Array` and `ContiguousArray`. For
   /// other collections the counters may be out of range or of the wrong type
   /// to use as an index. To iterate over the elements of a collection with its
   /// indices, use the `zip(_:_:)` function.
   ///
   /// This example iterates over the indices and elements of a set, building a
-  /// list of indices of names with five or fewer letters.
+  /// list consisting of indices of names with five or fewer letters.
   ///
   ///     let names: Set = ["Sofia", "Camilla", "Martina", "Mateo", "Nicolás"]
   ///     var shorterIndices: [SetIndex<String>] = []
@@ -127,8 +127,6 @@
   /// - Returns: The sequence's minimum element, according to
   ///   `areInIncreasingOrder`. If the sequence has no elements, returns
   ///   `nil`.
-  ///
-  /// - SeeAlso: `min()`
 %   else:
   /// Returns the minimum element in the sequence.
   ///
@@ -141,8 +139,6 @@
   ///
   /// - Returns: The sequence's minimum element. If the sequence has no
   ///   elements, returns `nil`.
-  ///
-  /// - SeeAlso: `min(by:)`
 %   end
   @_inlineable
   @warn_unqualified_access
@@ -181,8 +177,6 @@
   ///   otherwise, `false`.
   /// - Returns: The sequence's maximum element if the sequence is not empty;
   ///   otherwise, `nil`.
-  ///
-  /// - SeeAlso: `max()`
 %   else:
   /// Returns the maximum element in the sequence.
   ///
@@ -195,8 +189,6 @@
   ///
   /// - Returns: The sequence's maximum element. If the sequence has no
   ///   elements, returns `nil`.
-  ///
-  /// - SeeAlso: `max(by:)`
 %   end
   @_inlineable
   @warn_unqualified_access
@@ -244,8 +236,6 @@
   /// - Returns: `true` if the initial elements of the sequence are equivalent
   ///   to the elements of `possiblePrefix`; otherwise, `false`. If
   ///   `possiblePrefix` has no elements, the return value is `true`.
-  ///
-  /// - SeeAlso: `starts(with:)`
 %   else:
   /// Returns a Boolean value indicating whether the initial elements of the
   /// sequence are the same as the elements in another sequence.
@@ -269,8 +259,6 @@
   /// - Returns: `true` if the initial elements of the sequence are the same as
   ///   the elements of `possiblePrefix`; otherwise, `false`. If
   ///   `possiblePrefix` has no elements, the return value is `true`.
-  ///
-  /// - SeeAlso: `starts(with:by:)`
 %   end
   @_inlineable
   public func starts<PossiblePrefix>(
@@ -325,8 +313,6 @@
   ///     are equivalent; otherwise, `false`.
   /// - Returns: `true` if this sequence and `other` contain equivalent items,
   ///   using `areEquivalent` as the equivalence test; otherwise, `false.`
-  ///
-  /// - SeeAlso: `elementsEqual(_:)`
 %   else:
   /// Returns a Boolean value indicating whether this sequence and another
   /// sequence contain the same elements in the same order.
@@ -347,8 +333,6 @@
   /// - Parameter other: A sequence to compare to this sequence.
   /// - Returns: `true` if this sequence and `other` contain the same elements
   ///   in the same order.
-  ///
-  /// - SeeAlso: `elementsEqual(_:by:)`
 %   end
   @_inlineable
   public func elementsEqual<OtherSequence>(
@@ -410,7 +394,6 @@
   ///   ordering, which has no connection to Unicode.  If you are sorting
   ///   strings to present to the end user, use `String` APIs that perform
   ///   localized comparison instead.
-  /// - SeeAlso: `lexicographicallyPrecedes(_:)`
 %   else:
   /// Returns a Boolean value indicating whether the sequence precedes another
   /// sequence in a lexicographical (dictionary) ordering, using the
@@ -435,7 +418,6 @@
   ///   ordering, which has no connection to Unicode.  If you are sorting
   ///   strings to present to the end user, use `String` APIs that
   ///   perform localized comparison.
-  /// - SeeAlso: `lexicographicallyPrecedes(_:by:)`
 %   end
   @_inlineable
   public func lexicographicallyPrecedes<OtherSequence>(
@@ -675,7 +657,6 @@
   ///
   /// - Complexity: O(*m* + *n*), where *m* is the length of this sequence
   ///   and *n* is the length of the result.
-  /// - SeeAlso: `joined()`, `map(_:)`
   @_inlineable
   public func flatMap<SegmentOfResult : Sequence>(
     _ transform: (Element) throws -> SegmentOfResult
diff --git a/stdlib/public/core/SetAlgebra.swift b/stdlib/public/core/SetAlgebra.swift
index a537bc1..014be7f 100644
--- a/stdlib/public/core/SetAlgebra.swift
+++ b/stdlib/public/core/SetAlgebra.swift
@@ -50,8 +50,6 @@
 /// - `x.isStrictSuperset(of: y)` if and only if
 ///   `x.isSuperset(of: y) && x != y`
 /// - `x.isStrictSubset(of: y)` if and only if `x.isSubset(of: y) && x != y`
-/// 
-/// - SeeAlso: `OptionSet`, `Set`
 public protocol SetAlgebra : Equatable, ExpressibleByArrayLiteral {
   // FIXME: write tests for SetAlgebra
   
diff --git a/stdlib/public/core/StaticString.swift b/stdlib/public/core/StaticString.swift
index c058896..4f501d0 100644
--- a/stdlib/public/core/StaticString.swift
+++ b/stdlib/public/core/StaticString.swift
@@ -126,10 +126,10 @@
   ///
   /// - Parameter body: A closure that takes a buffer pointer to the static
   ///   string's UTF-8 code unit sequence as its sole argument. If the closure
-  ///   has a return value, it is used as the return value of the
+  ///   has a return value, that value is also used as the return value of the
   ///   `withUTF8Buffer(invoke:)` method. The pointer argument is valid only
   ///   for the duration of the method's execution.
-  /// - Returns: The return value of the `body` closure, if any.
+  /// - Returns: The return value, if any, of the `body` closure.
   public func withUTF8Buffer<R>(
     _ body: (UnsafeBufferPointer<UInt8>) -> R) -> R {
     if hasPointerRepresentation {
diff --git a/stdlib/public/core/String.swift b/stdlib/public/core/String.swift
index e404fc6..38690b3 100644
--- a/stdlib/public/core/String.swift
+++ b/stdlib/public/core/String.swift
@@ -15,22 +15,24 @@
 /// A type that can represent a string as a collection of characters.
 public protocol StringProtocol
   : RangeReplaceableCollection, BidirectionalCollection,
-  CustomDebugStringConvertible,
-  CustomReflectable, CustomPlaygroundQuickLookable,
   TextOutputStream, TextOutputStreamable,
   LosslessStringConvertible, ExpressibleByStringLiteral,
-  Hashable
+  Hashable, Comparable
   where Iterator.Element == Character {
 
-  associatedtype UTF8Index
-  var utf8: String.UTF8View { get }
-  associatedtype UTF16Index
-  var utf16: String.UTF16View { get }
-  associatedtype UnicodeScalarIndex
-  var unicodeScalars: String.UnicodeScalarView { get }
-  /*associatedtype CharacterIndex*/
-  var characters: String.CharacterView { get }
+  associatedtype UTF8View : /*Bidirectional*/Collection
+  where UTF8View.Element == UInt8 // Unicode.UTF8.CodeUnit
+  
+  associatedtype UTF16View : BidirectionalCollection
+  where UTF16View.Element == UInt16 // Unicode.UTF16.CodeUnit
 
+  associatedtype UnicodeScalarView : BidirectionalCollection
+  where UnicodeScalarView.Element == Unicode.Scalar
+  
+  var utf8: UTF8View { get }
+  var utf16: UTF16View { get }
+  var unicodeScalars: UnicodeScalarView { get }
+  
 #if _runtime(_ObjC)
   func hasPrefix(_ prefix: String) -> Bool
   func hasSuffix(_ prefix: String) -> Bool
@@ -81,10 +83,10 @@
   ///
   /// - Parameter body: A closure with a pointer parameter that points to a
   ///   null-terminated sequence of UTF-8 code units. If `body` has a return
-  ///   value, it is used as the return value for the `withCString(_:)`
-  ///   method. The pointer argument is valid only for the duration of the
-  ///   method's execution.
-  /// - Returns: The return value of the `body` closure parameter, if any.
+  ///   value, that value is also used as the return value for the
+  ///   `withCString(_:)` method. The pointer argument is valid only for the
+  ///   duration of the method's execution.
+  /// - Returns: The return value, if any, of the `body` closure parameter.
   func withCString<Result>(
     _ body: (UnsafePointer<CChar>) throws -> Result) rethrows -> Result
 
@@ -98,18 +100,30 @@
   /// - Parameters:
   ///   - body: A closure with a pointer parameter that points to a
   ///     null-terminated sequence of code units. If `body` has a return
-  ///     value, it is used as the return value for the
+  ///     value, that value is also used as the return value for the
   ///     `withCString(encodedAs:_:)` method. The pointer argument is valid
   ///     only for the duration of the method's execution.
   ///   - targetEncoding: The encoding in which the code units should be
   ///     interpreted.
-  /// - Returns: The return value of the `body` closure parameter, if any.
+  /// - Returns: The return value, if any, of the `body` closure parameter.
   func withCString<Result, Encoding: Unicode.Encoding>(
     encodedAs targetEncoding: Encoding.Type,
     _ body: (UnsafePointer<Encoding.CodeUnit>) throws -> Result
   ) rethrows -> Result
 }
 
+extension StringProtocol {
+  //@available(swift, deprecated: 3.2, obsoleted: 4.0, message: "Please use the StringProtocol itself")
+  //public var characters: Self { return self }
+
+  @available(swift, deprecated: 3.2, obsoleted: 4.0, renamed: "UTF8View.Index")
+  public typealias UTF8Index = UTF8View.Index
+  @available(swift, deprecated: 3.2, obsoleted: 4.0, renamed: "UTF16View.Index")
+  public typealias UTF16Index = UTF16View.Index
+  @available(swift, deprecated: 3.2, obsoleted: 4.0, renamed: "UnicodeScalarView.Index")
+  public typealias UnicodeScalarIndex = UnicodeScalarView.Index
+}
+
 /// A protocol that provides fast access to a known representation of String.
 ///
 /// Can be used to specialize generic functions that would otherwise end up
@@ -169,6 +183,7 @@
     encodedAs: sourceEncoding) { p, _ in try body(p) }
 }
 
+@_semantics("optimize.sil.specialize.generic.partial.never")
 internal func _withCStringAndLength<
   Source : Collection,
   SourceEncoding : Unicode.Encoding, 
@@ -211,6 +226,7 @@
     }
   }
 
+  @_semantics("optimize.sil.specialize.generic.partial.never")
   internal func _withCSubstringAndLength<
     Result, TargetEncoding: Unicode.Encoding
   >(
@@ -293,12 +309,12 @@
   /// - Parameters:
   ///   - body: A closure with a pointer parameter that points to a
   ///     null-terminated sequence of code units. If `body` has a return
-  ///     value, it is used as the return value for the
+  ///     value, that value is also used as the return value for the
   ///     `withCString(encodedAs:_:)` method. The pointer argument is valid
   ///     only for the duration of the method's execution.
   ///   - targetEncoding: The encoding in which the code units should be
   ///     interpreted.
-  /// - Returns: The return value of the `body` closure parameter, if any.
+  /// - Returns: The return value, if any, of the `body` closure parameter.
   public func withCString<Result, TargetEncoding: Unicode.Encoding>(
     encodedAs targetEncoding: TargetEncoding.Type,
     _ body: (UnsafePointer<TargetEncoding.CodeUnit>) throws -> Result
@@ -312,39 +328,41 @@
 
 /// A Unicode string value that is a collection of characters.
 ///
-/// A string is a series of characters, such as `"Swift"`. Strings in Swift are
-/// Unicode correct, locale insensitive, and designed to be efficient. The
-/// `String` type bridges with the Objective-C class `NSString` and offers
-/// interoperability with C functions that works with strings.
+/// A string is a series of characters, such as `"Swift"`, that forms a
+/// collection. Strings in Swift are Unicode correct and locale insensitive,
+/// and are designed to be efficient. The `String` type bridges with the
+/// Objective-C class `NSString` and offers interoperability with C functions
+/// that works with strings.
 ///
 /// You can create new strings using string literals or string interpolations.
-/// A string literal is a series of characters enclosed in quotes.
+/// A *string literal* is a series of characters enclosed in quotes.
 ///
 ///     let greeting = "Welcome!"
 ///
-/// String interpolations are string literals that evaluate any included
+/// *String interpolations* are string literals that evaluate any included
 /// expressions and convert the results to string form. String interpolations
-/// are an easy way to build a string from multiple pieces. Wrap each
+/// give you an easy way to build a string from multiple pieces. Wrap each
 /// expression in a string interpolation in parentheses, prefixed by a
 /// backslash.
 ///
 ///     let name = "Rosa"
 ///     let personalizedGreeting = "Welcome, \(name)!"
+///     // personalizedGreeting == "Welcome, Rosa!"
 ///
 ///     let price = 2
 ///     let number = 3
 ///     let cookiePrice = "\(number) cookies: $\(price * number)."
+///     // cookiePrice == "3 cookies: $6."
 ///
 /// Combine strings using the concatenation operator (`+`).
 ///
 ///     let longerGreeting = greeting + " We're glad you're here!"
-///     print(longerGreeting)
-///     // Prints "Welcome! We're glad you're here!"
+///     // longerGreeting == "Welcome! We're glad you're here!"
 ///
-/// Multiline string literals are enclosed in three double quotes (`"""`), with
-/// each delimiter on its own line. Indentation is stripped from each line of
-/// a multiline string literal to match the indentation of the closing
-/// delimiter.
+/// Multiline string literals are enclosed in three double quotation marks
+/// (`"""`), with each delimiter on its own line. Indentation is stripped from
+/// each line of a multiline string literal to match the indentation of the
+/// closing delimiter.
 ///
 ///     let banner = """
 ///               __,
@@ -363,16 +381,15 @@
 ///
 ///     var otherGreeting = greeting
 ///     otherGreeting += " Have a nice time!"
-///     print(otherGreeting)
-///     // Prints "Welcome! Have a nice time!"
+///     // otherGreeting == "Welcome! Have a nice time!"
 ///
 ///     print(greeting)
 ///     // Prints "Welcome!"
 ///
 /// Comparing strings for equality using the equal-to operator (`==`) or a
-/// relational operator (like `<` and `>=`) is always performed using the
-/// Unicode canonical representation. This means that different
-/// representations of a string compare as being equal.
+/// relational operator (like `<` or `>=`) is always performed using Unicode
+/// canonical representation. As a result, different representations of a
+/// string compare as being equal.
 ///
 ///     let cafe1 = "Cafe\u{301}"
 ///     let cafe2 = "Café"
@@ -383,8 +400,8 @@
 /// include an accent, so `"e\u{301}"` has the same canonical representation
 /// as the single Unicode code point `"é"`.
 ///
-/// Basic string operations are not sensitive to locale settings. This ensures
-/// that string comparisons and other operations always have a single, stable
+/// Basic string operations are not sensitive to locale settings, ensuring that
+/// string comparisons and other operations always have a single, stable
 /// result, allowing strings to be used as keys in `Dictionary` instances and
 /// for other purposes.
 ///
@@ -395,7 +412,7 @@
 /// human-readable characters. Many individual characters, such as "é", "김",
 /// and "🇮🇳", can be made up of multiple Unicode code points. These code points
 /// are combined by Unicode's boundary algorithms into extended grapheme
-/// clusters, represented by Swift's `Character` type. Each element of a
+/// clusters, represented by the Swift `Character` type. Each element of a
 /// string is represented by a `Character` instance.
 ///
 /// For example, to retrieve the first word of a longer string, you can search
@@ -420,8 +437,7 @@
 /// If you need to access the contents of a string as encoded in different
 /// Unicode encodings, use one of the string's `unicodeScalars`, `utf16`, or
 /// `utf8` properties. Each property provides access to a view of the string
-/// as a series of code units, each encoded in a different Unicode
-/// representation.
+/// as a series of code units, each encoded in a different Unicode encoding.
 ///
 /// To demonstrate the different views available for every string, the
 /// following examples use this `String` instance:
@@ -431,7 +447,7 @@
 ///     // Prints "Café du 🌍"
 ///
 /// The `cafe` string is a collection of the nine characters that are visible
-/// in the printed string above.
+/// when the string is displayed.
 ///
 ///     print(cafe.count)
 ///     // Prints "9"
@@ -472,9 +488,7 @@
 ///     // Prints "[67, 97, 102, 101, 769, 32, 100, 117, 32, 55356, 57101]"
 ///
 /// The elements of the `utf16` view are the code units for the string when
-/// encoded in UTF-16.
-///
-/// The elements of this collection match those accessed through indexed
+/// encoded in UTF-16. These elements match those accessed through indexed
 /// `NSString` APIs.
 ///
 ///     let nscafe = cafe as NSString
@@ -528,7 +542,7 @@
 ///     // Prints "1"
 ///
 /// On the other hand, an emoji flag character is constructed from a pair of
-/// Unicode scalars values, like `"\u{1F1F5}"` and `"\u{1F1F7}"`. Each of
+/// Unicode scalar values, like `"\u{1F1F5}"` and `"\u{1F1F7}"`. Each of
 /// these scalar values, in turn, is too large to fit into a single UTF-16 or
 /// UTF-8 code unit. As a result, each view of the string `"🇵🇷"` reports a
 /// different length.
@@ -544,7 +558,7 @@
 ///     // Prints "8"
 ///
 /// To check whether a string is empty, use its `isEmpty` property instead of
-/// comparing the length of one of the views to `0`. Unlike `isEmpty`,
+/// comparing the length of one of the views to `0`. Unlike with `isEmpty`,
 /// calculating a view's `count` property requires iterating through the
 /// elements of the string.
 ///
@@ -584,7 +598,7 @@
 /// exponential growth strategy that makes appending to a string a constant
 /// time operation when averaged over many append operations.
 ///
-/// Bridging between String and NSString
+/// Bridging Between String and NSString
 /// ====================================
 ///
 /// Any `String` instance can be bridged to `NSString` using the type-cast
@@ -593,7 +607,7 @@
 /// subclass of `NSString` can become a `String` instance, there are no
 /// guarantees about representation or efficiency when a `String` instance is
 /// backed by `NSString` storage. Because `NSString` is immutable, it is just
-/// as though the storage was shared by a copy: The first in any sequence of
+/// as though the storage was shared by a copy. The first in any sequence of
 /// mutating operations causes elements to be copied into unique, contiguous
 /// storage which may cost O(*n*) time and space, where *n* is the length of
 /// the string's encoded representation (or more, if the underlying `NSString`
@@ -608,9 +622,6 @@
 /// [clusters]: http://www.unicode.org/glossary/#extended_grapheme_cluster
 /// [scalars]: http://www.unicode.org/glossary/#unicode_scalar_value
 /// [equivalence]: http://www.unicode.org/glossary/#canonical_equivalent
-///
-/// - SeeAlso: `String.CharacterView`, `String.UnicodeScalarView`,
-///   `String.UTF16View`, `String.UTF8View`
 @_fixed_layout
 public struct String {
   /// Creates an empty string.
diff --git a/stdlib/public/core/StringBridge.swift b/stdlib/public/core/StringBridge.swift
index afd3de2..d04ed7c 100644
--- a/stdlib/public/core/StringBridge.swift
+++ b/stdlib/public/core/StringBridge.swift
@@ -25,7 +25,6 @@
   _ source: _CocoaString
 ) -> _CocoaString {
   let result = _swift_stdlib_CFStringCreateCopy(nil, source) as AnyObject
-  Builtin.release(result)
   return result
 }
 
diff --git a/stdlib/public/core/StringBuffer.swift b/stdlib/public/core/StringBuffer.swift
index 7397850..50edbd4 100644
--- a/stdlib/public/core/StringBuffer.swift
+++ b/stdlib/public/core/StringBuffer.swift
@@ -88,7 +88,7 @@
 
     self.usedEnd = start + (initialSize &<< elementShift)
     _storage.value.capacityAndElementShift
-      = ((_storage._capacity() - capacityBump) &<< 1) + elementShift
+      = ((_storage.capacity - capacityBump) &<< 1) + elementShift
   }
 
   static func fromCodeUnits<Input : Sequence, Encoding : _UnicodeEncoding>(
@@ -194,65 +194,8 @@
     return cap + offset <= capacity
   }
 
-
-  /// Attempt to claim unused capacity in the buffer.
-  ///
-  /// Operation succeeds if there is sufficient capacity, and either:
-  /// - the buffer is uniquely-referenced, or
-  /// - `oldUsedEnd` points to the end of the currently used capacity.
-  ///
-  /// - parameter bounds: Range of the substring that the caller tries
-  ///   to extend.
-  /// - parameter newUsedCount: The desired size of the substring.
-  @inline(__always)
-  @discardableResult
-  mutating func grow(
-    oldBounds bounds: Range<UnsafeRawPointer>, newUsedCount: Int
-  ) -> Bool {
-    var newUsedCount = newUsedCount
-    // The substring to be grown could be pointing in the middle of this
-    // _StringBuffer.  Adjust the size so that it covers the imaginary
-    // substring from the start of the buffer to `oldUsedEnd`.
-    newUsedCount
-      += (bounds.lowerBound - UnsafeRawPointer(start)) &>> elementShift
-
-    if _slowPath(newUsedCount > capacity) {
-      return false
-    }
-
-    let newUsedEnd = start + (newUsedCount &<< elementShift)
-
-    if _fastPath(self._storage.isUniquelyReferenced()) {
-      usedEnd = newUsedEnd
-      return true
-    }
-
-    // Optimization: even if the buffer is shared, but the substring we are
-    // trying to grow is located at the end of the buffer, it can be grown in
-    // place.  The operation should be implemented in a thread-safe way,
-    // though.
-    //
-    // if usedEnd == bounds.upperBound {
-    //  usedEnd = newUsedEnd
-    //  return true
-    // }
-
-    // &StringBufferIVars.usedEnd
-    let usedEndPhysicalPtr = UnsafeMutableRawPointer(_storage._value)
-      .assumingMemoryBound(to: Optional<UnsafeRawPointer>.self)
-    // Create a temp var to hold the exchanged `expected` value.
-    var expected : UnsafeRawPointer? = bounds.upperBound
-    if _stdlib_atomicCompareExchangeStrongPtr(
-      object: usedEndPhysicalPtr, expected: &expected,
-      desired: UnsafeRawPointer(newUsedEnd)) {
-      return true
-    }
-
-    return false
-  }
-
   var _anyObject: AnyObject? {
-    return _storage.storage != nil ? _storage.storage! : nil
+    return _storage.storage
   }
 
   var _storage: _Storage
diff --git a/stdlib/public/core/StringCharacterView.swift b/stdlib/public/core/StringCharacterView.swift
index 9052997..104b4e8 100644
--- a/stdlib/public/core/StringCharacterView.swift
+++ b/stdlib/public/core/StringCharacterView.swift
@@ -117,10 +117,10 @@
   ///     // Prints "this happened, more or less."
   ///
   /// - Parameter body: A closure that takes a character view as its argument.
-  ///   The `CharacterView` argument is valid only for the duration of the
-  ///   closure's execution.
-  /// - Returns: The return value of the `body` closure, if any, is the return
-  ///   value of this method.
+  ///   If `body` has a return value, that value is also used as the return
+  ///   value for the `withMutableCharacters(_:)` method. The `CharacterView`
+  ///   argument is valid only for the duration of the closure's execution.
+  /// - Returns: The return value, if any, of the `body` closure parameter.
   public mutating func withMutableCharacters<R>(
     _ body: (inout CharacterView) -> R
   ) -> R {
@@ -297,33 +297,55 @@
   internal static func _internalExtraCheckGraphemeBreakBetween(
     _ lhs: UInt16, _ rhs: UInt16
   ) -> Bool {
+    _sanityCheck(
+      lhs != _CR || rhs != _LF,
+      "CR-LF special case handled by _quickCheckGraphemeBreakBetween")
+
     // Whether the given scalar, when it appears paired with another scalar
     // satisfying this property, has a grapheme break between it and the other
     // scalar.
     func hasBreakWhenPaired(_ x: UInt16) -> Bool {
-      // TODO: This doesn't generate optimal code, tune/re-write at a lower level.
-
+      // TODO: This doesn't generate optimal code, tune/re-write at a lower
+      // level.
+      //
+      // NOTE: Order of case ranges affects codegen, and thus performance. All
+      // things being equal, keep existing order below.
+      switch x {
       // Unified CJK Han ideographs, common and some supplemental, amongst
       // others:
       //   0x3400-0xA4CF
-      if 0x3400 <= x && x <= 0xa4cf {
-        return true
-      }
+      case 0x3400...0xa4cf: return true
+      // TODO: CJK punctuation
 
+      // Repeat sub-300 check, this is beneficial for common cases of Latin
+      // characters embedded within non-Latin script (e.g. newlines, spaces,
+      // proper nouns and/or jargon, punctuation).
       //
+      // NOTE: CR-LF special case has already been checked.
+      case 0x0000...0x02ff: return true
+
+      // TODO: general punctuation
+
       // Non-combining kana:
       //   0x3041-0x3096
       //   0x30A1-0x30FA
-      //
-      // TODO: may be faster to verify whether only 3099 and 309A don't have
-      // this property, and compare not-equal rather than using two ranges.
-      if 0x3041 <= x && x <= 0x3096 || 0x30a1 <= x && x <= 0x30fa {
-        return true
-      }
+      case 0x3041...0x3096: return true
+      case 0x30a1...0x30fa: return true
 
-      // TODO: sub-300 check would also be valuable, e.g. when breaking at the
-      // boundary between English embedded in Chinese.
-      return false
+      // Non-combining modern (and some archaic) Cyrillic:
+      //   0x0400-0x0482 (first half of Cyrillic block)
+      case 0x0400...0x0482: return true
+
+      // Modern Arabic, excluding extenders and prependers:
+      //   0x061D-0x064A
+      case 0x061d...0x064a: return true
+
+      // Precomposed Hangul syllables:
+      //   0xAC00–0xD7AF
+      case 0xac00...0xd7af: return true
+
+      default: return false
+      }
     }
     return hasBreakWhenPaired(lhs) && hasBreakWhenPaired(rhs)
   }
@@ -680,13 +702,11 @@
   ///
   /// - Parameter c: The character to append to the character view.
   public mutating func append(_ c: Character) {
-    switch c._representation {
-    case .small(let _63bits):
-      let bytes = Character._smallValue(_63bits)
-      _core.append(contentsOf: Character._SmallUTF16(bytes))
-    case .large(_):
-      _core.append(String(c)._core)
+    if let c0 = c._smallUTF16 {
+      _core.append(contentsOf: c0)
+      return
     }
+    _core.append(c._largeUTF16!)
   }
 
   /// Appends the characters in the given sequence to the character view.
diff --git a/stdlib/public/core/StringComparable.swift b/stdlib/public/core/StringComparable.swift
index 74bbcc6..afac15e 100644
--- a/stdlib/public/core/StringComparable.swift
+++ b/stdlib/public/core/StringComparable.swift
@@ -53,9 +53,17 @@
   /// - Precondition: Both `self` and `rhs` are ASCII strings.
   public // @testable
   func _compareASCII(_ rhs: String) -> Int {
-    var compare = Int(extendingOrTruncating: _swift_stdlib_memcmp(
-      self._core.startASCII, rhs._core.startASCII,
-      Swift.min(self._core.count, rhs._core.count)))
+    var compare: Int
+    
+    if self._core.startASCII == rhs._core.startASCII  { 
+      compare = 0 
+    }
+    else {
+      compare = Int(extendingOrTruncating: _swift_stdlib_memcmp(
+        self._core.startASCII, rhs._core.startASCII,
+        Swift.min(self._core.count, rhs._core.count)))      
+    }
+
     if compare == 0 {
       compare = self._core.count - rhs._core.count
     }
@@ -130,6 +138,9 @@
       if lhs._core.count != rhs._core.count {
         return false
       }
+      if lhs._core.startASCII == rhs._core.startASCII {
+        return true
+      }
       return _swift_stdlib_memcmp(
         lhs._core.startASCII, rhs._core.startASCII,
         rhs._core.count) == (0 as CInt)
diff --git a/stdlib/public/core/StringCore.swift b/stdlib/public/core/StringCore.swift
index d63237c..2ad24dc 100644
--- a/stdlib/public/core/StringCore.swift
+++ b/stdlib/public/core/StringCore.swift
@@ -416,6 +416,7 @@
   /// - Note: If unsuccessful because of insufficient space in an
   ///   existing buffer, the suggested new capacity will at least double
   ///   the existing buffer's storage.
+  @inline(__always)
   mutating func _claimCapacity(
     _ newSize: Int, minElementWidth: Int) -> (Int, UnsafeMutableRawPointer?) {
     if _fastPath(
@@ -431,11 +432,8 @@
       let usedEnd = _pointer(toElementAt:count)
 
       // Attempt to claim unused capacity in the buffer
-      if _fastPath(
-        buffer.grow(
-          oldBounds: UnsafeRawPointer(usedStart)..<UnsafeRawPointer(usedEnd),
-          newUsedCount: newSize)
-      ) {
+      if _fastPath(buffer.start == _baseAddress && newSize <= buffer.capacity) {
+        buffer.usedEnd = buffer.start + (newSize &<< elementShift)
         count = newSize
         return (0, usedEnd)
       }
@@ -452,6 +450,7 @@
   /// Effectively appends garbage to the String until it has newSize
   /// UTF-16 code units.  Returns a pointer to the garbage code units;
   /// you must immediately copy valid data into that storage.
+  @inline(__always)
   mutating func _growBuffer(
     _ newSize: Int, minElementWidth: Int
   ) -> UnsafeMutableRawPointer {
diff --git a/stdlib/public/core/StringInterpolation.swift b/stdlib/public/core/StringInterpolation.swift
index 0c7f270..8019df0 100644
--- a/stdlib/public/core/StringInterpolation.swift
+++ b/stdlib/public/core/StringInterpolation.swift
@@ -39,8 +39,6 @@
   ///
   /// Do not call this initializer directly. It is used by the compiler when
   /// interpreting string interpolations.
-  ///
-  /// - SeeAlso: `ExpressibleByStringInterpolation`
   @_inlineable
   public init<T>(stringInterpolationSegment expr: T) {
     self = String(describing: expr)
@@ -50,8 +48,6 @@
   ///
   /// Do not call this initializer directly. It is used by the compiler when
   /// interpreting string interpolations.
-  ///
-  /// - SeeAlso: `ExpressibleByStringInterpolation`
   @_inlineable
   public init<T: TextOutputStreamable> (stringInterpolationSegment expr: T) {
     self = _toStringReadOnlyStreamable(expr)
@@ -61,8 +57,6 @@
   ///
   /// Do not call this initializer directly. It is used by the compiler when
   /// interpreting string interpolations.
-  ///
-  /// - SeeAlso: `ExpressibleByStringInterpolation`
   @_inlineable
   public init<T: CustomStringConvertible> (stringInterpolationSegment expr: T) {
     self = _toStringReadOnlyPrintable(expr)
@@ -72,8 +66,6 @@
   ///
   /// Do not call this initializer directly. It is used by the compiler when
   /// interpreting string interpolations.
-  ///
-  /// - SeeAlso: `ExpressibleByStringInterpolation`
   public init<T: TextOutputStreamable & CustomStringConvertible> (stringInterpolationSegment expr: T) {
     self = _toStringReadOnlyStreamable(expr)
   }
diff --git a/stdlib/public/core/StringLegacy.swift b/stdlib/public/core/StringLegacy.swift
index a48a041..051750b 100644
--- a/stdlib/public/core/StringLegacy.swift
+++ b/stdlib/public/core/StringLegacy.swift
@@ -251,6 +251,7 @@
   ///     greater than 9, or `false` to use lowercase letters. The default is
   ///     `false`.
   // FIXME(integers): support a more general BinaryInteger protocol
+  // FIXME(integers): support larger bitwidths than 64
   public init<T : FixedWidthInteger>(
     _ value: T, radix: Int = 10, uppercase: Bool = false
   ) {
diff --git a/stdlib/public/core/StringRangeReplaceableCollection.swift.gyb b/stdlib/public/core/StringRangeReplaceableCollection.swift.gyb
index f489634..8d8c382 100644
--- a/stdlib/public/core/StringRangeReplaceableCollection.swift.gyb
+++ b/stdlib/public/core/StringRangeReplaceableCollection.swift.gyb
@@ -97,7 +97,6 @@
   ///   If `n` is negative, this is the same value as the result of `-n` calls
   ///   to `index(before:)`.
   ///
-  /// - SeeAlso: `index(_:offsetBy:limitedBy:)`
   /// - Complexity: O(*n*), where *n* is the absolute value of `n`.
   public func index(_ i: Index, offsetBy n: IndexDistance) -> Index {
     return characters.index(i, offsetBy: n)
@@ -139,7 +138,6 @@
   ///   would be beyond `limit` in the direction of movement. In that case,
   ///   the method returns `nil`.
   ///
-  /// - SeeAlso: `index(_:offsetBy:)`
   /// - Complexity: O(*n*), where *n* is the absolute value of `n`.
   public func index(
     _ i: Index, offsetBy n: IndexDistance, limitedBy limit: Index
diff --git a/stdlib/public/core/Substring.swift.gyb b/stdlib/public/core/Substring.swift.gyb
index c0ccbe5..6add01c 100644
--- a/stdlib/public/core/Substring.swift.gyb
+++ b/stdlib/public/core/Substring.swift.gyb
@@ -70,12 +70,12 @@
 /// Calling this initializer copies the contents of the substring to a new
 /// string.
 ///
-/// - Important: Don't store substrings longer than you need to perform a
+/// - Important: Don't store substrings longer than you need them to perform a
 ///   specific operation. A substring holds a reference to the entire storage
-///   of the string it came from, not just to the portion it presents, even
+///   of the string it comes from, not just to the portion it presents, even
 ///   when there is no other reference to the original string. Storing
-///   substrings may therefore prolong the lifetime of string data that is no
-///   longer otherwise accessible, which can appear to be memory leakage.
+///   substrings may, therefore, prolong the lifetime of string data that is
+///   no longer otherwise accessible, which can appear to be memory leakage.
 public struct Substring : StringProtocol {
   public typealias Index = String.Index
   public typealias IndexDistance = String.IndexDistance
@@ -221,10 +221,10 @@
   ///
   /// - Parameter body: A closure with a pointer parameter that points to a
   ///   null-terminated sequence of UTF-8 code units. If `body` has a return
-  ///   value, it is used as the return value for the `withCString(_:)`
-  ///   method. The pointer argument is valid only for the duration of the
-  ///   method's execution.
-  /// - Returns: The return value of the `body` closure parameter, if any.
+  ///   value, that value is also used as the return value for the
+  ///   `withCString(_:)` method. The pointer argument is valid only for the
+  ///   duration of the method's execution.
+  /// - Returns: The return value, if any, of the `body` closure parameter.
   public func withCString<Result>(
     _ body: (UnsafePointer<CChar>) throws -> Result) rethrows -> Result {
     return try _slice._base._core._withCSubstringAndLength(
@@ -246,11 +246,12 @@
   /// - Parameters:
   ///   - body: A closure with a pointer parameter that points to a
   ///     null-terminated sequence of code units. If `body` has a return
-  ///     value, it is used as the return value for the
+  ///     value, that value is also used as the return value for the
   ///     `withCString(encodedAs:_:)` method. The pointer argument is valid
   ///     only for the duration of the method's execution.
-  ///   - targetEncoding: The encoding in which the code units should be interpreted.
-  /// - Returns: The return value of the `body` closure parameter, if any.
+  ///   - targetEncoding: The encoding in which the code units should be
+  ///     interpreted.
+  /// - Returns: The return value, if any, of the `body` closure parameter.
   public func withCString<Result, TargetEncoding: _UnicodeEncoding>(
     encodedAs targetEncoding: TargetEncoding.Type,
     _ body: (UnsafePointer<TargetEncoding.CodeUnit>) throws -> Result
@@ -276,7 +277,8 @@
     _sanityCheck(r._core._owner !== _ephemeralContent._core._owner)
     return r
   }
-  
+
+  public // @testablw
   var _ephemeralContent : String {
     let wholeCore = _slice._base._core
     let subCore : _StringCore = wholeCore[
@@ -317,42 +319,37 @@
   }
 }
 
-extension Substring : Equatable {
-  public static func ==(lhs: Substring, rhs: Substring) -> Bool {
-    return String(lhs) == String(rhs)
+extension StringProtocol {
+  public static func ==<R: StringProtocol>(lhs: Self, rhs: R) -> Bool {
+    return lhs._ephemeralString == rhs._ephemeralString
   }
 
-  // These are not Equatable requirements, but sufficiently similar to be in
-  // this extension.
-  // FIXME(strings): should be gone if/when an implicit conversion from/to
-  // String is available.
-  // FIXME(ABI):
-  public static func ==(lhs: String, rhs: Substring) -> Bool {
-    return lhs == String(rhs)
-  }
-
-  public static func ==(lhs: Substring, rhs: String) -> Bool {
-    return String(lhs) == rhs
-  }
-
-  public static func !=(lhs: String, rhs: Substring) -> Bool {
-    return lhs != String(rhs)
-  }
-
-  public static func !=(lhs: Substring, rhs: String) -> Bool {
-    return String(lhs) != rhs
+  public static func !=<R: StringProtocol>(lhs: Self, rhs: R) -> Bool {
+    return lhs._ephemeralString != rhs._ephemeralString
   }
 }
 
-extension Substring : Comparable {
-  public static func <(lhs: Substring, rhs: Substring) -> Bool {
-    return String(lhs) < String(rhs)
+extension StringProtocol {
+  public static func < <R: StringProtocol>(lhs: Self, rhs: R) -> Bool {
+    return lhs._ephemeralString < rhs._ephemeralString
+  }
+
+  public static func > <R: StringProtocol>(lhs: Self, rhs: R) -> Bool {
+    return rhs < lhs
+  }
+
+  public static func <= <R: StringProtocol>(lhs: Self, rhs: R) -> Bool {
+    return !(rhs < lhs)
+  }
+
+  public static func >= <R: StringProtocol>(lhs: Self, rhs: R) -> Bool {
+    return !(lhs < rhs)
   }
 }
 
-extension Substring : Hashable {
+extension StringProtocol {
   public var hashValue : Int {
-    return String(self).hashValue
+    return self._ephemeralString.hashValue
   }
 }
 
diff --git a/stdlib/public/core/UTF16.swift b/stdlib/public/core/UTF16.swift
index 18fef14..1842dcd 100644
--- a/stdlib/public/core/UTF16.swift
+++ b/stdlib/public/core/UTF16.swift
@@ -56,19 +56,19 @@
     _ content: FromEncoding.EncodedScalar, from _: FromEncoding.Type
   ) -> EncodedScalar? {
     if _fastPath(FromEncoding.self == UTF8.self) {
-      let c = unsafeBitCast(content, to: UTF8.EncodedScalar.self)
-      var b = c._bitCount
-      b = b &- 8
+      let c = _identityCast(content, to: UTF8.EncodedScalar.self)
+      var b = c.count
+      b = b &- 1
       if _fastPath(b == 0) {
         return EncodedScalar(
-          _storage: c._storage & 0b0__111_1111, _bitCount: 16)
+          _storage: (c._biasedBits &- 0x1) & 0b0__111_1111, _bitCount: 16)
       }
-      var s = c._storage
+      var s = c._biasedBits &- 0x01010101
       var r = s
       r &<<= 6
       s &>>= 8
       r |= s & 0b0__11_1111
-      b = b &- 8
+      b = b &- 1
       
       if _fastPath(b == 0) {
         return EncodedScalar(_storage: r & 0b0__111_1111_1111, _bitCount: 16)
@@ -76,7 +76,7 @@
       r &<<= 6
       s &>>= 8
       r |= s & 0b0__11_1111
-      b = b &- 8
+      b = b &- 1
       
       if _fastPath(b == 0) {
         return EncodedScalar(_storage: r & 0xFFFF, _bitCount: 16)
diff --git a/stdlib/public/core/UTF8.swift b/stdlib/public/core/UTF8.swift
index 35de80c..afd2fd9 100644
--- a/stdlib/public/core/UTF8.swift
+++ b/stdlib/public/core/UTF8.swift
@@ -18,10 +18,10 @@
 
 extension Unicode.UTF8 : _UnicodeEncoding {
   public typealias CodeUnit = UInt8
-  public typealias EncodedScalar = _UIntBuffer<UInt32, UInt8>
+  public typealias EncodedScalar = _ValidUTF8Buffer<UInt32>
 
   public static var encodedReplacementCharacter : EncodedScalar {
-    return EncodedScalar(_storage: 0xbdbfef, _bitCount: 24)
+    return EncodedScalar.encodedReplacementCharacter
   }
 
   @inline(__always)
@@ -33,21 +33,23 @@
   @inline(__always)
   @_inlineable
   public static func decode(_ source: EncodedScalar) -> Unicode.Scalar {
-    let bits = source._storage
-    switch source._bitCount {
-    case 8:
-      return Unicode.Scalar(_unchecked: bits)
-    case 16:
+    switch source.count {
+    case 1:
+      return Unicode.Scalar(_unchecked: source._biasedBits &- 0x01)
+    case 2:
+      let bits = source._biasedBits &- 0x0101
       var value = (bits & 0b0_______________________11_1111__0000_0000) &>> 8
       value    |= (bits & 0b0________________________________0001_1111) &<< 6
       return Unicode.Scalar(_unchecked: value)
-    case 24:
+    case 3:
+      let bits = source._biasedBits &- 0x010101
       var value = (bits & 0b0____________11_1111__0000_0000__0000_0000) &>> 16
       value    |= (bits & 0b0_______________________11_1111__0000_0000) &>> 2
       value    |= (bits & 0b0________________________________0000_1111) &<< 12
       return Unicode.Scalar(_unchecked: value)
     default:
       _sanityCheck(source.count == 4)
+      let bits = source._biasedBits &- 0x01010101
       var value = (bits & 0b0_11_1111__0000_0000__0000_0000__0000_0000) &>> 24
       value    |= (bits & 0b0____________11_1111__0000_0000__0000_0000) &>> 10
       value    |= (bits & 0b0_______________________11_1111__0000_0000) &<< 4
@@ -63,28 +65,26 @@
   ) -> EncodedScalar? {
     var c = source.value
     if _fastPath(c < (1&<<7)) {
-      return EncodedScalar(_storage: c, _bitCount: 8)
+      return EncodedScalar(_containing: UInt8(c))
     }
     var o = c & 0b0__0011_1111
     c &>>= 6
     o &<<= 8
     if _fastPath(c < (1&<<5)) {
-      return EncodedScalar(
-        _storage: o | c | 0b0__1000_0000__1100_0000, _bitCount: 16)
+      return EncodedScalar(_biasedBits: (o | c) &+ 0b0__1000_0001__1100_0001)
     }
     o |= c & 0b0__0011_1111
     c &>>= 6
     o &<<= 8
     if _fastPath(c < (1&<<4)) {
       return EncodedScalar(
-        _storage: o | c | 0b0__1000_0000__1000_0000__1110_0000, _bitCount: 24)
+        _biasedBits: (o | c) &+ 0b0__1000_0001__1000_0001__1110_0001)
     }
     o |= c & 0b0__0011_1111
     c &>>= 6
     o &<<= 8
     return EncodedScalar(
-      _storage: o | c | 0b0__1000_0000__1000_0000__1000_0000__1111_0000,
-      _bitCount: 32)
+      _biasedBits: (o | c ) &+ 0b0__1000_0001__1000_0001__1000_0001__1111_0001)
   }
 
   @inline(__always)
@@ -92,31 +92,28 @@
     _ content: FromEncoding.EncodedScalar, from _: FromEncoding.Type
   ) -> EncodedScalar? {
     if _fastPath(FromEncoding.self == UTF16.self) {
-      let c = unsafeBitCast(content, to: UTF16.EncodedScalar.self)
+      let c = _identityCast(content, to: UTF16.EncodedScalar.self)
       var u0 = UInt16(extendingOrTruncating: c._storage) 
       if _fastPath(u0 < 0x80) {
-        return EncodedScalar(containing: UInt8(extendingOrTruncating: u0))
+        return EncodedScalar(_containing: UInt8(extendingOrTruncating: u0))
       }
       var r = UInt32(u0 & 0b0__11_1111)
       r &<<= 8
       u0 &>>= 6
       if _fastPath(u0 < (1&<<5)) {
         return EncodedScalar(
-          _storage: UInt32(u0) | r | 0b0__1000_0000__1100_0000,
-          _bitCount: 16)
+          _biasedBits: (UInt32(u0) | r) &+ 0b0__1000_0001__1100_0001)
       }
       r |= UInt32(u0 & 0b0__11_1111)
       r &<<= 8
       if _fastPath(u0 & (0xF800 &>> 6) != (0xD800 &>> 6)) {
         u0 &>>= 6
         return EncodedScalar(
-          _storage: UInt32(u0)
-            | r | 0b0__1000_0000__1000_0000__1000_0000__1110_0000,
-          _bitCount: 24)
+          _biasedBits: (UInt32(u0) | r) &+ 0b0__1000_0001__1000_0001__1110_0001)
       }
     }
     else if _fastPath(FromEncoding.self == UTF8.self) {
-      return unsafeBitCast(content, to: UTF8.EncodedScalar.self)
+      return _identityCast(content, to: UTF8.EncodedScalar.self)
     }
     return encode(FromEncoding.decode(content))
   }
@@ -210,10 +207,9 @@
   @inline(__always)
   @_inlineable
   public func _bufferedScalar(bitCount: UInt8) -> Encoding.EncodedScalar {
-    return Encoding.EncodedScalar(
-      _storage: _buffer._storage.byteSwapped &>> (32 - bitCount),
-      _bitCount: bitCount
-    )
+    let x = UInt32(extendingOrTruncating: _buffer._storage.byteSwapped)
+    let shift = 32 &- bitCount
+    return Encoding.EncodedScalar(_biasedBits: (x &+ 0x01010101) &>> shift)
   }
 }
 
@@ -280,9 +276,8 @@
   }
   
   public func _bufferedScalar(bitCount: UInt8) -> Encoding.EncodedScalar {
-    var r = _buffer
-    r._bitCount = bitCount
-    return r
+    let x = UInt32(_buffer._storage) &+ 0x01010101
+    return _ValidUTF8Buffer(_biasedBits: x & ._lowBits(bitCount))
   }
 }
 
diff --git a/stdlib/public/core/UTFEncoding.swift b/stdlib/public/core/UTFEncoding.swift
index 5465284..0587d96 100644
--- a/stdlib/public/core/UTFEncoding.swift
+++ b/stdlib/public/core/UTFEncoding.swift
@@ -20,13 +20,13 @@
   associatedtype Encoding : _UnicodeEncoding_
 
   func _parseMultipleCodeUnits() -> (isValid: Bool, bitCount: UInt8)
-  func _bufferedScalar(bitCount: UInt8) -> _UIntBuffer<UInt32, Encoding.CodeUnit>
+  func _bufferedScalar(bitCount: UInt8) -> Encoding.EncodedScalar
   
   var _buffer: _UIntBuffer<UInt32, Encoding.CodeUnit> { get set }
 }
 
 extension _UTFParser
-where Encoding.EncodedScalar == _UIntBuffer<UInt32, Encoding.CodeUnit> {
+where Encoding.EncodedScalar : RangeReplaceableCollection {
 
   @inline(__always)
   public mutating func parseScalar<I : IteratorProtocol>(
@@ -39,7 +39,7 @@
       guard let codeUnit = input.next() else { return .emptyInput }
       // ASCII, return immediately.
       if Encoding._isScalar(codeUnit) {
-        return .valid(Encoding.EncodedScalar(containing: codeUnit))
+        return .valid(Encoding.EncodedScalar(CollectionOfOne(codeUnit)))
       }
       // Non-ASCII, proceed to buffering mode.
       _buffer.append(codeUnit)
@@ -50,7 +50,7 @@
       // to bufferless mode once we've exhausted it.
       let codeUnit = Encoding.CodeUnit(extendingOrTruncating: _buffer._storage)
       _buffer.remove(at: _buffer.startIndex)
-      return .valid(Encoding.EncodedScalar(containing: codeUnit))
+      return .valid(Encoding.EncodedScalar(CollectionOfOne(codeUnit)))
     }
     // Buffering mode.
     // Fill buffer back to 4 bytes (or as many as are left in the iterator).
diff --git a/stdlib/public/core/UnfoldSequence.swift b/stdlib/public/core/UnfoldSequence.swift
index 52edbbe..85700a5 100644
--- a/stdlib/public/core/UnfoldSequence.swift
+++ b/stdlib/public/core/UnfoldSequence.swift
@@ -38,8 +38,6 @@
 ///   returns the next element.
 /// - Returns: A sequence that starts with `first` and continues with every
 ///   value returned by passing the previous element to `next`.
-///
-/// - SeeAlso: `sequence(state:next:)`
 public func sequence<T>(first: T, next: @escaping (T) -> T?) -> UnfoldFirstSequence<T> {
   // The trivial implementation where the state is the next value to return
   // has the downside of being unnecessarily eager (it evaluates `next` one
@@ -84,8 +82,6 @@
 /// - Parameter next: A closure that accepts an `inout` state and returns the
 ///   next element of the sequence.
 /// - Returns: A sequence that yields each successive value from `next`.
-///
-/// - SeeAlso: `sequence(first:next:)`
 public func sequence<T, State>(state: State, next: @escaping (inout State) -> T?)
   -> UnfoldSequence<T, State> {
   return UnfoldSequence(_state: state, _next: next)
@@ -102,8 +98,6 @@
 ///
 /// Instances of `UnfoldSequence` are created with the functions
 /// `sequence(first:next:)` and `sequence(state:next:)`.
-///
-/// - SeeAlso: `sequence(first:next:)`, `sequence(state:next:)`
 public struct UnfoldSequence<Element, State> : Sequence, IteratorProtocol {
   public mutating func next() -> Element? {
     guard !_done else { return nil }
diff --git a/stdlib/public/core/Unicode.swift b/stdlib/public/core/Unicode.swift
index 3280235..97b8ee3 100644
--- a/stdlib/public/core/Unicode.swift
+++ b/stdlib/public/core/Unicode.swift
@@ -20,8 +20,6 @@
 /// Each `UnicodeDecodingResult` instance can represent a Unicode scalar value,
 /// an indication that no more Unicode scalars are available, or an indication
 /// of a decoding error.
-/// 
-/// - SeeAlso: `UnicodeCodec.decode(next:)`
 @_fixed_layout
 public enum UnicodeDecodingResult : Equatable {
   /// A decoded Unicode scalar value.
@@ -59,8 +57,6 @@
 /// UTF-8, UTF-16, and UTF-32 encoding schemes as the `UTF8`, `UTF16`, and
 /// `UTF32` types, respectively. Use the `Unicode.Scalar` type to work with
 /// decoded Unicode scalar values.
-///
-/// - SeeAlso: `UTF8`, `UTF16`, `UTF32`, `Unicode.Scalar`
 public protocol UnicodeCodec : Unicode.Encoding {
 
   /// Creates an instance of the codec.
@@ -258,21 +254,22 @@
   ///   - input: The Unicode scalar value to encode.
   ///   - processCodeUnit: A closure that processes one code unit argument at a
   ///     time.
+  @inline(__always)
   public static func encode(
     _ input: Unicode.Scalar,
     into processCodeUnit: (CodeUnit) -> Void
   ) {
-    var s = encode(input)!._storage
-    processCodeUnit(UInt8(extendingOrTruncating: s))
+    var s = encode(input)!._biasedBits
+    processCodeUnit(UInt8(extendingOrTruncating: s) &- 0x01)
     s &>>= 8
     if _fastPath(s == 0) { return }
-    processCodeUnit(UInt8(extendingOrTruncating: s))
+    processCodeUnit(UInt8(extendingOrTruncating: s) &- 0x01)
     s &>>= 8
     if _fastPath(s == 0) { return }
-    processCodeUnit(UInt8(extendingOrTruncating: s))
+    processCodeUnit(UInt8(extendingOrTruncating: s) &- 0x01)
     s &>>= 8
     if _fastPath(s == 0) { return }
-    processCodeUnit(UInt8(extendingOrTruncating: s))
+    processCodeUnit(UInt8(extendingOrTruncating: s) &- 0x01)
   }
 
   /// Returns a Boolean value indicating whether the specified code unit is a
@@ -763,8 +760,6 @@
   ///   surrogate pair when encoded in UTF-16. To check whether `x` is
   ///   represented by a surrogate pair, use `UTF16.width(x) == 2`.
   /// - Returns: The leading surrogate code unit of `x` when encoded in UTF-16.
-  ///
-  /// - SeeAlso: `UTF16.width(_:)`, `UTF16.trailSurrogate(_:)`
   public static func leadSurrogate(_ x: Unicode.Scalar) -> UTF16.CodeUnit {
     _precondition(width(x) == 2)
     return 0xD800 + UTF16.CodeUnit(extendingOrTruncating:
@@ -788,8 +783,6 @@
   ///   surrogate pair when encoded in UTF-16. To check whether `x` is
   ///   represented by a surrogate pair, use `UTF16.width(x) == 2`.
   /// - Returns: The trailing surrogate code unit of `x` when encoded in UTF-16.
-  ///
-  /// - SeeAlso: `UTF16.width(_:)`, `UTF16.leadSurrogate(_:)`
   public static func trailSurrogate(_ x: Unicode.Scalar) -> UTF16.CodeUnit {
     _precondition(width(x) == 2)
     return 0xDC00 + UTF16.CodeUnit(extendingOrTruncating:
@@ -817,8 +810,6 @@
   /// - Parameter x: A UTF-16 code unit.
   /// - Returns: `true` if `x` is a high-surrogate code unit; otherwise,
   ///   `false`.
-  ///
-  /// - SeeAlso: `UTF16.width(_:)`, `UTF16.leadSurrogate(_:)`
   public static func isLeadSurrogate(_ x: CodeUnit) -> Bool {
     return 0xD800...0xDBFF ~= x
   }
@@ -845,8 +836,6 @@
   /// - Parameter x: A UTF-16 code unit.
   /// - Returns: `true` if `x` is a low-surrogate code unit; otherwise,
   ///   `false`.
-  ///
-  /// - SeeAlso: `UTF16.width(_:)`, `UTF16.leadSurrogate(_:)`
   public static func isTrailSurrogate(_ x: CodeUnit) -> Bool {
     return 0xDC00...0xDFFF ~= x
   }
@@ -915,22 +904,43 @@
   ) -> (count: Int, isASCII: Bool)?
     where Encoding.CodeUnit == Input.Element {
 
+    var utf16Count = 0
     var i = input
-    var isASCII = true
-    var count = 0
-    let errorCount = Encoding.ForwardParser._parse(
-      &i, repairingIllFormedSequences: repairingIllFormedSequences
-    ) {
-      if isASCII {
-        isASCII = Unicode.ASCII.transcode($0, from: Encoding.self) != nil
+    var d = Encoding.ForwardParser()
+
+    // Fast path for ASCII in a UTF8 buffer
+    if sourceEncoding == Unicode.UTF8.self {
+      var peek: Encoding.CodeUnit = 0
+      while let u = i.next() {
+        peek = u
+        guard _fastPath(peek < 0x80) else { break }
+        utf16Count = utf16Count + 1
       }
-      count += numericCast(self._transcode($0, from: Encoding.self).count)
+      if _fastPath(peek < 0x80) { return (utf16Count, true) }
+      
+      var d1 = UTF8.ForwardParser()
+      d1._buffer.append(numericCast(peek))
+      d = _identityCast(d1, to: Encoding.ForwardParser.self)
     }
     
-    if _fastPath(errorCount == 0 || repairingIllFormedSequences) {
-      return (count: count, isASCII: isASCII)
+    var utf16BitUnion: CodeUnit = 0
+    while true {
+      let s = d.parseScalar(from: &i)
+      if _fastPath(s._valid != nil), let scalarContent = s._valid {
+        let utf16 = transcode(scalarContent, from: sourceEncoding)
+          ._unsafelyUnwrappedUnchecked
+        utf16Count += utf16.count
+        for x in utf16 { utf16BitUnion |= x }
+      }
+      else if let _ = s._error {
+        guard _fastPath(repairingIllFormedSequences) else { return nil }
+        utf16Count += 1
+        utf16BitUnion |= 0xFFFD
+      }
+      else {
+        return (utf16Count, utf16BitUnion < 0x80)
+      }
     }
-    else { return nil }
   }
 }
 
diff --git a/stdlib/public/core/UnicodeEncoding.swift b/stdlib/public/core/UnicodeEncoding.swift
index 2a3224f..c2555f3 100644
--- a/stdlib/public/core/UnicodeEncoding.swift
+++ b/stdlib/public/core/UnicodeEncoding.swift
@@ -88,7 +88,8 @@
   internal static func _transcode<FromEncoding : Unicode.Encoding>(
     _ content: FromEncoding.EncodedScalar, from _: FromEncoding.Type
   ) -> EncodedScalar {
-    return _encode(FromEncoding.decode(content))
+    return transcode(content, from: FromEncoding.self)
+      ?? encodedReplacementCharacter
   }
 }
 
diff --git a/stdlib/public/core/UnicodeParser.swift b/stdlib/public/core/UnicodeParser.swift
index e92c134..0a5ee64 100644
--- a/stdlib/public/core/UnicodeParser.swift
+++ b/stdlib/public/core/UnicodeParser.swift
@@ -24,6 +24,18 @@
   /// error (the length of the longest prefix of a valid encoding
   /// sequence that could be recognized).
   case error(length: Int)
+
+    @_versioned
+    internal var _valid: T? {
+      if case .valid(let result) = self { return result }
+      return nil
+    }
+
+    @_versioned
+    internal var _error: Int? {
+      if case .error(let result) = self { return result }
+      return nil
+    }
   }
 }
 
@@ -120,3 +132,50 @@
   }
 }
 
+/*
+extension Unicode {
+  @_fixed_layout
+  @_versioned
+  internal struct _TranscodingIterator<
+    SourceCodeUnits : IteratorProtocol,
+    Parser : Unicode.Parser,
+    TargetEncoding : Unicode.Encoding
+  > where Parser.Encoding.CodeUnit == SourceCodeUnits.Element {
+    
+    @inline(__always)
+    @_inlineable
+    public init(source: SourceCodeUnits, parser: Parser) {
+      _scalars = _ParsingIterator(codeUnits: source, parser: parser)
+      let firstScalar_ = _scalars.next()
+      if _fastPath(firstScalar_ != nil), let firstScalar = firstScalar_ {
+        _codeUnits = TargetEncoding._transcode(
+          firstScalar, from: Parser.Encoding.self).makeIterator()
+      }
+      else {
+        _codeUnits = TargetEncoding._encode(
+          UnicodeScalar(_unchecked: 0)).makeIterator()
+        while _codeUnits.next() != nil {  }
+        return
+      }
+    }
+
+    internal var _scalars: _ParsingIterator<SourceCodeUnits, Parser>
+    internal var _codeUnits: TargetEncoding.EncodedScalar.Iterator
+  }
+}
+
+
+extension Unicode._TranscodingIterator : IteratorProtocol, Sequence {
+  @inline(__always)
+  @_inlineable
+  mutating public func next() -> TargetEncoding.CodeUnit? {
+    if let x = _codeUnits.next() { return x }
+    let nextScalar_ = _scalars.next()
+    if _fastPath(nextScalar_ != nil), let nextScalar = nextScalar_ {
+      _codeUnits = TargetEncoding._transcode(
+        nextScalar, from: Parser.Encoding.self).makeIterator()
+    }
+    return _codeUnits.next()
+  }
+}
+*/
diff --git a/stdlib/public/core/UnicodeScalar.swift b/stdlib/public/core/UnicodeScalar.swift
index 78b73b7..a2cece1 100644
--- a/stdlib/public/core/UnicodeScalar.swift
+++ b/stdlib/public/core/UnicodeScalar.swift
@@ -103,7 +103,7 @@
       self._value = v
       return
     }
-    // Return nil in case of invalid unicode scalar value.
+    // Return nil in case of an invalid unicode scalar value.
     return nil
   }
 
@@ -122,7 +122,7 @@
   ///     print(bap!)
   ///     // Prints "밥"
   ///
-  /// In case an invalid input value, nil is returned.
+  /// In case of an invalid input value, nil is returned.
   ///
   ///     let codepoint: UInt32 = extValue // This might be an invalid value. 
   ///     if let bap = Unicode.Scalar(codepoint) {
@@ -321,7 +321,7 @@
   ///     print(emoji)
   ///     // Prints "🎉"
   ///
-  /// In case an invalid input value, nil is returned.
+  /// In case of an invalid input value, nil is returned.
   ///
   ///     let codepoint: UInt32 = extValue // This might be an invalid value. 
   ///     if let emoji = Unicode.Scalar(codepoint) {
diff --git a/stdlib/public/core/UnsafeBufferPointer.swift.gyb b/stdlib/public/core/UnsafeBufferPointer.swift.gyb
index f000583..1e39a5e 100644
--- a/stdlib/public/core/UnsafeBufferPointer.swift.gyb
+++ b/stdlib/public/core/UnsafeBufferPointer.swift.gyb
@@ -57,8 +57,6 @@
 /// instances stored in the underlying memory. However, initializing another
 /// collection with an `${Self}` instance copies the instances out of the
 /// referenced memory and into the new collection.
-///
-/// - SeeAlso: `Unsafe${Mutable}Pointer`, `Unsafe${Mutable}RawBufferPointer`
 @_fixed_layout
 public struct Unsafe${Mutable}BufferPointer<Element>
   : _${Mutable}Indexable, ${Mutable}Collection, RandomAccessCollection {
diff --git a/stdlib/public/core/UnsafePointer.swift.gyb b/stdlib/public/core/UnsafePointer.swift.gyb
index 3bbde52..97ffb9f 100644
--- a/stdlib/public/core/UnsafePointer.swift.gyb
+++ b/stdlib/public/core/UnsafePointer.swift.gyb
@@ -739,9 +739,9 @@
   ///   - body: A closure that takes a ${Mutable.lower()} typed pointer to the
   ///     same memory as this pointer, only bound to type `T`. The closure's
   ///     pointer argument is valid only for the duration of the closure's
-  ///     execution. If `body` has a return value, it is used as the return
-  ///     value for the `withMemoryRebound(to:capacity:_:)` method.
-  /// - Returns: The return value of the `body` closure parameter, if any.
+  ///     execution. If `body` has a return value, that value is also used as
+  ///     the return value for the `withMemoryRebound(to:capacity:_:)` method.
+  /// - Returns: The return value, if any, of the `body` closure parameter.
   @_inlineable
   public func withMemoryRebound<T, Result>(to type: T.Type, capacity count: Int,
     _ body: (${Self}<T>) throws -> Result
@@ -845,8 +845,6 @@
   /// - Returns: The distance from this pointer to `end`, in strides of the
   ///   pointer's `Pointee` type. To access the stride, use
   ///   `MemoryLayout<Pointee>.stride`.
-  ///
-  /// - SeeAlso: `MemoryLayout`
   @_inlineable
   public func distance(to end: ${Self}) -> Int {
     return end - self
@@ -867,8 +865,6 @@
   ///   zero.
   /// - Returns: A pointer offset from this pointer by `n` instances of the
   ///   `Pointee` type.
-  ///
-  /// - SeeAlso: `MemoryLayout`
   @_inlineable
   public func advanced(by n: Int) -> ${Self} {
     return self + n
@@ -950,8 +946,6 @@
   ///     `lhs`. To access the stride, use `MemoryLayout<Pointee>.stride`.
   /// - Returns: A pointer offset from `lhs` by `rhs` instances of the
   ///   `Pointee` type.
-  ///
-  /// - SeeAlso: `MemoryLayout`
   @_transparent
   public static func + (lhs: ${Self}<Pointee>, rhs: Int) -> ${Self}<Pointee> {
     return ${Self}(Builtin.gep_Word(
@@ -971,8 +965,6 @@
   ///   - rhs: A pointer.
   /// - Returns: A pointer offset from `rhs` by `lhs` instances of the
   ///   `Pointee` type.
-  ///
-  /// - SeeAlso: `MemoryLayout`
   @_transparent
   public static func + (lhs: Int, rhs: ${Self}<Pointee>) -> ${Self}<Pointee> {
     return rhs + lhs
@@ -991,8 +983,6 @@
   ///     `lhs`. To access the stride, use `MemoryLayout<Pointee>.stride`.
   /// - Returns: A pointer offset backward from `lhs` by `rhs` instances of
   ///   the `Pointee` type.
-  ///
-  /// - SeeAlso: `MemoryLayout`
   @_transparent
   public static func - (lhs: ${Self}<Pointee>, rhs: Int) -> ${Self}<Pointee> {
     return lhs + -rhs
@@ -1014,8 +1004,6 @@
   /// - Returns: The distance from `lhs` to `rhs`, in strides of the pointer's
   ///   `Pointee` type. To access the stride, use
   ///   `MemoryLayout<Pointee>.stride`.
-  ///
-  /// - SeeAlso: `MemoryLayout`
   @_transparent
   public static func - (lhs: ${Self}<Pointee>, rhs: ${Self}<Pointee>) -> Int {
     return
@@ -1035,8 +1023,6 @@
   ///   - lhs: A pointer to advance in place.
   ///   - rhs: The number of strides of the pointer's `Pointee` type to offset
   ///     `lhs`. To access the stride, use `MemoryLayout<Pointee>.stride`.
-  ///
-  /// - SeeAlso: `MemoryLayout`
   @_transparent
   public static func += (lhs: inout ${Self}<Pointee>, rhs: Int) {
     lhs = lhs + rhs
@@ -1053,8 +1039,6 @@
   ///   - lhs: A pointer to advance in place.
   ///   - rhs: The number of strides of the pointer's `Pointee` type to offset
   ///     `lhs`. To access the stride, use `MemoryLayout<Pointee>.stride`.
-  ///
-  /// - SeeAlso: `MemoryLayout`
   @_transparent
   public static func -= (lhs: inout ${Self}<Pointee>, rhs: Int) {
     lhs = lhs - rhs
diff --git a/stdlib/public/core/UnsafeRawBufferPointer.swift.gyb b/stdlib/public/core/UnsafeRawBufferPointer.swift.gyb
index 5127d76..d9cfdab 100644
--- a/stdlib/public/core/UnsafeRawBufferPointer.swift.gyb
+++ b/stdlib/public/core/UnsafeRawBufferPointer.swift.gyb
@@ -92,8 +92,6 @@
 ///
 ///     destBytes[0..<n] = someBytes[n..<(n + n)]
 % end
-///
-/// - SeeAlso: `Unsafe${Mutable}RawPointer`, `Unsafe${Mutable}BufferPointer`
 @_fixed_layout
 public struct Unsafe${Mutable}RawBufferPointer
   : ${Mutable}Collection, RandomAccessCollection {
@@ -596,13 +594,11 @@
 ///   - arg: An instance to temporarily access through a mutable raw buffer
 ///     pointer.
 ///   - body: A closure that takes a raw buffer pointer to the bytes of `arg`
-///     as its sole argument. If the closure has a return value, it is used as
-///     the return value of the `withUnsafeMutableBytes(of:_:)` function. The
-///     buffer pointer argument is valid only for the duration of the
-///     closure's execution.
-/// - Returns: The return value of the `body` closure, if any.
-///
-/// - SeeAlso: `withUnsafeMutablePointer(to:_:)`, `withUnsafeBytes(of:_:)`
+///     as its sole argument. If the closure has a return value, that value is
+///     also used as the return value of the `withUnsafeMutableBytes(of:_:)`
+///     function. The buffer pointer argument is valid only for the duration
+///     of the closure's execution.
+/// - Returns: The return value, if any, of the `body` closure.
 @_inlineable
 public func withUnsafeMutableBytes<T, Result>(
   of arg: inout T,
@@ -625,13 +621,11 @@
 /// - Parameters:
 ///   - arg: An instance to temporarily access through a raw buffer pointer.
 ///   - body: A closure that takes a raw buffer pointer to the bytes of `arg`
-///     as its sole argument. If the closure has a return value, it is used as
-///     the return value of the `withUnsafeBytes(of:_:)` function. The buffer
-///     pointer argument is valid only for the duration of the closure's
-///     execution.
-/// - Returns: The return value of the `body` closure, if any.
-///
-/// - SeeAlso: `withUnsafePointer(to:_:)`, `withUnsafeMutableBytes(of:_:)`
+///     as its sole argument. If the closure has a return value, that value is
+///     also used as the return value of the `withUnsafeBytes(of:_:)`
+///     function. The buffer pointer argument is valid only for the duration
+///     of the closure's execution.
+/// - Returns: The return value, if any, of the `body` closure.
 @_inlineable
 public func withUnsafeBytes<T, Result>(
   of arg: inout T,
diff --git a/stdlib/public/core/UnsafeRawPointer.swift.gyb b/stdlib/public/core/UnsafeRawPointer.swift.gyb
index e1d845a..e439b3b 100644
--- a/stdlib/public/core/UnsafeRawPointer.swift.gyb
+++ b/stdlib/public/core/UnsafeRawPointer.swift.gyb
@@ -427,8 +427,6 @@
   ///     bytes.
   /// - Returns: A pointer to a newly allocated region of memory. The memory is
   ///   allocated, but not initialized.
-  ///
-  /// - SeeAlso: `UnsafeMutablePointer`
   @_inlineable
   public static func allocate(
     bytes size: Int, alignedTo: Int
@@ -509,8 +507,6 @@
   ///
   /// - Parameter to: The type `T` that the memory has already been bound to.
   /// - Returns: A typed pointer to the same memory as this raw pointer.
-  ///
-  /// - SeeAlso: `bindMemory(to:capacity:)`
   @_transparent
   public func assumingMemoryBound<T>(to: T.Type) -> Unsafe${Mutable}Pointer<T> {
     return Unsafe${Mutable}Pointer<T>(_rawValue)
diff --git a/stdlib/public/core/ValidUTF8Buffer.swift b/stdlib/public/core/ValidUTF8Buffer.swift
new file mode 100644
index 0000000..b105376
--- /dev/null
+++ b/stdlib/public/core/ValidUTF8Buffer.swift
@@ -0,0 +1,176 @@
+//===--- ValidUTF8Buffer.swift - Bounded Collection of Valid UTF-8 --------===//
+//
+// This source file is part of the Swift.org open source project
+//
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+//
+//  Stores valid UTF8 inside an unsigned integer.
+//
+//  Actually this basic type could be used to store any UInt8s that cannot be
+//  0xFF
+//
+//===----------------------------------------------------------------------===//
+@_fixed_layout
+public struct _ValidUTF8Buffer<
+  Storage: UnsignedInteger & FixedWidthInteger
+> {
+  public typealias Element = Unicode.UTF8.CodeUnit
+  @_versioned
+  internal var _biasedBits: Storage
+
+  @_versioned
+  internal init(_biasedBits: Storage) {
+    self._biasedBits = _biasedBits
+  }
+  
+  @_versioned
+  internal init(_containing e: Element) {
+    _sanityCheck(
+      e != 192 && e != 193 && !(245...255).contains(e), "invalid UTF8 byte")
+    _biasedBits = Storage(extendingOrTruncating: e &+ 1)
+  }
+}
+
+extension _ValidUTF8Buffer : Sequence {
+  public typealias SubSequence = RangeReplaceableRandomAccessSlice<_ValidUTF8Buffer>
+  
+  public struct Iterator : IteratorProtocol, Sequence {
+    public init(_ x: _ValidUTF8Buffer) { _biasedBits = x._biasedBits }
+    
+    public mutating func next() -> Element? {
+      if _biasedBits == 0 { return nil }
+      defer { _biasedBits >>= 8 }
+      return Element(extendingOrTruncating: _biasedBits) &- 1
+    }
+    internal var _biasedBits: Storage
+  }
+  
+  public func makeIterator() -> Iterator {
+    return Iterator(self)
+  }
+}
+
+extension _ValidUTF8Buffer : Collection {  
+  public typealias IndexDistance = Int
+  
+  public struct Index : Comparable {
+    internal var _biasedBits: Storage
+    
+    internal init(_biasedBits: Storage) { self._biasedBits = _biasedBits }
+    
+    public static func == (lhs: Index, rhs: Index) -> Bool {
+      return lhs._biasedBits == rhs._biasedBits
+    }
+    public static func < (lhs: Index, rhs: Index) -> Bool {
+      return lhs._biasedBits > rhs._biasedBits
+    }
+  }
+
+  public var startIndex : Index {
+    return Index(_biasedBits: _biasedBits)
+  }
+  
+  public var endIndex : Index {
+    return Index(_biasedBits: 0)
+  }
+
+  public var count : IndexDistance {
+    return Storage.bitWidth &>> 3 &- _biasedBits.leadingZeroBitCount &>> 3
+  }
+  
+  public func index(after i: Index) -> Index {
+    _debugPrecondition(i._biasedBits != 0)
+    return Index(_biasedBits: i._biasedBits >> 8)
+  }
+
+  public subscript(i: Index) -> Element {
+    return Element(extendingOrTruncating: i._biasedBits) &- 1
+  }
+}
+
+extension _ValidUTF8Buffer : BidirectionalCollection {
+  public func index(before i: Index) -> Index {
+    let offset = _ValidUTF8Buffer(_biasedBits: i._biasedBits).count
+    _debugPrecondition(offset != 0)
+    return Index(_biasedBits: _biasedBits &>> (offset &<< 3 - 8))
+  }
+}
+
+extension _ValidUTF8Buffer : RandomAccessCollection {
+  public typealias Indices = DefaultRandomAccessIndices<_ValidUTF8Buffer>
+  
+  public func distance(from i: Index, to j: Index) -> IndexDistance {
+    _debugPrecondition(indices.contains(i))
+    _debugPrecondition(indices.contains(j))
+    return (
+      i._biasedBits.leadingZeroBitCount - j._biasedBits.leadingZeroBitCount
+    ) &>> 3
+  }
+  
+  public func index(_ i: Index, offsetBy n: IndexDistance) -> Index {
+    let startOffset = distance(from: startIndex, to: i)
+    let newOffset = startOffset + n
+    _debugPrecondition(newOffset >= 0)
+    _debugPrecondition(newOffset <= count)
+    return Index(_biasedBits: _biasedBits._fullShiftRight(newOffset &<< 3))
+  }
+}
+
+extension _ValidUTF8Buffer : RangeReplaceableCollection {
+  public init() {
+    _biasedBits = 0
+  }
+
+  public var capacity: IndexDistance {
+    return Storage.bitWidth / Element.bitWidth
+  }
+
+  public mutating func append(_ e: Element) {
+    _debugPrecondition(count + 1 <= capacity)
+    _sanityCheck(
+      e != 192 && e != 193 && !(245...255).contains(e), "invalid UTF8 byte")
+    _biasedBits |= Storage(e &+ 1) &<< (count &<< 3)
+  }
+  
+  @inline(__always)
+  public mutating func replaceSubrange<C: Collection>(
+    _ target: Range<Index>, with replacement: C
+  ) where C.Element == Element {
+    _debugPrecondition(indices.contains(target.lowerBound))
+    _debugPrecondition(indices.contains(target.upperBound))
+    var r = _ValidUTF8Buffer()
+    for x in self[..<target.lowerBound] { r.append(x) }
+    for x in replacement                { r.append(x) }
+    for x in self[target.upperBound...] { r.append(x) }
+    self = r
+  }
+
+  public mutating func append<T>(contentsOf other: _ValidUTF8Buffer<T>) {
+    _debugPrecondition(count + other.count <= capacity)
+    _biasedBits |= Storage(extendingOrTruncating: other._biasedBits) &<< (count &<< 3)
+  }
+}
+
+extension _ValidUTF8Buffer {
+  public static var encodedReplacementCharacter : _ValidUTF8Buffer {
+    return _ValidUTF8Buffer(_biasedBits: 0xBD_BF_EF &+ 0x01_01_01)
+  }
+}
+
+/*
+let test = _ValidUTF8Buffer<UInt64>(0..<8)
+print(Array(test))
+print(test.startIndex)
+for (ni, i) in test.indices.enumerated() {
+  for (nj, j) in test.indices.enumerated() {
+    assert(test.distance(from: i, to: j) == nj - ni)
+    assert(test.index(i, offsetBy: nj - ni) == j)
+  }
+}
+*/
diff --git a/stdlib/public/core/VarArgs.swift b/stdlib/public/core/VarArgs.swift
index afa1bc8..26162cd 100644
--- a/stdlib/public/core/VarArgs.swift
+++ b/stdlib/public/core/VarArgs.swift
@@ -59,6 +59,19 @@
 #if arch(x86_64)
 @_versioned
 let _x86_64CountGPRegisters = 6
+// Note to future visitors concerning the following SSE register count.
+//
+// AMD64-ABI section 3.5.7 says -- as recently as v0.99.7, Nov 2014 -- to make
+// room in the va_list register-save area for 16 SSE registers (XMM0..15). This
+// may seem surprising, because the calling convention of that ABI only uses the
+// first 8 SSE registers for argument-passing; why save the other 8?
+//
+// According to a comment in X86_64ABIInfo::EmitVAArg, in clang's TargetInfo,
+// the AMD64-ABI spec is itself in error on this point ("NOTE: 304 is a typo").
+// This comment (and calculation) in clang has been there since varargs support
+// was added in 2009, in rev be9eb093; so if you're about to change this value
+// from 8 to 16 based on reading the spec, probably the bug you're looking for
+// is elsewhere.
 @_versioned
 let _x86_64CountSSERegisters = 8
 @_versioned
@@ -77,12 +90,11 @@
 /// - Parameters:
 ///   - args: An array of arguments to convert to a C `va_list` pointer.
 ///   - body: A closure with a `CVaListPointer` parameter that references the
-///     arguments passed as `args`. If `body` has a return value, it is used
-///     as the return value for the `withVaList(_:)` function. The pointer
-///     argument is valid only for the duration of the function's execution.
-/// - Returns: The return value of the `body` closure parameter, if any.
-///
-/// - SeeAlso: `getVaList(_:)`
+///     arguments passed as `args`. If `body` has a return value, that value
+///     is also used as the return value for the `withVaList(_:)` function.
+///     The pointer argument is valid only for the duration of the function's
+///     execution.
+/// - Returns: The return value, if any, of the `body` closure parameter.
 public func withVaList<R>(_ args: [CVarArg],
   _ body: (CVaListPointer) -> R) -> R {
   let builder = _VaListBuilder()
@@ -111,14 +123,13 @@
 /// from the given array of arguments.
 ///
 /// You should prefer `withVaList(_:_:)` instead of this function. In some
-/// uses, such as in a `class` initializer, you may find that the
-/// language rules do not allow you to use `withVaList(_:_:)` as intended.
+/// uses, such as in a `class` initializer, you may find that the language
+/// rules do not allow you to use `withVaList(_:_:)` as intended.
 ///
 /// - Parameters args: An array of arguments to convert to a C `va_list`
 ///   pointer.
-/// - Returns: The return value of the `body` closure parameter, if any.
-///
-/// - SeeAlso: `withVaList(_:_:)`
+/// - Returns: A pointer that can be used with C functions that take a
+///   `va_list` argument.
 public func getVaList(_ args: [CVarArg]) -> CVaListPointer {
   let builder = _VaListBuilder()
   for a in args {
@@ -439,7 +450,9 @@
       }
       sseRegistersUsed += 1
     }
-    else if encoded.count == 1 && gpRegistersUsed < _x86_64CountGPRegisters {
+    else if encoded.count == 1
+      && !(arg is _CVarArgPassedAsDouble)
+      && gpRegistersUsed < _x86_64CountGPRegisters {
       storage[gpRegistersUsed] = encoded[0]
       gpRegistersUsed += 1
     }
diff --git a/stdlib/public/core/Zip.swift b/stdlib/public/core/Zip.swift
index 49c0ead..b0a1337 100644
--- a/stdlib/public/core/Zip.swift
+++ b/stdlib/public/core/Zip.swift
@@ -107,8 +107,6 @@
 ///     // Prints "two: 2
 ///     // Prints "three: 3"
 ///     // Prints "four: 4"
-///
-/// - SeeAlso: `zip(_:_:)`
 public struct Zip2Sequence<Sequence1 : Sequence, Sequence2 : Sequence>
   : Sequence {
 
diff --git a/stdlib/public/runtime/AnyHashableSupport.cpp b/stdlib/public/runtime/AnyHashableSupport.cpp
index 5b450c9..8f74c7d 100644
--- a/stdlib/public/runtime/AnyHashableSupport.cpp
+++ b/stdlib/public/runtime/AnyHashableSupport.cpp
@@ -155,7 +155,6 @@
 
       if (auto unboxedHashableWT =
               swift_conformsToProtocol(type, &HashableProtocolDescriptor)) {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
         ValueBuffer unboxedCopyBuf;
         // Allocate buffer.
         OpaqueValue *unboxedValueCopy =
@@ -170,16 +169,6 @@
         // Deallocate buffer.
         unboxedType->deallocateBufferIn(&unboxedCopyBuf);
         type->vw_destroy(value);
-#else
-        ValueBuffer unboxedCopyBuf;
-        auto unboxedValueCopy = unboxedType->vw_initializeBufferWithCopy(
-            &unboxedCopyBuf, const_cast<OpaqueValue *>(unboxedValue));
-        _swift_stdlib_makeAnyHashableUpcastingToHashableBaseType(
-            unboxedValueCopy, anyHashableResultPointer, unboxedType,
-            unboxedHashableWT);
-        unboxedType->vw_deallocateBuffer(&unboxedCopyBuf);
-        type->vw_destroy(value);
-#endif
         return;
       }
     }
diff --git a/stdlib/public/runtime/CMakeLists.txt b/stdlib/public/runtime/CMakeLists.txt
index 3377f94..99ac87b 100644
--- a/stdlib/public/runtime/CMakeLists.txt
+++ b/stdlib/public/runtime/CMakeLists.txt
@@ -18,11 +18,6 @@
   set(swift_runtime_leaks_sources Leaks.mm)
 endif()
 
-if(SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS)
-  list(APPEND swift_runtime_compile_flags
-    "-DSWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS=1")
-endif()
-
 set(section_magic_compile_flags ${swift_runtime_compile_flags})
 
 list(APPEND swift_runtime_compile_flags
diff --git a/stdlib/public/runtime/Casting.cpp b/stdlib/public/runtime/Casting.cpp
index 2158485..8938364 100644
--- a/stdlib/public/runtime/Casting.cpp
+++ b/stdlib/public/runtime/Casting.cpp
@@ -410,20 +410,6 @@
         (!castSucceeded && (flags & DynamicCastFlags::DestroyOnFailure));
 }
 
-#ifndef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
-/// Given that a cast operation is complete, maybe deallocate an
-/// opaque existential value.
-static void _maybeDeallocateOpaqueExistential(OpaqueValue *srcExistential,
-                                              bool castSucceeded,
-                                              DynamicCastFlags flags) {
-  if (shouldDeallocateSource(castSucceeded, flags)) {
-    auto container =
-      reinterpret_cast<OpaqueExistentialContainer *>(srcExistential);
-    container->Type->vw_deallocateBuffer(&container->Buffer);
-  }
-}
-#endif
-
 static bool
 isAnyObjectExistentialType(const ExistentialTypeMetadata *targetType) {
   unsigned numProtos =  targetType->Protocols.NumProtocols;
@@ -551,24 +537,10 @@
       break;
       
     case ExistentialTypeRepresentation::Opaque:
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
       swift::fatalError(
           0 /* flags */,
           "Attempting to move out of a copy-on-write existential");
       break;
-#else
-      auto existential =
-        reinterpret_cast<OpaqueExistentialContainer*>(value);
-
-      // Handle the possibility of nested existentials.
-      OpaqueValue *existentialValue =
-        existential->Type->vw_projectBuffer(&existential->Buffer);
-      deallocateDynamicValue(existentialValue, existential->Type);
-
-      // Deallocate the buffer.
-      existential->Type->vw_deallocateBuffer(&existential->Buffer);
-      break;
-#endif
     }
     return;
   }
@@ -713,12 +685,8 @@
   ValueBuffer buffer;
   bool mustDeallocBuffer = false;
   if (!(flags & DynamicCastFlags::TakeOnSuccess)) {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
     auto *valueAddr = sourceType->allocateBufferIn(&buffer);
     source = sourceType->vw_initializeWithCopy(valueAddr, source);
-#else
-    source = sourceType->vw_initializeBufferWithCopy(&buffer, source);
-#endif
     mustDeallocBuffer = true;
   }
 
@@ -728,11 +696,7 @@
 
   // Deallocate the buffer if we used it.
   if (mustDeallocBuffer) {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
     sourceType->deallocateBufferIn(&buffer);
-#else
-    sourceType->vw_deallocateBuffer(&buffer);
-#endif
   }
 
   // The cast succeeded.
@@ -961,21 +925,11 @@
     // Fill in the type and value.
     destExistential->Type = srcDynamicType;
     if (canConsumeDynamicValue && (flags & DynamicCastFlags::TakeOnSuccess)) {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
       auto *value = srcDynamicType->allocateBoxForExistentialIn(&destExistential->Buffer);
       srcDynamicType->vw_initializeWithTake(value, srcDynamicValue);
-#else
-      srcDynamicType->vw_initializeBufferWithTake(&destExistential->Buffer,
-                                                  srcDynamicValue);
-#endif
     } else {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
       auto *value = srcDynamicType->allocateBoxForExistentialIn(&destExistential->Buffer);
       srcDynamicType->vw_initializeWithCopy(value, srcDynamicValue);
-#else
-      srcDynamicType->vw_initializeBufferWithCopy(&destExistential->Buffer,
-                                                  srcDynamicValue);
-#endif
     }
     maybeDeallocateSource(true);
     return true;
@@ -1480,7 +1434,6 @@
     auto opaqueContainer =
       reinterpret_cast<OpaqueExistentialContainer*>(src);
     auto srcCapturedType = opaqueContainer->Type;
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
     OpaqueValue *srcValue = srcType->projectValue(src);
     // Can't 'take' out of a non-unique box. So we will force a copy.
     auto subFlags = flags;
@@ -1494,17 +1447,6 @@
     if (src != srcValue)
       if (shouldDeallocateSource(result, flags))
         srcType->vw_destroy(src);
-#else
-    OpaqueValue *srcValue =
-      srcCapturedType->vw_projectBuffer(&opaqueContainer->Buffer);
-    bool result = swift_dynamicCast(dest,
-                                    srcValue,
-                                    srcCapturedType,
-                                    targetType,
-                                    flags);
-    if (src != srcValue)
-      _maybeDeallocateOpaqueExistential(src, result, flags);
-#endif
     return result;
   }
   case ExistentialTypeRepresentation::Error: {
@@ -1554,7 +1496,6 @@
       break;
     }
     case ExistentialTypeRepresentation::Opaque: {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
       auto opaqueContainer = reinterpret_cast<OpaqueExistentialContainer*>(src);
       srcCapturedType = opaqueContainer->Type;
       srcValue = srcType->projectValue(src);
@@ -1562,12 +1503,6 @@
       canTake = (src == srcValue);
       assert(canTake == srcCapturedType->getValueWitnesses()->isValueInline() &&
              "Only inline storage is take-able");
-#else
-      auto opaqueContainer = reinterpret_cast<OpaqueExistentialContainer*>(src);
-      srcCapturedType = opaqueContainer->Type;
-      srcValue = srcCapturedType->vw_projectBuffer(&opaqueContainer->Buffer);
-      canTake = true;
-#endif
       isOutOfLine = (src != srcValue);
       break;
     }
@@ -1619,18 +1554,8 @@
     if (shouldDeallocateSource(result, flags))
       srcType->vw_destroy(src);
   } else {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
     assert(!isOutOfLine &&
            "Should only see inline representations of existentials");
-#else
-    // swift_dynamicCast took or destroyed the value as per the original request
-    // We may still have an opaque existential container to deallocate.
-    if (isOutOfLine) {
-      assert(srcType->getRepresentation()
-               == ExistentialTypeRepresentation::Opaque);
-      _maybeDeallocateOpaqueExistential(src, result, flags);
-    }
-#endif
   }
 
   return result;
@@ -1727,7 +1652,6 @@
     case ExistentialTypeRepresentation::Opaque: {
       auto srcExistential = (OpaqueExistentialContainer*) src;
       auto srcValueType = srcExistential->Type;
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
       // Can't 'take' out of a non-unique box. So we will force a copy.
       auto subFlags = flags;
       auto srcValue = srcExistentialType->projectValue(src);
@@ -1741,13 +1665,6 @@
       if (src != srcValue)
         if (shouldDeallocateSource(result, flags))
           srcType->vw_destroy(src);
-#else
-      auto srcValue = srcValueType->vw_projectBuffer(&srcExistential->Buffer);
-      bool result = _dynamicCastToMetatype(dest, srcValue, srcValueType,
-                                           targetType, flags);
-      if (src != srcValue)
-        _maybeDeallocateOpaqueExistential(src, result, flags);
-#endif
       return result;
     }
     case ExistentialTypeRepresentation::Error: {
@@ -1909,7 +1826,6 @@
     case ExistentialTypeRepresentation::Opaque: {
       auto srcExistential = (OpaqueExistentialContainer*) src;
       auto srcValueType = srcExistential->Type;
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
       auto subFlags = flags;
       auto srcValue = srcExistentialType->projectValue(src);
       // Can't 'take' out of a non-unique box. So we will force a copy.
@@ -1923,13 +1839,6 @@
       if (src != srcValue)
         if (shouldDeallocateSource(result, flags))
           srcType->vw_destroy(src);
-#else
-      auto srcValue = srcValueType->vw_projectBuffer(&srcExistential->Buffer);
-      bool result = _dynamicCastToExistentialMetatype(dest, srcValue, srcValueType,
-                                                      targetType, flags);
-      if (src != srcValue)
-        _maybeDeallocateOpaqueExistential(src, result, flags);
-#endif
       return result;
     }
     case ExistentialTypeRepresentation::Error: {
@@ -2997,19 +2906,11 @@
     if (consume) {
       if (canTake) {
         if (isOutOfLine) {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
           // Copy-on-write existentials share boxed and can't be 'take'n out of
           // without a uniqueness check (which we currently don't do).
           swift::fatalError(
               0 /* flags */,
               "Attempting to move out of a copy-on-write existential");
-#else
-          // Should only be true of opaque existentials right now.
-          assert(srcExistentialTy->getRepresentation()
-                   == ExistentialTypeRepresentation::Opaque);
-          auto container = reinterpret_cast<OpaqueExistentialContainer*>(src);
-          srcInnerType->vw_deallocateBuffer(&container->Buffer);
-#endif
         }
       } else {
         // We didn't take the value, so clean up the existential value.
diff --git a/stdlib/public/runtime/Errors.cpp b/stdlib/public/runtime/Errors.cpp
index 2ccd48b..c500356 100644
--- a/stdlib/public/runtime/Errors.cpp
+++ b/stdlib/public/runtime/Errors.cpp
@@ -46,8 +46,10 @@
 #include <execinfo.h>
 #endif
 
-#ifdef __APPLE__
+#if defined(__APPLE__)
 #include <asl.h>
+#elif defined(__ANDROID__)
+#include <android/log.h>
 #endif
 
 namespace FatalErrorFlags {
@@ -228,8 +230,10 @@
 #else
   write(STDERR_FILENO, message, strlen(message));
 #endif
-#ifdef __APPLE__
+#if defined(__APPLE__)
   asl_log(nullptr, nullptr, ASL_LEVEL_ERR, "%s", message);
+#elif defined(__ANDROID__)
+  __android_log_print(ANDROID_LOG_FATAL, "SwiftRuntime", "%s", message);
 #endif
 #if SWIFT_SUPPORTS_BACKTRACE_REPORTING
   if (flags & FatalErrorFlags::ReportBacktrace) {
diff --git a/stdlib/public/runtime/ExistentialMetadataImpl.h b/stdlib/public/runtime/ExistentialMetadataImpl.h
index 0a21f31..8c61f1f 100644
--- a/stdlib/public/runtime/ExistentialMetadataImpl.h
+++ b/stdlib/public/runtime/ExistentialMetadataImpl.h
@@ -88,7 +88,6 @@
     : ExistentialBoxBase<OpaqueExistentialBoxBase> {
   template <class Container, class... A>
   static void destroy(Container *value, A... args) {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
     auto *type = value->getType();
     auto *vwt = type->getValueWitnesses();
     if (vwt->isValueInline()) {
@@ -100,9 +99,6 @@
       swift_release(
           *reinterpret_cast<HeapObject **>(value->getBuffer(args...)));
     }
-#else
-    value->getType()->vw_destroyBuffer(value->getBuffer(args...));
-#endif
   }
 
   enum class Dest {
@@ -143,7 +139,6 @@
   static Container *initializeWithCopy(Container *dest, Container *src,
                                        A... args) {
     src->copyTypeInto(dest, args...);
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
     auto *type = src->getType();
     auto *vwt = type->getValueWitnesses();
 
@@ -158,10 +153,6 @@
       // initWithCopy of the reference to the cow box.
       copyReference(dest, src, Dest::Init, Source::Copy, args...);
     }
-#else
-    src->getType()->vw_initializeBufferWithCopyOfBuffer(dest->getBuffer(args...),
-                                                        src->getBuffer(args...));
-#endif
     return dest;
   }
   
@@ -169,7 +160,6 @@
   static Container *initializeWithTake(Container *dest, Container *src,
                                        A... args) {
     src->copyTypeInto(dest, args...);
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
     auto *type = src->getType();
     auto *vwt = type->getValueWitnesses();
 
@@ -184,10 +174,6 @@
       // initWithTake of the reference to the cow box.
       copyReference(dest, src, Dest::Init, Source::Take, args...);
     }
-#else
-    src->getType()->vw_initializeBufferWithTakeOfBuffer(dest->getBuffer(args...),
-                                                        src->getBuffer(args...));
-#endif
     return dest;
   }
 
@@ -196,7 +182,6 @@
                                    A... args) {
     auto srcType = src->getType();
     auto destType = dest->getType();
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
     if (src == dest)
       return dest;
     if (srcType == destType) {
@@ -273,17 +258,6 @@
       }
     }
     return dest;
-#else
-    if (srcType == destType) {
-      OpaqueValue *srcValue = srcType->vw_projectBuffer(src->getBuffer(args...));
-      OpaqueValue *destValue = srcType->vw_projectBuffer(dest->getBuffer(args...));
-      srcType->vw_assignWithCopy(destValue, srcValue);
-      return dest;
-    } else {
-      destType->vw_destroyBuffer(dest->getBuffer(args...));
-      return initializeWithCopy(dest, src, args...);
-    }
-#endif
   }
 
   template <class Container, class... A>
@@ -291,7 +265,6 @@
                                    A... args) {
     auto srcType = src->getType();
     auto destType = dest->getType();
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
     if (src == dest)
       return dest;
 
@@ -374,17 +347,6 @@
       }
     }
     return dest;
-#else
-    if (srcType == destType) {
-      OpaqueValue *srcValue = srcType->vw_projectBuffer(src->getBuffer(args...));
-      OpaqueValue *destValue = srcType->vw_projectBuffer(dest->getBuffer(args...));
-      srcType->vw_assignWithTake(destValue, srcValue);
-      return dest;
-    } else {
-      destType->vw_destroyBuffer(dest->getBuffer(args...));
-      return initializeWithTake(dest, src, args...);
-    }
-#endif
   }
 };
 
diff --git a/stdlib/public/runtime/Metadata.cpp b/stdlib/public/runtime/Metadata.cpp
index f490c1c..db656ce 100644
--- a/stdlib/public/runtime/Metadata.cpp
+++ b/stdlib/public/runtime/Metadata.cpp
@@ -552,7 +552,6 @@
   if (IsInline)
     return reinterpret_cast<OpaqueValue*>(buffer);
 
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   auto wtable = tuple_getValueWitnesses(metatype);
   unsigned alignMask = wtable->getAlignmentMask();
   // Compute the byte offset of the object in the box.
@@ -560,9 +559,6 @@
   auto *bytePtr =
       reinterpret_cast<char *>(*reinterpret_cast<HeapObject **>(buffer));
   return reinterpret_cast<OpaqueValue *>(bytePtr + byteOffset);
-#else
-  return *reinterpret_cast<OpaqueValue**>(buffer);
-#endif
 }
 
 /// Generic tuple value witness for 'allocateBuffer'
@@ -574,33 +570,9 @@
 
   if (IsInline)
     return reinterpret_cast<OpaqueValue*>(buffer);
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   BoxPair refAndValueAddr(swift_allocBox(metatype));
   *reinterpret_cast<HeapObject **>(buffer) = refAndValueAddr.first;
   return refAndValueAddr.second;
-#else
-  auto wtable = tuple_getValueWitnesses(metatype);
-  auto value = (OpaqueValue*) swift_slowAlloc(wtable->size,
-                                              wtable->getAlignmentMask());
-
-  *reinterpret_cast<OpaqueValue**>(buffer) = value;
-  return value;
-#endif
-}
-
-/// Generic tuple value witness for 'deallocateBuffer'.
-template <bool IsPOD, bool IsInline>
-static void tuple_deallocateBuffer(ValueBuffer *buffer,
-                                   const Metadata *metatype) {
-  assert(IsPOD == tuple_getValueWitnesses(metatype)->isPOD());
-  assert(IsInline == tuple_getValueWitnesses(metatype)->isValueInline());
-
-  if (IsInline)
-    return;
-
-  auto wtable = tuple_getValueWitnesses(metatype);
-  auto value = *reinterpret_cast<OpaqueValue**>(buffer);
-  swift_slowDealloc(value, wtable->size, wtable->getAlignmentMask());
 }
 
 /// Generic tuple value witness for 'destroy'.
@@ -639,17 +611,6 @@
   }
 }
 
-/// Generic tuple value witness for 'destroyBuffer'.
-template <bool IsPOD, bool IsInline>
-static void tuple_destroyBuffer(ValueBuffer *buffer, const Metadata *metatype) {
-  assert(IsPOD == tuple_getValueWitnesses(metatype)->isPOD());
-  assert(IsInline == tuple_getValueWitnesses(metatype)->isValueInline());
-
-  auto tuple = tuple_projectBuffer<IsPOD, IsInline>(buffer, metatype);
-  tuple_destroy<IsPOD, IsInline>(tuple, metatype);
-  tuple_deallocateBuffer<IsPOD, IsInline>(buffer, metatype);
-}
-
 // The operation doesn't have to be initializeWithCopy, but they all
 // have basically the same type.
 typedef value_witness_types::initializeWithCopy *
@@ -826,34 +787,6 @@
                             &ValueWitnessTable::assignWithTake);
 }
 
-/// Generic tuple value witness for 'initializeBufferWithCopy'.
-template <bool IsPOD, bool IsInline>
-static OpaqueValue *tuple_initializeBufferWithCopy(ValueBuffer *dest,
-                                                   OpaqueValue *src,
-                                                   const Metadata *metatype) {
-  assert(IsPOD == tuple_getValueWitnesses(metatype)->isPOD());
-  assert(IsInline == tuple_getValueWitnesses(metatype)->isValueInline());
-
-  return tuple_initializeWithCopy<IsPOD, IsInline>(
-                        tuple_allocateBuffer<IsPOD, IsInline>(dest, metatype),
-                        src,
-                        metatype);
-}
-
-/// Generic tuple value witness for 'initializeBufferWithTake'.
-template <bool IsPOD, bool IsInline>
-static OpaqueValue *tuple_initializeBufferWithTake(ValueBuffer *dest,
-                                                   OpaqueValue *src,
-                                                   const Metadata *metatype) {
-  assert(IsPOD == tuple_getValueWitnesses(metatype)->isPOD());
-  assert(IsInline == tuple_getValueWitnesses(metatype)->isValueInline());
-
-  return tuple_initializeWithTake<IsPOD, IsInline>(
-                        tuple_allocateBuffer<IsPOD, IsInline>(dest, metatype),
-                        src,
-                        metatype);
-}
-
 /// Generic tuple value witness for 'initializeBufferWithCopyOfBuffer'.
 template <bool IsPOD, bool IsInline>
 static OpaqueValue *tuple_initializeBufferWithCopyOfBuffer(ValueBuffer *dest,
@@ -861,7 +794,6 @@
                                                      const Metadata *metatype) {
   assert(IsPOD == tuple_getValueWitnesses(metatype)->isPOD());
   assert(IsInline == tuple_getValueWitnesses(metatype)->isValueInline());
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   if (IsInline) {
     return tuple_initializeWithCopy<IsPOD, IsInline>(
         tuple_projectBuffer<IsPOD, IsInline>(dest, metatype),
@@ -872,12 +804,6 @@
   *reinterpret_cast<HeapObject**>(dest) = srcReference;
   swift_retain(srcReference);
   return tuple_projectBuffer<IsPOD, IsInline>(dest, metatype);
-#else
-  return tuple_initializeBufferWithCopy<IsPOD, IsInline>(
-                            dest,
-                            tuple_projectBuffer<IsPOD, IsInline>(src, metatype),
-                            metatype);
-#endif
 }
 
 /// Generic tuple value witness for 'initializeBufferWithTakeOfBuffer'.
@@ -887,7 +813,6 @@
                                                      const Metadata *metatype) {
   assert(IsPOD == tuple_getValueWitnesses(metatype)->isPOD());
   assert(IsInline == tuple_getValueWitnesses(metatype)->isValueInline());
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   if (IsInline) {
     return tuple_initializeWithTake<IsPOD, IsInline>(
         tuple_projectBuffer<IsPOD, IsInline>(dest, metatype),
@@ -896,17 +821,6 @@
   auto *srcReference = *reinterpret_cast<HeapObject**>(src);
   *reinterpret_cast<HeapObject**>(dest) = srcReference;
   return tuple_projectBuffer<IsPOD, IsInline>(dest, metatype);
-#else
-  if (IsInline) {
-    return tuple_initializeWithTake<IsPOD, IsInline>(
-                      tuple_projectBuffer<IsPOD, IsInline>(dest, metatype),
-                      tuple_projectBuffer<IsPOD, IsInline>(src, metatype),
-                      metatype);
-  } else {
-    dest->PrivateData[0] = src->PrivateData[0];
-    return (OpaqueValue*) dest->PrivateData[0];
-  }
-#endif
 }
 
 static void tuple_storeExtraInhabitant(OpaqueValue *tuple,
@@ -1174,18 +1088,8 @@
   return pointer_function_cast_impl<Out>::perform(function);
 }
 
-static void pod_indirect_deallocateBuffer(ValueBuffer *buffer,
-                                          const Metadata *self) {
-  auto value = *reinterpret_cast<OpaqueValue**>(buffer);
-  auto wtable = self->getValueWitnesses();
-  swift_slowDealloc(value, wtable->size, wtable->getAlignmentMask());
-}
-#define pod_indirect_destroyBuffer \
-  pointer_function_cast<value_witness_types::destroyBuffer>(pod_indirect_deallocateBuffer)
-
 static OpaqueValue *pod_indirect_initializeBufferWithCopyOfBuffer(
                     ValueBuffer *dest, ValueBuffer *src, const Metadata *self) {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   auto wtable = self->getValueWitnesses();
   auto *srcReference = *reinterpret_cast<HeapObject**>(src);
   *reinterpret_cast<HeapObject**>(dest) = srcReference;
@@ -1197,20 +1101,10 @@
   unsigned byteOffset = (sizeof(HeapObject) + alignMask) & ~alignMask;
   auto *bytePtr = reinterpret_cast<char *>(srcReference);
   return reinterpret_cast<OpaqueValue *>(bytePtr + byteOffset);
-#else
-  auto wtable = self->getValueWitnesses();
-  auto destBuf = (OpaqueValue*)swift_slowAlloc(wtable->size,
-                                               wtable->getAlignmentMask());
-  *reinterpret_cast<OpaqueValue**>(dest) = destBuf;
-  OpaqueValue *srcBuf = *reinterpret_cast<OpaqueValue**>(src);
-  memcpy(destBuf, srcBuf, wtable->size);
-  return destBuf;
-#endif
 }
 
 static OpaqueValue *pod_indirect_initializeBufferWithTakeOfBuffer(
                     ValueBuffer *dest, ValueBuffer *src, const Metadata *self) {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   auto wtable = self->getValueWitnesses();
   auto *srcReference = *reinterpret_cast<HeapObject**>(src);
   *reinterpret_cast<HeapObject**>(dest) = srcReference;
@@ -1221,33 +1115,6 @@
   unsigned byteOffset = (sizeof(HeapObject) + alignMask) & ~alignMask;
   auto *bytePtr = reinterpret_cast<char *>(srcReference);
   return reinterpret_cast<OpaqueValue *>(bytePtr + byteOffset);
-#else
-  memcpy(dest, src, sizeof(ValueBuffer));
-  return *reinterpret_cast<OpaqueValue**>(dest);
-#endif
-}
-
-static OpaqueValue *pod_indirect_projectBuffer(ValueBuffer *buffer,
-                                               const Metadata *self) {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
-  unsigned alignMask = self->getValueWitnesses()->getAlignmentMask();
-  // Compute the byte offset of the object in the box.
-  unsigned byteOffset = (sizeof(HeapObject) + alignMask) & ~alignMask;
-  auto *bytePtr =
-      reinterpret_cast<char *>(*reinterpret_cast<HeapObject **>(buffer));
-  return reinterpret_cast<OpaqueValue *>(bytePtr + byteOffset);
-#else
-  return *reinterpret_cast<OpaqueValue**>(buffer);
-#endif
-}
-
-static OpaqueValue *pod_indirect_allocateBuffer(ValueBuffer *buffer,
-                                                const Metadata *self) {
-  auto wtable = self->getValueWitnesses();
-  auto destBuf = (OpaqueValue*)swift_slowAlloc(wtable->size,
-                                               wtable->getAlignmentMask());
-  *reinterpret_cast<OpaqueValue**>(buffer) = destBuf;
-  return destBuf;
 }
 
 static void pod_noop(void *object, const Metadata *self) {
@@ -1255,30 +1122,6 @@
 #define pod_direct_destroy \
   pointer_function_cast<value_witness_types::destroy>(pod_noop)
 #define pod_indirect_destroy pod_direct_destroy
-#define pod_direct_destroyBuffer \
-  pointer_function_cast<value_witness_types::destroyBuffer>(pod_noop)
-#define pod_direct_deallocateBuffer \
-  pointer_function_cast<value_witness_types::deallocateBuffer>(pod_noop)
-
-static void *pod_noop_return(void *object, const Metadata *self) {
-  return object;
-}
-#define pod_direct_projectBuffer \
-  pointer_function_cast<value_witness_types::projectBuffer>(pod_noop_return)
-#define pod_direct_allocateBuffer \
-  pointer_function_cast<value_witness_types::allocateBuffer>(pod_noop_return)
-
-static OpaqueValue *pod_indirect_initializeBufferWithCopy(ValueBuffer *dest,
-                                                          OpaqueValue *src,
-                                                          const Metadata *self){
-  auto wtable = self->getValueWitnesses();
-  auto destBuf = (OpaqueValue*)swift_slowAlloc(wtable->size,
-                                               wtable->getAlignmentMask());
-  *reinterpret_cast<OpaqueValue**>(dest) = destBuf;
-  memcpy(destBuf, src, wtable->size);
-  return destBuf;
-}
-#define pod_indirect_initializeBufferWithTake pod_indirect_initializeBufferWithCopy
 
 static OpaqueValue *pod_direct_initializeWithCopy(OpaqueValue *dest,
                                                   OpaqueValue *src,
@@ -1293,12 +1136,6 @@
 #define pod_direct_initializeBufferWithTakeOfBuffer \
   pointer_function_cast<value_witness_types::initializeBufferWithTakeOfBuffer> \
     (pod_direct_initializeWithCopy)
-#define pod_direct_initializeBufferWithCopy \
-  pointer_function_cast<value_witness_types::initializeBufferWithCopy> \
-    (pod_direct_initializeWithCopy)
-#define pod_direct_initializeBufferWithTake \
-  pointer_function_cast<value_witness_types::initializeBufferWithTake> \
-    (pod_direct_initializeWithCopy)
 #define pod_direct_assignWithCopy pod_direct_initializeWithCopy
 #define pod_indirect_assignWithCopy pod_direct_initializeWithCopy
 #define pod_direct_initializeWithTake pod_direct_initializeWithCopy
@@ -2323,7 +2160,6 @@
     return true;
   // Opaque existential containers uniquely own their contained value.
   case ExistentialTypeRepresentation::Opaque:
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   {
     // We can't take from a shared existential box without checking uniqueness.
     auto *opaque =
@@ -2331,9 +2167,6 @@
     auto *vwt = opaque->Type->getValueWitnesses();
     return vwt->isValueInline();
   }
-#else
-    return true;
-#endif
     
   // References to boxed existential containers may be shared.
   case ExistentialTypeRepresentation::Error: {
@@ -2360,7 +2193,6 @@
     break;
   
   case ExistentialTypeRepresentation::Opaque: {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
     auto *opaque = reinterpret_cast<OpaqueExistentialContainer *>(container);
     auto *vwt = opaque->Type->getValueWitnesses();
     if (!vwt->isValueInline()) {
@@ -2369,12 +2201,6 @@
       swift_deallocObject(*reinterpret_cast<HeapObject **>(&opaque->Buffer),
                           size, alignMask);
     }
-#else
-    // Containing the value may require a side allocation, which we need
-    // to clean up.
-    auto opaque = reinterpret_cast<OpaqueExistentialContainer *>(container);
-    opaque->Type->vw_deallocateBuffer(&opaque->Buffer);
-#endif
     break;
   }
   
@@ -2396,7 +2222,6 @@
   case ExistentialTypeRepresentation::Opaque: {
     auto *opaqueContainer =
       reinterpret_cast<const OpaqueExistentialContainer*>(container);
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
     auto *type = opaqueContainer->Type;
     auto *vwt = type->getValueWitnesses();
 
@@ -2409,10 +2234,6 @@
     auto *bytePtr = reinterpret_cast<const char *>(
         *reinterpret_cast<HeapObject *const *const>(&opaqueContainer->Buffer));
     return reinterpret_cast<const OpaqueValue *>(bytePtr + byteOffset);
-#else
-    return opaqueContainer->Type->vw_projectBuffer(
-      const_cast<ValueBuffer *>(&opaqueContainer->Buffer));
-#endif
   }
   case ExistentialTypeRepresentation::Error: {
     const SwiftError *errorBox
diff --git a/stdlib/public/runtime/MetadataImpl.h b/stdlib/public/runtime/MetadataImpl.h
index f726c1c..dfcab96 100644
--- a/stdlib/public/runtime/MetadataImpl.h
+++ b/stdlib/public/runtime/MetadataImpl.h
@@ -769,34 +769,7 @@
 
 /// A CRTP class which provides basic implementations for a number of
 /// value witnesses relating to buffers.
-template <class Impl> struct BufferValueWitnessesBase {
-  static void destroyBuffer(ValueBuffer *buffer, const Metadata *self) {
-    Impl::destroy(Impl::projectBuffer(buffer, self), self);
-    Impl::deallocateBuffer(buffer, self);
-  }
-
-#ifndef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
-  static OpaqueValue *initializeBufferWithCopyOfBuffer(ValueBuffer *dest,
-                                                       ValueBuffer *src,
-                                                       const Metadata *self) {
-    return Impl::initializeBufferWithCopy(dest,
-                                          Impl::projectBuffer(src, self),
-                                          self);
-  }
-#endif
-
-  static OpaqueValue *initializeBufferWithCopy(ValueBuffer *dest,
-                                               OpaqueValue *src,
-                                               const Metadata *self) {
-    return Impl::initializeWithCopy(Impl::allocateBuffer(dest, self), src, self);
-  }
-
-  static OpaqueValue *initializeBufferWithTake(ValueBuffer *dest,
-                                               OpaqueValue *src,
-                                               const Metadata *self) {
-    return Impl::initializeWithTake(Impl::allocateBuffer(dest, self), src, self);
-  }
-};
+template <class Impl> struct BufferValueWitnessesBase {};
 
 /// How should a type be packed into a fixed-size buffer?
 enum class FixedPacking {
@@ -821,12 +794,6 @@
     : BufferValueWitnessesBase<Impl> {
   static constexpr bool isInline = true;
 
-  static OpaqueValue *allocateBuffer(ValueBuffer *buffer, const Metadata *self) {
-    return reinterpret_cast<OpaqueValue*>(buffer);
-  }
-  static OpaqueValue *projectBuffer(ValueBuffer *buffer, const Metadata *self) {
-    return reinterpret_cast<OpaqueValue*>(buffer);
-  }
   static OpaqueValue *initializeBufferWithTakeOfBuffer(ValueBuffer *dest,
                                                        ValueBuffer *src,
                                                        const Metadata *self) {
@@ -834,15 +801,12 @@
                                     reinterpret_cast<OpaqueValue*>(src),
                                     self);
   }
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   static OpaqueValue *initializeBufferWithCopyOfBuffer(ValueBuffer *dest,
                                                        ValueBuffer *src,
                                                        const Metadata *self) {
     return Impl::initializeWithCopy(reinterpret_cast<OpaqueValue *>(dest),
                                     reinterpret_cast<OpaqueValue *>(src), self);
   }
-#endif
-  static void deallocateBuffer(ValueBuffer *buffer, const Metadata *self) {}
 };
 
 /// An implementation of BufferValueWitnesses suitable for types that
@@ -852,41 +816,21 @@
     : BufferValueWitnessesBase<Impl> {
   static constexpr bool isInline = false;
 
-  static OpaqueValue *allocateBuffer(ValueBuffer *buffer, const Metadata *self) {
-    OpaqueValue *value =
-      static_cast<OpaqueValue*>(SwiftAllocator<Size, Alignment>::alloc());
-    buffer->PrivateData[0] = value;
-    return value;
-  }
-  static OpaqueValue *projectBuffer(ValueBuffer *buffer, const Metadata *self) {
-    return reinterpret_cast<OpaqueValue*>(buffer->PrivateData[0]);
-  }
-  static void deallocateBuffer(ValueBuffer *buffer, const Metadata *self) {
-    SwiftAllocator<Size, Alignment>::dealloc(buffer->PrivateData[0]);
-  }
   static OpaqueValue *initializeBufferWithTakeOfBuffer(ValueBuffer *dest,
                                                        ValueBuffer *src,
                                                        const Metadata *self) {
+    auto wtable = self->getValueWitnesses();
+    auto *srcReference = *reinterpret_cast<HeapObject **>(src);
+    *reinterpret_cast<HeapObject **>(dest) = srcReference;
 
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
-  auto wtable = self->getValueWitnesses();
-  auto *srcReference = *reinterpret_cast<HeapObject**>(src);
-  *reinterpret_cast<HeapObject**>(dest) = srcReference;
-
-  // Project the address of the value in the buffer.
-  unsigned alignMask = wtable->getAlignmentMask();
-  // Compute the byte offset of the object in the box.
-  unsigned byteOffset = (sizeof(HeapObject) + alignMask) & ~alignMask;
-  auto *bytePtr =
-      reinterpret_cast<char *>(srcReference);
-  return reinterpret_cast<OpaqueValue *>(bytePtr + byteOffset);
-#else
-    dest->PrivateData[0] = src->PrivateData[0];
-    return (OpaqueValue*) dest->PrivateData[0];
-#endif
+    // Project the address of the value in the buffer.
+    unsigned alignMask = wtable->getAlignmentMask();
+    // Compute the byte offset of the object in the box.
+    unsigned byteOffset = (sizeof(HeapObject) + alignMask) & ~alignMask;
+    auto *bytePtr = reinterpret_cast<char *>(srcReference);
+    return reinterpret_cast<OpaqueValue *>(bytePtr + byteOffset);
   }
 
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   static OpaqueValue *initializeBufferWithCopyOfBuffer(ValueBuffer *dest,
                                                        ValueBuffer *src,
                                                        const Metadata *self) {
@@ -901,53 +845,20 @@
     auto *bytePtr = reinterpret_cast<char *>(reference);
     return reinterpret_cast<OpaqueValue *>(bytePtr + byteOffset);
   }
-#endif
 };
 
 /// A class which provides BufferValueWitnesses for types that are not
 /// fixed in size.
 template <class Impl, bool IsKnownAllocated>
 struct NonFixedBufferValueWitnesses : BufferValueWitnessesBase<Impl> {
-  static OpaqueValue *allocateBuffer(ValueBuffer *buffer, const Metadata *self) {
-    auto vwtable = self->getValueWitnesses();
-    if (!IsKnownAllocated && vwtable->isValueInline()) {
-      return reinterpret_cast<OpaqueValue*>(buffer);
-    } else {
-      OpaqueValue *value =
-        static_cast<OpaqueValue*>(swift_slowAlloc(vwtable->size,
-                                                  vwtable->getAlignmentMask()));
-      buffer->PrivateData[0] = value;
-      return value;
-    }
-  }
-
-  static OpaqueValue *projectBuffer(ValueBuffer *buffer, const Metadata *self) {
-    auto vwtable = self->getValueWitnesses();
-    (void)vwtable;
-    if (!IsKnownAllocated && vwtable->isValueInline()) {
-      return reinterpret_cast<OpaqueValue*>(buffer);
-    } else {
-      return reinterpret_cast<OpaqueValue*>(buffer->PrivateData[0]);
-    }
-  }
-
-  static void deallocateBuffer(ValueBuffer *buffer, const Metadata *self) {
-    auto vwtable = self->getValueWitnesses();
-    if (IsKnownAllocated || !vwtable->isValueInline()) {
-      swift_slowDealloc(buffer->PrivateData[0], vwtable->size,
-                        vwtable->getAlignmentMask());
-    }
-  }
-
   static OpaqueValue *initializeBufferWithTakeOfBuffer(ValueBuffer *dest,
                                                        ValueBuffer *src,
                                                        const Metadata *self) {
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
     auto vwtable = self->getValueWitnesses();
     (void)vwtable;
     if (!IsKnownAllocated && vwtable->isValueInline()) {
-      return Impl::initializeWithTake(reinterpret_cast<OpaqueValue*>(dest),
-                                      reinterpret_cast<OpaqueValue*>(src),
+      return Impl::initializeWithTake(reinterpret_cast<OpaqueValue *>(dest),
+                                      reinterpret_cast<OpaqueValue *>(src),
                                       self);
     } else {
       auto reference = src->PrivateData[0];
@@ -959,21 +870,8 @@
       auto *bytePtr = reinterpret_cast<char *>(reference);
       return reinterpret_cast<OpaqueValue *>(bytePtr + byteOffset);
     }
-#else
-    auto vwtable = self->getValueWitnesses();
-    (void)vwtable;
-    if (!IsKnownAllocated && vwtable->isValueInline()) {
-      return Impl::initializeWithTake(reinterpret_cast<OpaqueValue*>(dest),
-                                      reinterpret_cast<OpaqueValue*>(src),
-                                      self);
-    } else {
-      dest->PrivateData[0] = src->PrivateData[0];
-      return (OpaqueValue*) dest->PrivateData[0];
-    }
-#endif
   }
 
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   static OpaqueValue *initializeBufferWithCopyOfBuffer(ValueBuffer *dest,
                                                        ValueBuffer *src,
                                                        const Metadata *self) {
@@ -995,7 +893,6 @@
       return reinterpret_cast<OpaqueValue *>(bytePtr + byteOffset);
     }
   }
-#endif
 };
 
 /// A class which provides default implementations of various value
diff --git a/stdlib/public/runtime/Reflection.mm b/stdlib/public/runtime/Reflection.mm
index 14a60ce..9871c92 100644
--- a/stdlib/public/runtime/Reflection.mm
+++ b/stdlib/public/runtime/Reflection.mm
@@ -173,14 +173,9 @@
   Any result;
 
   result.Type = type;
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   auto *opaqueValueAddr = type->allocateBoxForExistentialIn(&result.Buffer);
   type->vw_initializeWithCopy(opaqueValueAddr,
                               const_cast<OpaqueValue *>(value));
-#else
-  type->vw_initializeBufferWithCopy(&result.Buffer,
-                                    const_cast<OpaqueValue*>(value));
-#endif
 
   return AnyReturn(result);
 }
@@ -446,14 +441,8 @@
   // allocated storage.
   ValueBuffer temporaryBuffer;
 
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   auto temporaryValue = reinterpret_cast<ClassExistentialContainer *>(
       type->allocateBufferIn(&temporaryBuffer));
-#else
-  auto temporaryValue =
-    reinterpret_cast<ClassExistentialContainer *>(
-      type->vw_allocateBuffer(&temporaryBuffer));
-#endif
 
   // Now copy the entire value out of the parent, which will include the
   // witness tables.
@@ -468,11 +457,7 @@
   new (outMirror) MagicMirror(reinterpret_cast<OpaqueValue *>(temporaryValue),
                               type, /*take*/ true);
 
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   type->deallocateBufferIn(&temporaryBuffer);
-#else
-  type->vw_deallocateBuffer(&temporaryBuffer);
-#endif
 
   // swift_StructMirror_subscript and swift_ClassMirror_subscript
   // requires that the owner be consumed. Since we have the new heap box as the
diff --git a/stdlib/public/runtime/SwiftObject.mm b/stdlib/public/runtime/SwiftObject.mm
index 237827d..69f3c05 100644
--- a/stdlib/public/runtime/SwiftObject.mm
+++ b/stdlib/public/runtime/SwiftObject.mm
@@ -922,6 +922,21 @@
   dest->Value = src->Value;
 }
 
+bool swift::swift_unknownUnownedIsEqual(UnownedReference *ref, void *value) {
+  if (!ref->Value) {
+    return value == nullptr;
+  } else if (auto objcRef = dyn_cast<ObjCUnownedReference>(ref)) {
+    auto refValue = objc_loadWeakRetained(&objcRef->storage()->WeakRef);
+    bool isEqual = (void*)refValue == value;
+    // This ObjC case has no deliberate unowned check here,
+    // unlike the Swift case.
+    [refValue release];
+    return isEqual;
+  } else {
+    return swift_unownedIsEqual(ref, (HeapObject *)value);
+  }
+}
+
 /*****************************************************************************/
 /************************** UNKNOWN WEAK REFERENCES **************************/
 /*****************************************************************************/
diff --git a/stdlib/public/runtime/SwiftValue.mm b/stdlib/public/runtime/SwiftValue.mm
index 098dade..fb123f8 100644
--- a/stdlib/public/runtime/SwiftValue.mm
+++ b/stdlib/public/runtime/SwiftValue.mm
@@ -344,21 +344,12 @@
 
   // Copy the value, since it will be consumed by getSummary.
   ValueBuffer copyBuf;
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   auto copy = type->allocateBufferIn(&copyBuf);
   type->vw_initializeWithCopy(copy, const_cast<OpaqueValue *>(value));
-#else
-  auto copy = type->vw_initializeBufferWithCopy(&copyBuf,
-                                              const_cast<OpaqueValue*>(value));
-#endif
 
   swift_getSummary(&tmp, copy, type);
 
-#ifdef SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS
   type->deallocateBufferIn(&copyBuf);
-#else
-  type->vw_deallocateBuffer(&copyBuf);
-#endif
   return convertStringToNSString(&tmp);
 }
 
diff --git a/test/APINotes/irgen-prop-getter-setter.swift b/test/APINotes/irgen-prop-getter-setter.swift
index f7da152..77b71ce 100644
--- a/test/APINotes/irgen-prop-getter-setter.swift
+++ b/test/APINotes/irgen-prop-getter-setter.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-clang-importer-objc-overlays
 
 // RUN: %target-swift-frontend %clang-importer-sdk-nosource -I %t %s -emit-ir
diff --git a/test/APINotes/properties.swift b/test/APINotes/properties.swift
index 10e0da5..1395baa 100644
--- a/test/APINotes/properties.swift
+++ b/test/APINotes/properties.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-ide-test -F %S/Inputs/custom-frameworks -print-module -source-filename %s -module-to-print=APINotesFrameworkTest -function-definitions=false -print-regular-comments -swift-version 4 | %FileCheck -check-prefix=CHECK-SWIFT-4 -check-prefix=CHECK-BOTH %s
 
diff --git a/test/APINotes/versioned-objc-dynamic-lookup.swift b/test/APINotes/versioned-objc-dynamic-lookup.swift
index d3bf2b6..992b30a 100644
--- a/test/APINotes/versioned-objc-dynamic-lookup.swift
+++ b/test/APINotes/versioned-objc-dynamic-lookup.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: not %target-swift-frontend -typecheck -F %S/Inputs/custom-frameworks -swift-version 4 %s 2>&1 | %FileCheck -check-prefix=CHECK-DIAGS -check-prefix=CHECK-DIAGS-4 %s
 // RUN: not %target-swift-frontend -typecheck -F %S/Inputs/custom-frameworks -swift-version 3 %s 2>&1 | %FileCheck -check-prefix=CHECK-DIAGS -check-prefix=CHECK-DIAGS-3 %s
@@ -32,4 +32,4 @@
   // CHECK-DIAGS-3: [[@LINE+1]]:{{[0-9]+}}: error: 'finalInstanceProperty' has been renamed to 'swift3InstanceProperty'
   _ = obj.finalInstanceProperty
   // CHECK-DIAGS-4-NOT: :[[@LINE-1]]:{{[0-9]+}}:
-}
\ No newline at end of file
+}
diff --git a/test/APINotes/versioned-objc.swift b/test/APINotes/versioned-objc.swift
index bb6258a..c5aaef0 100644
--- a/test/APINotes/versioned-objc.swift
+++ b/test/APINotes/versioned-objc.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: not %target-swift-frontend -typecheck -F %S/Inputs/custom-frameworks -swift-version 4 %s 2>&1 | %FileCheck -check-prefix=CHECK-DIAGS -check-prefix=CHECK-DIAGS-4 %s
 // RUN: not %target-swift-frontend -typecheck -F %S/Inputs/custom-frameworks -swift-version 3 %s 2>&1 | %FileCheck -check-prefix=CHECK-DIAGS -check-prefix=CHECK-DIAGS-3 %s
diff --git a/test/APINotes/versioned-test-mangling.swift b/test/APINotes/versioned-test-mangling.swift
index 211e937..55d53b8 100644
--- a/test/APINotes/versioned-test-mangling.swift
+++ b/test/APINotes/versioned-test-mangling.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // Use fake mangled names here with the name of the imported module.
 // swift-ide-test isn't testing the full demangling algorithm.
diff --git a/test/APINotes/versioned.swift b/test/APINotes/versioned.swift
index 47cee72..69e542f 100644
--- a/test/APINotes/versioned.swift
+++ b/test/APINotes/versioned.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-ide-test  -F %S/Inputs/custom-frameworks -print-module -source-filename %s -module-to-print=APINotesFrameworkTest -function-definitions=false -print-regular-comments -swift-version 4 | %FileCheck -check-prefix=CHECK-SWIFT-4 %s
 
diff --git a/test/AutolinkExtract/import.swift b/test/AutolinkExtract/import.swift
index 5f55961..ae46910 100644
--- a/test/AutolinkExtract/import.swift
+++ b/test/AutolinkExtract/import.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swiftc_driver -emit-library -emit-module -emit-module-path %t/empty.swiftmodule -module-name empty -module-link-name empty %S/empty.swift
 // RUN: %target-swiftc_driver -c %s -I %t -o %t/import_experimental.o
 // RUN: %target-swift-autolink-extract %t/import_experimental.o -o - | %FileCheck --check-prefix CHECK-%target-object-format %s
diff --git a/test/AutolinkExtract/import_archive.swift b/test/AutolinkExtract/import_archive.swift
index d4bb89e..e578bce 100644
--- a/test/AutolinkExtract/import_archive.swift
+++ b/test/AutolinkExtract/import_archive.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swiftc_driver -emit-library -emit-module -emit-module-path %t/empty.swiftmodule -module-name empty -module-link-name empty %S/empty.swift
 // RUN: %target-swiftc_driver -c %s -I %t -o %t/import_experimental.o
 // RUN: llvm-ar cr %t/import_experimental.a %t/import_experimental.o
diff --git a/test/ClangImporter/Inputs/objc_curried_method.h b/test/ClangImporter/Inputs/objc_curried_method.h
new file mode 100644
index 0000000..e370788
--- /dev/null
+++ b/test/ClangImporter/Inputs/objc_curried_method.h
@@ -0,0 +1,6 @@
+@interface Bar
+@end
+
+@interface Foo : Bar
+- (void)someMethod;
+@end
diff --git a/test/ClangImporter/Inputs/sdk-protocol-class/os1.swift b/test/ClangImporter/Inputs/sdk-protocol-class/os1.swift
index e1cea89..21ae0cf 100644
--- a/test/ClangImporter/Inputs/sdk-protocol-class/os1.swift
+++ b/test/ClangImporter/Inputs/sdk-protocol-class/os1.swift
@@ -1,3 +1,3 @@
 import os
 
-let p: Protocol = objc_getProtocol("NSObject")
+let p: Protocol? = objc_getProtocol("NSObject")
diff --git a/test/ClangImporter/Inputs/sdk-protocol-class/os2.swift b/test/ClangImporter/Inputs/sdk-protocol-class/os2.swift
index 62a7e34..9f54903 100644
--- a/test/ClangImporter/Inputs/sdk-protocol-class/os2.swift
+++ b/test/ClangImporter/Inputs/sdk-protocol-class/os2.swift
@@ -1,4 +1,4 @@
 import ObjectiveC
 import os
 
-let p: Protocol = objc_getProtocol("NSObject")
+let p: Protocol? = objc_getProtocol("NSObject")
diff --git a/test/ClangImporter/Inputs/sdk-protocol-class/os3.swift b/test/ClangImporter/Inputs/sdk-protocol-class/os3.swift
index 3f24c5b..4e14e25 100644
--- a/test/ClangImporter/Inputs/sdk-protocol-class/os3.swift
+++ b/test/ClangImporter/Inputs/sdk-protocol-class/os3.swift
@@ -1,4 +1,4 @@
 import os
 import ObjectiveC
 
-let p: Protocol = objc_getProtocol("NSObject")
+let p: Protocol? = objc_getProtocol("NSObject")
diff --git a/test/ClangImporter/MixedSource/Inputs/mixed-target/header.h b/test/ClangImporter/MixedSource/Inputs/mixed-target/header.h
index 2de96df..f646de4 100644
--- a/test/ClangImporter/MixedSource/Inputs/mixed-target/header.h
+++ b/test/ClangImporter/MixedSource/Inputs/mixed-target/header.h
@@ -75,3 +75,8 @@
 @interface ClassThatHasAProtocolTypedPropertyButMembersAreNeverLoaded
 @property (weak) id <ForwardProtoFromOtherFile> weakProtoProp;
 @end
+
+
+@interface GenericObjCClass<Param : id <ForwardProto>> : Base
+- (instancetype)init;
+@end
diff --git a/test/ClangImporter/MixedSource/broken-bridging-header.swift b/test/ClangImporter/MixedSource/broken-bridging-header.swift
index 17b7577..fe50fff 100644
--- a/test/ClangImporter/MixedSource/broken-bridging-header.swift
+++ b/test/ClangImporter/MixedSource/broken-bridging-header.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: not %target-swift-frontend -typecheck %S/../../Inputs/empty.swift -import-objc-header %t/fake.h 2>&1 | %FileCheck -check-prefix=MISSING-HEADER %s
 
 // RUN: cp %S/Inputs/error-on-define.h %t
diff --git a/test/ClangImporter/MixedSource/broken-modules.swift b/test/ClangImporter/MixedSource/broken-modules.swift
index 63dd941..ecaf5bf 100644
--- a/test/ClangImporter/MixedSource/broken-modules.swift
+++ b/test/ClangImporter/MixedSource/broken-modules.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: not %target-swift-frontend -typecheck %s -I %S/Inputs/broken-modules/ -enable-source-import -show-diagnostics-after-fatal 2> %t/err.txt
 // RUN: %FileCheck -check-prefix CHECK -check-prefix CLANG-CHECK %s < %t/err.txt
 
diff --git a/test/ClangImporter/MixedSource/can_import_objc_idempotent.swift b/test/ClangImporter/MixedSource/can_import_objc_idempotent.swift
index 8c55208..5559027 100644
--- a/test/ClangImporter/MixedSource/can_import_objc_idempotent.swift
+++ b/test/ClangImporter/MixedSource/can_import_objc_idempotent.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp -R %S/Inputs/mixed-target %t
 
 // FIXME: BEGIN -enable-source-import hackaround
diff --git a/test/ClangImporter/MixedSource/import-mixed-framework-with-forward.swift b/test/ClangImporter/MixedSource/import-mixed-framework-with-forward.swift
index ca420d9..68ee484 100644
--- a/test/ClangImporter/MixedSource/import-mixed-framework-with-forward.swift
+++ b/test/ClangImporter/MixedSource/import-mixed-framework-with-forward.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp -r %S/Inputs/mixed-framework/Mixed.framework %t
 
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t/Mixed.framework/Modules/Mixed.swiftmodule/%target-swiftmodule-name %S/Inputs/mixed-framework/Mixed.swift -import-underlying-module -F %t -module-name Mixed -disable-objc-attr-requires-foundation-module
diff --git a/test/ClangImporter/MixedSource/import-mixed-framework.swift b/test/ClangImporter/MixedSource/import-mixed-framework.swift
index f72be73..d614568 100644
--- a/test/ClangImporter/MixedSource/import-mixed-framework.swift
+++ b/test/ClangImporter/MixedSource/import-mixed-framework.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp -r %S/Inputs/mixed-framework/Mixed.framework %t
 
 // Don't crash if a generated header is present but the swiftmodule is missing.
diff --git a/test/ClangImporter/MixedSource/import-mixed-with-header-twice.swift b/test/ClangImporter/MixedSource/import-mixed-with-header-twice.swift
index 0038ed0..9776ab9 100644
--- a/test/ClangImporter/MixedSource/import-mixed-with-header-twice.swift
+++ b/test/ClangImporter/MixedSource/import-mixed-with-header-twice.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp -R %S/Inputs/mixed-target %t
 
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %S/../Inputs/custom-modules -import-objc-header %t/mixed-target/header.h -emit-module-path %t/MixedWithHeader.swiftmodule %S/Inputs/mixed-with-header.swift %S/../../Inputs/empty.swift -module-name MixedWithHeader -disable-objc-attr-requires-foundation-module
diff --git a/test/ClangImporter/MixedSource/import-mixed-with-header.swift b/test/ClangImporter/MixedSource/import-mixed-with-header.swift
index db0a848..d15957f 100644
--- a/test/ClangImporter/MixedSource/import-mixed-with-header.swift
+++ b/test/ClangImporter/MixedSource/import-mixed-with-header.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp -R %S/Inputs/mixed-target %t
 
 // FIXME: BEGIN -enable-source-import hackaround
diff --git a/test/ClangImporter/MixedSource/mixed-target-using-header-swift4.swift b/test/ClangImporter/MixedSource/mixed-target-using-header-swift4.swift
new file mode 100644
index 0000000..67ec230
--- /dev/null
+++ b/test/ClangImporter/MixedSource/mixed-target-using-header-swift4.swift
@@ -0,0 +1,4 @@
+// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %S/../Inputs/custom-modules -import-objc-header %S/Inputs/mixed-target/header.h -typecheck -primary-file %S/mixed-target-using-header.swift %S/Inputs/mixed-target/other-file.swift -disable-objc-attr-requires-foundation-module -verify -swift-version 4
+// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %S/../Inputs/custom-modules -import-objc-header %S/Inputs/mixed-target/header.h -emit-sil -primary-file %S/mixed-target-using-header.swift %S/Inputs/mixed-target/other-file.swift -disable-objc-attr-requires-foundation-module -o /dev/null -D SILGEN -swift-version 4
+
+// REQUIRES: objc_interop
diff --git a/test/ClangImporter/MixedSource/mixed-target-using-header.swift b/test/ClangImporter/MixedSource/mixed-target-using-header.swift
index 79fad24..cd506d6 100644
--- a/test/ClangImporter/MixedSource/mixed-target-using-header.swift
+++ b/test/ClangImporter/MixedSource/mixed-target-using-header.swift
@@ -75,6 +75,11 @@
   d = c // expected-error {{cannot assign value of type 'ConflictingName2?' to type 'ConflictingName2Protocol?'}}
   _ = d
 }
+
+func testObjCGenerics() {
+  _ = GenericObjCClass<ForwardProtoAdopter>()
+  _ = GenericObjCClass<Base>() // expected-error {{type 'Base' does not conform to protocol 'ForwardProto'}}
+}
 #endif
 
 func testDeclsNestedInObjCContainers() {
diff --git a/test/ClangImporter/MixedSource/resolve-cross-language.swift b/test/ClangImporter/MixedSource/resolve-cross-language.swift
index 5493563..e3f8408 100644
--- a/test/ClangImporter/MixedSource/resolve-cross-language.swift
+++ b/test/ClangImporter/MixedSource/resolve-cross-language.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource) -emit-module -emit-objc-header -o %t %S/Inputs/resolve-cross-language/Base.swift -disable-objc-attr-requires-foundation-module
 // RUN: cp %S/Inputs/resolve-cross-language/Base-module.map %t/module.map
diff --git a/test/ClangImporter/attr-swift_private.swift b/test/ClangImporter/attr-swift_private.swift
index 28af166..f2e70f1 100644
--- a/test/ClangImporter/attr-swift_private.swift
+++ b/test/ClangImporter/attr-swift_private.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-clang-importer-objc-overlays
 
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource -I %t) -I %S/Inputs/custom-modules -typecheck %s -verify
diff --git a/test/ClangImporter/autolinking.swift b/test/ClangImporter/autolinking.swift
index de87350..07943d5 100644
--- a/test/ClangImporter/autolinking.swift
+++ b/test/ClangImporter/autolinking.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend %s -sdk %S/Inputs -I %S/Inputs/custom-modules -emit-ir -o %t/without-adapter.ll
 // RUN: %FileCheck %s < %t/without-adapter.ll
 
diff --git a/test/ClangImporter/broken-modules.swift b/test/ClangImporter/broken-modules.swift
index 501f219..ade6d5a 100644
--- a/test/ClangImporter/broken-modules.swift
+++ b/test/ClangImporter/broken-modules.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: not %target-swift-frontend -typecheck %s -I %S/Inputs/custom-modules/ -show-diagnostics-after-fatal -D MISSING_FROM_MODULE 2> %t/err.txt
 // RUN: %FileCheck -check-prefix CHECK-MODULE-MAP %s < %t/err.txt
diff --git a/test/ClangImporter/cstring_parse.swift b/test/ClangImporter/cstring_parse.swift
index b6b11d4..2911a47 100644
--- a/test/ClangImporter/cstring_parse.swift
+++ b/test/ClangImporter/cstring_parse.swift
@@ -1,7 +1,6 @@
 // Note: this test intentionally uses a private module cache.
 //
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -verify -module-cache-path %t/clang-module-cache -I %S/Inputs %s
 // RUN: ls -lR %t/clang-module-cache | %FileCheck %s
 
diff --git a/test/ClangImporter/enum-error-execute.swift b/test/ClangImporter/enum-error-execute.swift
index 13f628a..263571f 100644
--- a/test/ClangImporter/enum-error-execute.swift
+++ b/test/ClangImporter/enum-error-execute.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-clang %S/Inputs/enum-error.m -c -o %t/enum-error.o
 // RUN: %target-build-swift -import-objc-header %S/Inputs/enum-error.h -Xlinker %t/enum-error.o %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
diff --git a/test/ClangImporter/mapped-integers.swift.gyb b/test/ClangImporter/mapped-integers.swift.gyb
index 518dba8..7330ddb 100644
--- a/test/ClangImporter/mapped-integers.swift.gyb
+++ b/test/ClangImporter/mapped-integers.swift.gyb
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %gyb %s -o %t/mapped-integers.swift
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -verify %t/mapped-integers.swift
 
diff --git a/test/ClangImporter/missing-adapter.swift b/test/ClangImporter/missing-adapter.swift
index 7e00a75..fb09733 100644
--- a/test/ClangImporter/missing-adapter.swift
+++ b/test/ClangImporter/missing-adapter.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-frontend -emit-module -parse-as-library %S/Inputs/adapter.swift -sdk %S/Inputs -I %S/Inputs/custom-modules -module-name ClangModuleWithAdapter -o %t
 // RUN: %target-swift-frontend %s -sdk %S/Inputs -I %S/Inputs/custom-modules -I %t -typecheck
diff --git a/test/ClangImporter/newtype_conformance.swift b/test/ClangImporter/newtype_conformance.swift
index df3e4dd..cc6fd58 100644
--- a/test/ClangImporter/newtype_conformance.swift
+++ b/test/ClangImporter/newtype_conformance.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -I %S/Inputs/custom-modules -primary-file %S/Inputs/MoreSwiftNewtypes_conformances.swift %S/Inputs/MoreSwiftNewtypes_tests.swift -module-name MoreSwiftNewtypes
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -I %S/Inputs/custom-modules %S/Inputs/MoreSwiftNewtypes_conformances.swift -primary-file %S/Inputs/MoreSwiftNewtypes_tests.swift -module-name MoreSwiftNewtypes
diff --git a/test/ClangImporter/non-modular-include.swift b/test/ClangImporter/non-modular-include.swift
index e3a44c4..9c8a07a 100644
--- a/test/ClangImporter/non-modular-include.swift
+++ b/test/ClangImporter/non-modular-include.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: not %target-swift-frontend -typecheck %s -I %S/Inputs/non-modular -F %S/Inputs/non-modular 2>&1 | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-%target-runtime %s
 
 // CHECK: {{.+}}/non-modular/Foo.framework/Headers/Foo.h:1:9: error: include of non-modular header inside framework module 'Foo'
diff --git a/test/ClangImporter/nullability_silgen.swift b/test/ClangImporter/nullability_silgen.swift
index d4e31e94..2203d4b 100644
--- a/test/ClangImporter/nullability_silgen.swift
+++ b/test/ClangImporter/nullability_silgen.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-clang-importer-objc-overlays
 
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource -I %t) -emit-silgen -I %S/Inputs/custom-modules %s | %FileCheck %s
diff --git a/test/ClangImporter/objc_bridging_custom.swift b/test/ClangImporter/objc_bridging_custom.swift
index 7f7c26d..345e257 100644
--- a/test/ClangImporter/objc_bridging_custom.swift
+++ b/test/ClangImporter/objc_bridging_custom.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -I %S/../Inputs/ObjCBridging %S/../Inputs/ObjCBridging/Appliances.swift -module-name Appliances -o %t
 
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -I %S/../Inputs/ObjCBridging -I %t -parse-as-library -verify %s
diff --git a/test/ClangImporter/objc_curried_method.swift b/test/ClangImporter/objc_curried_method.swift
new file mode 100644
index 0000000..b0f32b5
--- /dev/null
+++ b/test/ClangImporter/objc_curried_method.swift
@@ -0,0 +1,11 @@
+// RUN: %target-swift-frontend -swift-version 3 -typecheck %s -import-objc-header %S/Inputs/objc_curried_method.h
+// RUN: %target-swift-frontend -swift-version 4 -typecheck %s -import-objc-header %S/Inputs/objc_curried_method.h
+
+// REQUIRES: objc_interop
+
+// rdar://problem/32588152
+
+func apply(_: (Foo) -> () -> Void) {}
+
+apply(Foo.someMethod)
+
diff --git a/test/ClangImporter/objc_factory_method.swift b/test/ClangImporter/objc_factory_method.swift
index bb9c1bb..f459653 100644
--- a/test/ClangImporter/objc_factory_method.swift
+++ b/test/ClangImporter/objc_factory_method.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-clang-importer-objc-overlays
 
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource -I %t) -target x86_64-apple-macosx10.51 -typecheck %s -verify
diff --git a/test/ClangImporter/objc_ir.swift b/test/ClangImporter/objc_ir.swift
index bd97b03..545cab8 100644
--- a/test/ClangImporter/objc_ir.swift
+++ b/test/ClangImporter/objc_ir.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-clang-importer-objc-overlays
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource -I %t) -I %S/Inputs/custom-modules -emit-ir -o - -primary-file %s | %FileCheck %s
 
diff --git a/test/ClangImporter/objc_protocol_renaming.swift b/test/ClangImporter/objc_protocol_renaming.swift
index ca0d1ab..f859205 100644
--- a/test/ClangImporter/objc_protocol_renaming.swift
+++ b/test/ClangImporter/objc_protocol_renaming.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource) -emit-module -o %t %clang-importer-sdk-path/swift-modules/CoreGraphics.swift
diff --git a/test/ClangImporter/objc_subscript.swift b/test/ClangImporter/objc_subscript.swift
index be54b0b..7a1eeb2 100644
--- a/test/ClangImporter/objc_subscript.swift
+++ b/test/ClangImporter/objc_subscript.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-clang-importer-objc-overlays
 
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource -I %t) -emit-sil -I %S/Inputs/custom-modules %s -verify
diff --git a/test/ClangImporter/pch-bridging-header-unittest-ok.swift b/test/ClangImporter/pch-bridging-header-unittest-ok.swift
index fb1dbf0..d68ff43 100644
--- a/test/ClangImporter/pch-bridging-header-unittest-ok.swift
+++ b/test/ClangImporter/pch-bridging-header-unittest-ok.swift
@@ -1,5 +1,6 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t/tmp
+// RUN: %empty-directory(%t)
+// RUN: mkdir -p %t/tmp
 // RUN: %target-swiftc_driver -emit-module -import-objc-header %S/Inputs/app-bridging-header-to-pch.h -module-name App -emit-module-path %t/App.swiftmodule %S/Inputs/app-that-uses-pch-bridging-header.swift
 // RUN: llvm-bcanalyzer -dump %t/App.swiftmodule | %FileCheck %s
 // CHECK: IMPORTED_HEADER{{.*}}Inputs/app-bridging-header-to-pch.h
diff --git a/test/ClangImporter/pch-bridging-header-unittest-warn.swift b/test/ClangImporter/pch-bridging-header-unittest-warn.swift
index 56fc4b8..f630c30 100644
--- a/test/ClangImporter/pch-bridging-header-unittest-warn.swift
+++ b/test/ClangImporter/pch-bridging-header-unittest-warn.swift
@@ -1,5 +1,6 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t/tmp
+// RUN: %empty-directory(%t)
+// RUN: mkdir -p %t/tmp
 // RUN: %target-swiftc_driver -emit-module -import-objc-header %S/Inputs/app-bridging-header-to-pch.h -module-name App -emit-module-path %t/App.swiftmodule %S/Inputs/app-that-uses-pch-bridging-header.swift
 // RUN: llvm-bcanalyzer -dump %t/App.swiftmodule | %FileCheck %s
 // CHECK: IMPORTED_HEADER{{.*}}Inputs/app-bridging-header-to-pch.h
diff --git a/test/ClangImporter/pch-bridging-header.swift b/test/ClangImporter/pch-bridging-header.swift
index c06168d..8dfa6ba 100644
--- a/test/ClangImporter/pch-bridging-header.swift
+++ b/test/ClangImporter/pch-bridging-header.swift
@@ -1,5 +1,6 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t/tmp
+// RUN: %empty-directory(%t)
+// RUN: mkdir -p %t/tmp
 
 // First test the explicit frontend-based bridging PCH generation and use works
 // RUN: %target-swift-frontend -emit-pch -o %t/sdk-bridging-header.pch %S/Inputs/sdk-bridging-header.h
diff --git a/test/ClangImporter/sdk-protocol-class.swift b/test/ClangImporter/sdk-protocol-class.swift
index 6c2d58e..3f0ef57 100644
--- a/test/ClangImporter/sdk-protocol-class.swift
+++ b/test/ClangImporter/sdk-protocol-class.swift
@@ -9,4 +9,4 @@
 
 import ObjectiveC
 
-let p: Protocol = objc_getProtocol("NSObject")
+let p: Protocol? = objc_getProtocol("NSObject")
diff --git a/test/ClangImporter/serialization-search-paths.swift b/test/ClangImporter/serialization-search-paths.swift
index 958c595..d13e446 100644
--- a/test/ClangImporter/serialization-search-paths.swift
+++ b/test/ClangImporter/serialization-search-paths.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module-path %t/SerializationHelper.swiftmodule -I %S/Inputs/custom-modules -F %S/Inputs/frameworks -sdk "" -disable-objc-attr-requires-foundation-module %S/Inputs/SerializationHelper.swift
 // RUN: %target-swift-frontend -typecheck -I %t %s -sdk "" -verify
 
diff --git a/test/ClangImporter/serialization-sil.swift b/test/ClangImporter/serialization-sil.swift
index 1e7c073..87e88e9 100644
--- a/test/ClangImporter/serialization-sil.swift
+++ b/test/ClangImporter/serialization-sil.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module-path %t/Test.swiftmodule -emit-sil -o /dev/null -module-name Test %s -sdk "" -import-objc-header %S/Inputs/serialization-sil.h
 // RUN: %target-sil-func-extractor %t/Test.swiftmodule -sil-print-debuginfo  -func=_T04Test16testPartialApplyySoAA_pF -o - | %FileCheck %s
 
diff --git a/test/ClangImporter/serialization.swift b/test/ClangImporter/serialization.swift
index 10605e8..9e4a329 100644
--- a/test/ClangImporter/serialization.swift
+++ b/test/ClangImporter/serialization.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module-path %t/SerializationHelper.swiftmodule -I %S/Inputs/custom-modules %S/Inputs/SerializationHelper.swift -sdk "" -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend -typecheck -sdk "" -I %t -I %S/Inputs/custom-modules %s -verify
 
diff --git a/test/ClangImporter/static_inline.swift b/test/ClangImporter/static_inline.swift
index 6ad8f9d..240a22f 100644
--- a/test/ClangImporter/static_inline.swift
+++ b/test/ClangImporter/static_inline.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // Check if SIL printing+parsing of a clang imported function works.
 
diff --git a/test/ClangImporter/submodules.swift b/test/ClangImporter/submodules.swift
index 8dbcd90..83a4c35 100644
--- a/test/ClangImporter/submodules.swift
+++ b/test/ClangImporter/submodules.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -verify %s -DIMPORT_TOP_LEVEL
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -verify %s
diff --git a/test/ClangImporter/submodules_indirect.swift b/test/ClangImporter/submodules_indirect.swift
index a26b6d2..2711b7b 100644
--- a/test/ClangImporter/submodules_indirect.swift
+++ b/test/ClangImporter/submodules_indirect.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -verify -I %S/Inputs/custom-modules/ %s
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -o %t -emit-module -I %S/Inputs/custom-modules/ %s -module-name submodules
 // RUN: echo 'import submodules; let s = "\(x), \(y)"' | %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck - -I %t -I %S/Inputs/custom-modules/
diff --git a/test/ClangImporter/submodules_scoped.swift b/test/ClangImporter/submodules_scoped.swift
index 0c3eff8..0fd9811 100644
--- a/test/ClangImporter/submodules_scoped.swift
+++ b/test/ClangImporter/submodules_scoped.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -verify %s -DCHECK_SCOPING
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %s -module-name submodules
 // RUN: echo 'import submodules; let s = "\(x), \(y)"' | %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck - -I %t
diff --git a/test/Compatibility/lazy_properties.swift b/test/Compatibility/lazy_properties.swift
new file mode 100644
index 0000000..c621521
--- /dev/null
+++ b/test/Compatibility/lazy_properties.swift
@@ -0,0 +1,57 @@
+// RUN: %target-typecheck-verify-swift -parse-as-library -swift-version 3
+
+class ReferenceSelfInLazyProperty {
+  lazy var refs = (i, f())
+  // expected-error@-1 {{cannot use instance member 'i' within property initializer; property initializers run before 'self' is available}}
+  lazy var trefs: (Int, Int) = (i, f())
+  // expected-error@-1 {{instance member 'i' cannot be used on type 'ReferenceSelfInLazyProperty'}}
+
+  lazy var qrefs = (self.i, self.f())
+  lazy var qtrefs: (Int, Int) = (self.i, self.f())
+
+  lazy var crefs = { (i, f()) }()
+  // expected-error@-1 {{instance member 'i' cannot be used on type 'ReferenceSelfInLazyProperty'}}
+
+  lazy var ctrefs: (Int, Int) = { (i, f()) }()
+  // expected-error@-1 {{instance member 'i' cannot be used on type 'ReferenceSelfInLazyProperty'}}
+
+  lazy var cqrefs = { (self.i, self.f()) }()
+  lazy var cqtrefs: (Int, Int) = { (self.i, self.f()) }()
+
+  lazy var mrefs = { () -> (Int, Int) in return (i, f()) }()
+  // expected-error@-1 {{instance member 'i' cannot be used on type 'ReferenceSelfInLazyProperty'}}
+
+  lazy var mtrefs: (Int, Int) = { return (i, f()) }()
+  // expected-error@-1 {{instance member 'i' cannot be used on type 'ReferenceSelfInLazyProperty'}}
+
+  lazy var mqrefs = { () -> (Int, Int) in (self.i, self.f()) }()
+  lazy var mqtrefs: (Int, Int) = { return (self.i, self.f()) }()
+
+  lazy var lcqrefs = { [unowned self] in (self.i, self.f()) }()
+  lazy var lcqtrefs: (Int, Int) = { [unowned self] in (self.i, self.f()) }()
+
+  lazy var lmrefs = { [unowned self] () -> (Int, Int) in return (i, f()) }()
+  // expected-error@-1 {{instance member 'i' cannot be used on type 'ReferenceSelfInLazyProperty'}}
+  lazy var lmtrefs: (Int, Int) = { [unowned self] in return (i, f()) }()
+  // expected-error@-1 {{instance member 'i' cannot be used on type 'ReferenceSelfInLazyProperty'}}
+
+  lazy var lmqrefs = { [unowned self] () -> (Int, Int) in (self.i, self.f()) }()
+  lazy var lmqtrefs: (Int, Int) = { [unowned self] in return (self.i, self.f()) }()
+
+  var i = 42
+  func f() -> Int { return 0 }
+}
+
+class ReferenceStaticInLazyProperty {
+  lazy var refs1 = i
+  lazy var refs2 = f()
+  // expected-error@-1 {{use of unresolved identifier 'f'}}
+
+  lazy var trefs1: Int = i
+  lazy var trefs2: Int = f()
+  // expected-error@-1 {{use of unresolved identifier 'f'}}
+
+  static var i = 42
+  static func f() -> Int { return 0 }
+  // expected-note@-1 {{did you mean 'f'?}}
+}
diff --git a/test/Compatibility/protocol_composition.swift b/test/Compatibility/protocol_composition.swift
index 30c8f8f..21ea3dd 100644
--- a/test/Compatibility/protocol_composition.swift
+++ b/test/Compatibility/protocol_composition.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -typecheck -primary-file %t/swift3.swift %t/common.swift -verify -swift-version 3
 // RUN: %target-swift-frontend -typecheck -primary-file %t/swift4.swift %t/common.swift -verify -swift-version 4
diff --git a/test/Compatibility/self_same_type.swift b/test/Compatibility/self_same_type.swift
index 5587174..1865fbb 100644
--- a/test/Compatibility/self_same_type.swift
+++ b/test/Compatibility/self_same_type.swift
@@ -1,5 +1,10 @@
 // RUN: %target-typecheck-verify-swift -swift-version 3
 
+// Note: while Swift 3.2 originally intended to provide backward
+// compatibility here, the type-soundness issue was considered so severe
+// (due to it breaking the optimizer) that that we escalated it to an
+// error.
+
 protocol P {
   associatedtype T
 }
@@ -9,7 +14,7 @@
 }
 
 class C1: Q {
-  func foo<T: P>(_: T, _: C1) where T.T == C1 {} // expected-warning{{instance method 'foo' in non-final class 'C1' cannot be used to satisfy requirement instance method 'foo' (in protocol 'Q') due to same-type requirement involving 'Self'}}}}
+  func foo<T: P>(_: T, _: C1) where T.T == C1 {} // expected-error{{instance method 'foo' in non-final class 'C1' cannot be used to satisfy requirement instance method 'foo' (in protocol 'Q') due to same-type requirement involving 'Self'}}}}
     // expected-note@-1{{consider weakening the same-type requirement 'T.T' == 'C1' to a superclass requirement}}{{41-43=:}}
 }
 
diff --git a/test/Compatibility/throws_identifier.swift b/test/Compatibility/throws_identifier.swift
index 1dc8484..9b840c4 100644
--- a/test/Compatibility/throws_identifier.swift
+++ b/test/Compatibility/throws_identifier.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -parse -primary-file %t/swift3.swift -verify -swift-version 3
 // RUN: %target-swift-frontend -parse -primary-file %t/swift4.swift -verify -swift-version 4
diff --git a/test/Constraints/availability.swift b/test/Constraints/availability.swift
new file mode 100644
index 0000000..81cf130
--- /dev/null
+++ b/test/Constraints/availability.swift
@@ -0,0 +1,17 @@
+// RUN: %target-typecheck-verify-swift -swift-version 4
+
+// Ensure that we do not select the unavailable failable init as the
+// only solution and then fail to typecheck.
+protocol P {}
+
+class C : P {
+  @available(swift, obsoleted: 4)
+  public init?(_ c: C) {
+  }
+
+  public init<T : P>(_ c: T) {}
+}
+
+func f(c: C) {
+  let _: C? = C(c)
+}
diff --git a/test/Constraints/casts.swift b/test/Constraints/casts.swift
index 2479375..fc50ac0 100644
--- a/test/Constraints/casts.swift
+++ b/test/Constraints/casts.swift
@@ -210,3 +210,14 @@
 func rdar29894174(v: B?) {
   let _ = [v].flatMap { $0 as? D }
 }
+
+// When re-typechecking a solution with an 'is' cast applied,
+// we would fail to produce a diagnostic.
+func process(p: Any?) {
+  compare(p is String)
+  // expected-error@-1 {{cannot invoke 'compare' with an argument list of type '(Bool)'}}
+  // expected-note@-2 {{overloads for 'compare' exist with these partially matching parameter lists: (T, T), (T?, T?)}}
+}
+
+func compare<T>(_: T, _: T) {}
+func compare<T>(_: T?, _: T?) {}
diff --git a/test/Constraints/closures.swift b/test/Constraints/closures.swift
index 250ca2b..bfb7424 100644
--- a/test/Constraints/closures.swift
+++ b/test/Constraints/closures.swift
@@ -517,3 +517,15 @@
 
 // rdar://problem/30271695
 _ = ["hi"].flatMap { $0.isEmpty ? nil : $0 }
+
+// rdar://problem/32432145 - compiler should emit fixit to remove "_ in" in closures if 0 parameters is expected
+
+func r32432145(_ a: () -> ()) {}
+r32432145 { _ in let _ = 42 } // Ok in Swift 3
+r32432145 { _ in // Ok in Swift 3
+  print("answer is 42")
+}
+r32432145 { _,_ in
+  // expected-error@-1 {{contextual closure type '() -> ()' expects 0 arguments, but 2 were used in closure body}} {{13-19=}}
+  print("answer is 42")
+}
diff --git a/test/Constraints/closures_swift4.swift b/test/Constraints/closures_swift4.swift
new file mode 100644
index 0000000..f76e6a1
--- /dev/null
+++ b/test/Constraints/closures_swift4.swift
@@ -0,0 +1,18 @@
+// RUN: %target-typecheck-verify-swift -swift-version 4
+
+// rdar://problem/32432145 - compiler should emit fixit to remove "_ in" in closures if 0 parameters is expected
+
+func r32432145(_ a: () -> ()) {}
+
+r32432145 { _ in let _ = 42 }
+// expected-error@-1 {{contextual closure type '() -> ()' expects 0 arguments, but 1 was used in closure body}} {{13-17=}}
+
+r32432145 { _ in
+  // expected-error@-1 {{contextual closure type '() -> ()' expects 0 arguments, but 1 was used in closure body}} {{13-17=}}
+  print("answer is 42")
+}
+
+r32432145 { _,_ in
+  // expected-error@-1 {{contextual closure type '() -> ()' expects 0 arguments, but 2 were used in closure body}} {{13-19=}}
+  print("answer is 42")
+}
diff --git a/test/Constraints/diag_ambiguities_module.swift b/test/Constraints/diag_ambiguities_module.swift
index 010ec3c..ef409f6 100644
--- a/test/Constraints/diag_ambiguities_module.swift
+++ b/test/Constraints/diag_ambiguities_module.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/has_ambiguities.swift
 // RUN: not %target-swift-frontend -typecheck %s -I %t 2>&1 | %FileCheck %s
 
diff --git a/test/Constraints/diagnostics.swift b/test/Constraints/diagnostics.swift
index 324c1ce..8a1cbb8 100644
--- a/test/Constraints/diagnostics.swift
+++ b/test/Constraints/diagnostics.swift
@@ -977,4 +977,9 @@
 let _: KeyPath<R32101765, Float> = \.prop32101765.unknown
 // expected-error@-1 {{type 'Int' has no member 'unknown'}}
 let _: KeyPath<R32101765, Float> = \R32101765.prop32101765.unknown
-// expected-error@-1 {{type 'Int' has no member 'unknown'}}
\ No newline at end of file
+// expected-error@-1 {{type 'Int' has no member 'unknown'}}
+
+// rdar://problem/32390726 - Bad Diagnostic: Don't suggest `var` to `let` when binding inside for-statement
+for var i in 0..<10 { // expected-warning {{variable 'i' was never mutated; consider changing to 'let' constant}} {{5-9=}}
+  _ = i + 1
+}
diff --git a/test/Constraints/diagnostics_swift4.swift b/test/Constraints/diagnostics_swift4.swift
index 1ce0bdf..c90f80a 100644
--- a/test/Constraints/diagnostics_swift4.swift
+++ b/test/Constraints/diagnostics_swift4.swift
@@ -40,8 +40,8 @@
 // rdar://problem/31973368 - Cannot convert value of type '(K, V) -> ()' to expected argument type '((key: _, value: _)) -> Void'
 
 class R<K: Hashable, V> {
-  func forEach(_ body: ((K, V) -> ())) {
+  func forEach(_ body: (K, V) -> ()) {
     var dict: [K:V] = [:]
     dict.forEach(body) // expected-error {{nested tuple parameter '(key: K, value: V)' of function '(((key: K, value: V)) throws -> Void) throws -> ()' does not support destructuring}}
   }
-}
\ No newline at end of file
+}
diff --git a/test/Constraints/dynamic_lookup.swift b/test/Constraints/dynamic_lookup.swift
index 3dde136..586f485 100644
--- a/test/Constraints/dynamic_lookup.swift
+++ b/test/Constraints/dynamic_lookup.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module %S/Inputs/PrivateObjC.swift -o %t
 // RUN: %target-typecheck-verify-swift -I %t -verify-ignore-unknown
 
diff --git a/test/Constraints/overload.swift b/test/Constraints/overload.swift
index 05338ee..4b06f4d 100644
--- a/test/Constraints/overload.swift
+++ b/test/Constraints/overload.swift
@@ -222,3 +222,4 @@
 // Ensure that we consider these unambiguous
 let _ = curry(+)(1)
 let _ = [0].reduce(0, +)
+let _ = curry(+)("string vs. pointer")
diff --git a/test/Constraints/patterns.swift b/test/Constraints/patterns.swift
index 319d7b8..d99ccb3 100644
--- a/test/Constraints/patterns.swift
+++ b/test/Constraints/patterns.swift
@@ -165,7 +165,7 @@
 
 // <rdar://problem/21995744> QoI: Binary operator '~=' cannot be applied to operands of type 'String' and 'String?'
 switch ("foo" as String?) {
-case "what": break // expected-error{{expression pattern of type 'String' cannot match values of type 'String?'}}
+case "what": break // expected-error{{expression pattern of type 'String' cannot match values of type 'String?'}} {{12-12=?}}
 default: break
 }
 
diff --git a/test/Constraints/protocols.swift b/test/Constraints/protocols.swift
index 0cbe268..fdd1bc9 100644
--- a/test/Constraints/protocols.swift
+++ b/test/Constraints/protocols.swift
@@ -184,9 +184,9 @@
 
   let ppp: P = p.init()
 
-  _ = pp() // expected-error{{value of type 'P.Protocol' is a protocol; it cannot be instantiated}} // expected-error{{initializing from a metatype value must reference 'init' explicitly}}
-  _ = pp().bar // expected-error{{value of type 'P.Protocol' is a protocol; it cannot be instantiated}} // expected-error{{initializing from a metatype value must reference 'init' explicitly}}
-  _ = pp().bar(2) // expected-error{{value of type 'P.Protocol' is a protocol; it cannot be instantiated}} // expected-error{{initializing from a metatype value must reference 'init' explicitly}}
+  _ = pp() // expected-error{{value of type 'P.Protocol' is a protocol; it cannot be instantiated}}
+  _ = pp().bar // expected-error{{value of type 'P.Protocol' is a protocol; it cannot be instantiated}}
+  _ = pp().bar(2) // expected-error{{value of type 'P.Protocol' is a protocol; it cannot be instantiated}}
 
   _ = pp.init() // expected-error{{value of type 'P.Protocol' is a protocol; it cannot be instantiated}}
   _ = pp.init().bar // expected-error{{value of type 'P.Protocol' is a protocol; it cannot be instantiated}}
diff --git a/test/Constraints/type_of_verified.swift b/test/Constraints/type_of_verified.swift
new file mode 100644
index 0000000..ab2e3cb
--- /dev/null
+++ b/test/Constraints/type_of_verified.swift
@@ -0,0 +1,16 @@
+// RUN: %target-swift-frontend -typecheck -swift-version 4 %s
+
+// These are in a separate file -- the absence of diagnostics causes the
+// AST verifier to check additional invariants
+
+func takesAnyType(_: Any.Type) {}
+
+class Base {}
+class Derived : Base {}
+
+let b: Base = Derived()
+
+_ = [b].filter { type(of: $0) == Derived.self }
+
+// Trailing closure...
+let _: (() -> ()).Type = type { }
diff --git a/test/Constraints/warn_long_compile.swift b/test/Constraints/warn_long_compile.swift
new file mode 100644
index 0000000..0ef8b69
--- /dev/null
+++ b/test/Constraints/warn_long_compile.swift
@@ -0,0 +1,12 @@
+// RUN: %target-typecheck-verify-swift -warn-long-expression-type-checking=1 -warn-long-function-bodies=1 %s
+@_silgen_name("generic_foo")
+func foo<T>(_ x: T) -> T
+
+@_silgen_name("foo_of_int")
+func foo(_ x: Int) -> Int
+
+func test(m: Double) -> Int {
+  // expected-warning@-1 {{global function 'test(m:)' took}}
+  return Int(foo(Float(m) / 20) * 20 - 2) + 10
+  // expected-warning@-1 {{expression took}}
+}
diff --git a/test/DebugInfo/ASTSection.swift b/test/DebugInfo/ASTSection.swift
index 28f1c39..cfe33d2 100644
--- a/test/DebugInfo/ASTSection.swift
+++ b/test/DebugInfo/ASTSection.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-build-swift -emit-executable %s -g -o %t/ASTSection -emit-module
 // RUN: %lldb-moduleimport-test %t/ASTSection | %FileCheck %s
diff --git a/test/DebugInfo/ASTSection_ObjC.swift b/test/DebugInfo/ASTSection_ObjC.swift
index a9b7ab3..e5a4bb8 100644
--- a/test/DebugInfo/ASTSection_ObjC.swift
+++ b/test/DebugInfo/ASTSection_ObjC.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: cp %S/Inputs/serialized-objc-header.h %t
 // RUN: %target-build-swift -emit-executable %S/ASTSection.swift -g -o %t/ASTSection-with-ObjC -import-objc-header %t/serialized-objc-header.h -DOBJC -module-name ASTSection -emit-module
diff --git a/test/DebugInfo/ASTSection_linker.swift b/test/DebugInfo/ASTSection_linker.swift
index c1eb5dc..1e1b76e 100644
--- a/test/DebugInfo/ASTSection_linker.swift
+++ b/test/DebugInfo/ASTSection_linker.swift
@@ -1,7 +1,6 @@
 // Run test ASTSection.swift, with separate compile and link steps.
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-frontend -c -sdk /fake/sdk/path -Xcc -DA -Xcc -DB -emit-module -o %t %S/ASTSection.swift
 // RUN: %swift-ide-test -test-CompilerInvocation-from-module -source-filename=%t/ASTSection.swiftmodule
diff --git a/test/DebugInfo/Imports.swift b/test/DebugInfo/Imports.swift
index 0384fcb..1665bcd 100644
--- a/test/DebugInfo/Imports.swift
+++ b/test/DebugInfo/Imports.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module-path %t/basic.swiftmodule %S/basic.swift
 
 // RUN: %target-swift-frontend -emit-ir -module-name Foo %s -I %t -g -o - | %FileCheck %s
diff --git a/test/DebugInfo/external-global.swift b/test/DebugInfo/external-global.swift
index 0a73297..b0fd341 100644
--- a/test/DebugInfo/external-global.swift
+++ b/test/DebugInfo/external-global.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module-path %t/Globals.swiftmodule %S/Globals.swift
 // RUN: %target-swift-frontend -I %t %s -g -emit-ir -o - | %FileCheck %s
 import Globals
diff --git a/test/DebugInfo/gsil.swift b/test/DebugInfo/gsil.swift
index e36a383..025ed51 100644
--- a/test/DebugInfo/gsil.swift
+++ b/test/DebugInfo/gsil.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend %s -O -gsil -Xllvm -sil-print-debuginfo -emit-ir -o %t/out.ir
 // RUN: %FileCheck %s < %t/out.ir
 // RUN: %FileCheck %s --check-prefix=CHECK_OUT_SIL < %t/out.ir.gsil_0.sil
diff --git a/test/DebugInfo/inlinescopes.swift b/test/DebugInfo/inlinescopes.swift
index e8ba12b..515377f 100644
--- a/test/DebugInfo/inlinescopes.swift
+++ b/test/DebugInfo/inlinescopes.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: echo "public var x = Int64()" \
 // RUN:   | %target-swift-frontend -module-name FooBar -emit-module -o %t -
 // RUN: %target-swift-frontend %s -O -I %t -emit-ir -g -o %t.ll
diff --git a/test/DebugInfo/modulecache.swift b/test/DebugInfo/modulecache.swift
index 0e4e50c..a01d408 100644
--- a/test/DebugInfo/modulecache.swift
+++ b/test/DebugInfo/modulecache.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // Clang-import a module.
 import ClangModule
 
@@ -13,7 +13,7 @@
 
 // 2. Test that swift is creating clang modules with debug info.
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend %s -c -g -o %t.o -module-cache-path %t -I %S/Inputs
 // RUN: file %t/*/ClangModule-*.pcm | egrep '(Mach-O|ELF)'
 
diff --git a/test/Demangle/Inputs/manglings.txt b/test/Demangle/Inputs/manglings.txt
index 600ac53..67bd2ce 100644
--- a/test/Demangle/Inputs/manglings.txt
+++ b/test/Demangle/Inputs/manglings.txt
@@ -259,4 +259,4 @@
 _T0A8 ---> _T0A8
 _T0s30ReversedRandomAccessCollectionVyxGTfq3nnpf_nTfq1cn_nTfq4x_n ---> _T0s30ReversedRandomAccessCollectionVyxGTfq3nnpf_nTfq1cn_nTfq4x_n
 _T03abc6testitySiFTm ---> merged abc.testit(Swift.Int) -> ()
-
+_T04main4TestCACSi1x_tc6_PRIV_Llfc ---> main.Test.(in _PRIV_).init(x: Swift.Int) -> main.Test
diff --git a/test/Demangle/Inputs/simplified-manglings.txt b/test/Demangle/Inputs/simplified-manglings.txt
index 98399f6..bc3a520 100644
--- a/test/Demangle/Inputs/simplified-manglings.txt
+++ b/test/Demangle/Inputs/simplified-manglings.txt
@@ -204,4 +204,4 @@
 _T0So13SKPhysicsBodyCSC7CGPointVSC8CGVectorVSpy10ObjectiveC8ObjCBoolVGIxxyyy_AbdFSpyAIGIyByyyy_TR ---> thunk for @callee_owned (@owned SKPhysicsBody, @unowned CGPoint, @unowned CGVector, @unowned UnsafeMutablePointer<ObjCBool>) -> ()
 _T04main1_yyF ---> _()
 _T03abc6testitySiFTm ---> testit(_:)
-
+_T04main4TestCACSi1x_tc6_PRIV_Llfc ---> Test.init(x:)
diff --git a/test/Demangle/lookup.swift b/test/Demangle/lookup.swift
index d324765..8e9af52 100644
--- a/test/Demangle/lookup.swift
+++ b/test/Demangle/lookup.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: not %target-swift-ide-test -source-filename=%s -print-ast-typechecked -find-mangled=_notASwiftSymbol
 
diff --git a/test/Driver/Inputs/fake-resource-dir/lib/swift/clang/lib/darwin/libclang_rt.asan_osx_dynamic.dylib b/test/Driver/Inputs/fake-resource-dir/lib/swift/clang/lib/darwin/libclang_rt.asan_osx_dynamic.dylib
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/Driver/Inputs/fake-resource-dir/lib/swift/clang/lib/darwin/libclang_rt.asan_osx_dynamic.dylib
diff --git a/test/Driver/Inputs/fake-resource-dir/lib/swift/clang/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib b/test/Driver/Inputs/fake-resource-dir/lib/swift/clang/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/Driver/Inputs/fake-resource-dir/lib/swift/clang/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib
diff --git a/test/Driver/actions.swift b/test/Driver/actions.swift
index c883b9c..dd6c2a5 100644
--- a/test/Driver/actions.swift
+++ b/test/Driver/actions.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // XFAIL: freebsd, linux
 
diff --git a/test/Driver/bindings.swift b/test/Driver/bindings.swift
index 7d48ef1..423c61b 100644
--- a/test/Driver/bindings.swift
+++ b/test/Driver/bindings.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %swiftc_driver -driver-print-bindings -target x86_64-apple-macosx10.9 %s 2>&1 | %FileCheck %s -check-prefix=BASIC
 // BASIC: # "x86_64-apple-macosx10.9" - "swift", inputs: ["{{.*}}bindings.swift"], output: {object: "[[OBJECT:.*\.o]]"}
diff --git a/test/Driver/bridging-pch.swift b/test/Driver/bridging-pch.swift
index 467126f..bb3ac15 100644
--- a/test/Driver/bridging-pch.swift
+++ b/test/Driver/bridging-pch.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %swiftc_driver -typecheck -driver-print-actions -import-objc-header %S/Inputs/bridging-header.h %s 2>&1 | %FileCheck %s -check-prefix=YESPCHACT
 // YESPCHACT: 0: input, "{{.*}}Inputs/bridging-header.h", objc-header
@@ -42,6 +42,12 @@
 // PERSISTENT-YESPCHJOB: {{.*}}swift -frontend {{.*}} -emit-pch -pch-output-dir {{.*}}/pch
 // PERSISTENT-YESPCHJOB: {{.*}}swift -frontend {{.*}} -import-objc-header {{.*}}bridging-header.h -pch-output-dir {{.*}}/pch -pch-disable-validation
 
+// RUN: %swiftc_driver -typecheck -driver-print-jobs -import-objc-header %S/Inputs/bridging-header.h -pch-output-dir %t/pch -serialize-diagnostics %s 2>&1 | %FileCheck %s -check-prefix=PERSISTENT-YESPCHJOB-DIAG1
+// PERSISTENT-YESPCHJOB-DIAG1: {{.*}}swift -frontend {{.*}} -serialize-diagnostics-path {{.*}}bridging-header-{{.*}}.dia {{.*}} -emit-pch -pch-output-dir {{.*}}/pch
+
+// RUN: %swiftc_driver -typecheck -driver-print-jobs -import-objc-header %S/Inputs/bridging-header.h -pch-output-dir %t/pch-out-dir -serialize-diagnostics %s -emit-module -emit-module-path /module-path-dir 2>&1 | %FileCheck %s -check-prefix=PERSISTENT-YESPCHJOB-DIAG2
+// PERSISTENT-YESPCHJOB-DIAG2: {{.*}}swift -frontend {{.*}} -serialize-diagnostics-path {{.*}}/pch-out-dir/bridging-header-{{.*}}.dia {{.*}} -emit-pch -pch-output-dir {{.*}}/pch-out-dir
+
 // RUN: %swiftc_driver -typecheck -import-objc-header %S/Inputs/bridging-header.h -pch-output-dir %t/pch -parseable-output -driver-skip-execution %s 2>&1 | %FileCheck %s -check-prefix=PERSISTENT-OUTPUT
 // PERSISTENT-OUTPUT-NOT: "outputs": [
 
diff --git a/test/Driver/driver-compile.swift b/test/Driver/driver-compile.swift
index 044496e..a80ac04 100644
--- a/test/Driver/driver-compile.swift
+++ b/test/Driver/driver-compile.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %swiftc_driver -driver-print-jobs -target x86_64-apple-macosx10.9 %s 2>&1 > %t.simple.txt
 // RUN: %FileCheck %s < %t.simple.txt
@@ -37,7 +37,7 @@
 
 // RUN: %swiftc_driver -driver-print-jobs -c -target x86_64-apple-macosx10.9 %s %S/../Inputs/empty.swift -module-name main -driver-use-filelists 2>&1 | %FileCheck -check-prefix=FILELIST %s
 
-// RUN: rm -rf %t && mkdir -p %t/DISTINCTIVE-PATH/usr/bin/
+// RUN: %empty-directory(%t)/DISTINCTIVE-PATH/usr/bin/
 // RUN: %hardlink-or-copy(from: %swift_driver_plain, to: %t/DISTINCTIVE-PATH/usr/bin/swiftc)
 // RUN: ln -s "swiftc" %t/DISTINCTIVE-PATH/usr/bin/swift-update
 // RUN: %t/DISTINCTIVE-PATH/usr/bin/swiftc -driver-print-jobs -c -update-code -target x86_64-apple-macosx10.9 %s 2>&1 > %t.upd.txt
diff --git a/test/Driver/emit-module-from-sib.swift b/test/Driver/emit-module-from-sib.swift
index c9895d6..a245c47 100644
--- a/test/Driver/emit-module-from-sib.swift
+++ b/test/Driver/emit-module-from-sib.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swiftc_driver -emit-module -module-name test %s -o %t/a.swiftmodule
 // RUN: %target-swiftc_driver -emit-sib -module-name test %s -o - | %target-swiftc_driver -emit-module -module-name test -o %t/b.swiftmodule -
diff --git a/test/Driver/emit-objc-header.swift b/test/Driver/emit-objc-header.swift
index eea5f0b..23dfc99 100644
--- a/test/Driver/emit-objc-header.swift
+++ b/test/Driver/emit-objc-header.swift
@@ -1,6 +1,5 @@
 // FIXME: BEGIN -enable-source-import hackaround
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %clang-importer-sdk-path/swift-modules/Foundation.swift
 // FIXME: END -enable-source-import hackaround
 
diff --git a/test/Driver/filelists.swift b/test/Driver/filelists.swift
index 390256a..a5e605d 100644
--- a/test/Driver/filelists.swift
+++ b/test/Driver/filelists.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: touch %t/a.swift %t/b.swift %t/c.swift
 
 // RUN: (cd %t && %swiftc_driver_plain -driver-use-frontend-path %S/Inputs/filelists/check-filelist-abc.py -emit-module ./a.swift ./b.swift ./c.swift -module-name main -target x86_64-apple-macosx10.9 -driver-use-filelists -output-file-map=%S/Inputs/filelists/output.json 2>&1 | %FileCheck %s)
@@ -18,12 +18,12 @@
 // CHECK-WMO-NOT: Handled
 
 
-// RUN: mkdir -p %t/bin
+// RUN: %empty-directory(%t/bin)
 // RUN: ln -s %S/Inputs/filelists/fake-ld.py %t/bin/ld
 
 // RUN: (cd %t && %swiftc_driver_plain -driver-use-frontend-path %S/Inputs/filelists/check-filelist-abc.py -c ./a.swift ./b.swift ./c.swift -module-name main -target x86_64-apple-macosx10.9 -driver-use-filelists -output-file-map=%S/Inputs/filelists/output.json -force-single-frontend-invocation -num-threads 1 2>&1 | %FileCheck -check-prefix=CHECK-WMO-THREADED %s)
 // RUN: (cd %t && %swiftc_driver_plain -driver-use-frontend-path %S/Inputs/filelists/check-filelist-abc.py -c ./a.swift ./b.swift ./c.swift -module-name main -target x86_64-apple-macosx10.9 -driver-use-filelists -output-file-map=%S/Inputs/filelists/output.json -force-single-frontend-invocation -num-threads 1 -embed-bitcode 2>&1 | %FileCheck -check-prefix=CHECK-WMO-THREADED %s)
-// RUN: mkdir -p %t/tmp/
+// RUN: %empty-directory(%t/tmp)
 // RUN: (cd %t && env TMPDIR="%t/tmp/" %swiftc_driver_plain -driver-use-frontend-path %S/Inputs/filelists/check-filelist-abc.py -c ./a.swift ./b.swift ./c.swift -module-name main -target x86_64-apple-macosx10.9 -driver-use-filelists -output-file-map=%S/Inputs/filelists/output.json -force-single-frontend-invocation -num-threads 1 -save-temps 2>&1 | %FileCheck -check-prefix=CHECK-WMO-THREADED %s)
 // RUN: ls %t/tmp/sources-* %t/tmp/outputs-*
 
diff --git a/test/Driver/linker.swift b/test/Driver/linker.swift
index ad2ad07..43ae714 100644
--- a/test/Driver/linker.swift
+++ b/test/Driver/linker.swift
@@ -40,7 +40,7 @@
 // RUN: %FileCheck %s < %t.simple-macosx10.10.txt
 // RUN: %FileCheck -check-prefix SIMPLE %s < %t.simple-macosx10.10.txt
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: touch %t/a.o
 // RUN: %swiftc_driver -driver-print-jobs -target x86_64-apple-macosx10.9 %s %t/a.o -o linker 2>&1 | %FileCheck -check-prefix COMPILE_AND_LINK %s
 // RUN: %swiftc_driver -driver-print-jobs -target x86_64-apple-macosx10.9 %s %t/a.o -driver-use-filelists -o linker 2>&1 | %FileCheck -check-prefix FILELIST %s
@@ -250,7 +250,7 @@
 // the Swift driver really thinks it's been moved.
 
 // RUN: rm -rf %t
-// RUN: mkdir -p %t/DISTINCTIVE-PATH/usr/bin/
+// RUN: %empty-directory(%t/DISTINCTIVE-PATH/usr/bin)
 // RUN: touch %t/DISTINCTIVE-PATH/usr/bin/ld
 // RUN: chmod +x %t/DISTINCTIVE-PATH/usr/bin/ld
 // RUN: %hardlink-or-copy(from: %swift_driver_plain, to: %t/DISTINCTIVE-PATH/usr/bin/swiftc)
@@ -263,8 +263,8 @@
 // Also test arclite detection. This uses xcrun to find arclite when it's not
 // next to Swift.
 
-// RUN: mkdir -p %t/ANOTHER-DISTINCTIVE-PATH/usr/bin
-// RUN: mkdir -p %t/ANOTHER-DISTINCTIVE-PATH/usr/lib/arc
+// RUN: %empty-directory(%t/ANOTHER-DISTINCTIVE-PATH/usr/bin)
+// RUN: %empty-directory(%t/ANOTHER-DISTINCTIVE-PATH/usr/lib/arc)
 // RUN: cp %S/Inputs/xcrun-return-self.sh %t/ANOTHER-DISTINCTIVE-PATH/usr/bin/xcrun
 
 // RUN: env PATH=%t/ANOTHER-DISTINCTIVE-PATH/usr/bin %t/DISTINCTIVE-PATH/usr/bin/swiftc -target x86_64-apple-macosx10.9 %s -### | %FileCheck -check-prefix=XCRUN_ARCLITE %s
@@ -273,7 +273,7 @@
 // XCRUN_ARCLITE: /ANOTHER-DISTINCTIVE-PATH/usr/lib/arc/libarclite_macosx.a
 // XCRUN_ARCLITE: -o {{[^ ]+}}
 
-// RUN: mkdir -p %t/DISTINCTIVE-PATH/usr/lib/arc
+// RUN: %empty-directory(%t/DISTINCTIVE-PATH/usr/lib/arc)
 
 // RUN: env PATH=%t/ANOTHER-DISTINCTIVE-PATH/usr/bin %t/DISTINCTIVE-PATH/usr/bin/swiftc -target x86_64-apple-macosx10.9 %s -### | %FileCheck -check-prefix=RELATIVE_ARCLITE %s
 
diff --git a/test/Driver/loaded_module_trace.swift b/test/Driver/loaded_module_trace.swift
index 19c136e..637d60a 100644
--- a/test/Driver/loaded_module_trace.swift
+++ b/test/Driver/loaded_module_trace.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -emit-module -module-name Module %S/Inputs/loaded_module_trace_empty.swift -o %t/Module.swiftmodule
 // RUN: %target-build-swift -emit-module -module-name Module2 %S/Inputs/loaded_module_trace_imports_module.swift -o %t/Module2.swiftmodule -I %t
 // RUN: %target-build-swift %s -emit-loaded-module-trace -o %t/loaded_module_trace -I %t
diff --git a/test/Driver/loaded_module_trace_multifile.swift b/test/Driver/loaded_module_trace_multifile.swift
index 6bf13a4..58d1c5d 100644
--- a/test/Driver/loaded_module_trace_multifile.swift
+++ b/test/Driver/loaded_module_trace_multifile.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -emit-module -module-name Module %S/Inputs/loaded_module_trace_empty.swift -o %t/Module.swiftmodule
 // RUN: %target-build-swift -emit-module -module-name Module2 %S/Inputs/loaded_module_trace_empty.swift -o %t/Module2.swiftmodule
 // RUN: %target-build-swift %s %S/Inputs/loaded_module_trace_imports_module.swift -emit-loaded-module-trace-path %t/multifile.trace.json -emit-library -o %t/loaded_module_trace_multifile -I %t
diff --git a/test/Driver/multi-threaded.swift b/test/Driver/multi-threaded.swift
index 9c31ff7..2be009e 100644
--- a/test/Driver/multi-threaded.swift
+++ b/test/Driver/multi-threaded.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swiftc_driver -driver-print-jobs -module-name=ThisModule -wmo -num-threads 4 %S/Inputs/main.swift %s -emit-module -o test.swiftmodule | %FileCheck -check-prefix=MODULE %s
 // RUN: echo "{\"%s\": {\"assembly\": \"/build/multi-threaded.s\"}, \"%S/Inputs/main.swift\": {\"assembly\": \"/build/main.s\"}}" > %t/ofms.json
 // RUN: %target-swiftc_driver -driver-print-jobs -module-name=ThisModule -wmo -num-threads 4 %S/Inputs/main.swift %s -output-file-map %t/ofms.json -S | %FileCheck -check-prefix=ASSEMBLY %s
diff --git a/test/Driver/options-repl-darwin.swift b/test/Driver/options-repl-darwin.swift
index 37fbcb9..8a8e0b9 100644
--- a/test/Driver/options-repl-darwin.swift
+++ b/test/Driver/options-repl-darwin.swift
@@ -4,8 +4,7 @@
 // like the Xcode installation environment. We use hard links to make sure
 // the Swift driver really thinks it's been moved.
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t/usr/bin/
+// RUN: %empty-directory(%t/usr/bin/)
 // RUN: %hardlink-or-copy(from: %swift_driver_plain, to: %t/usr/bin/swift)
 
 // RUN: %t/usr/bin/swift -repl -### | %FileCheck -check-prefix=INTEGRATED %s
@@ -16,7 +15,7 @@
 // RUN: %t/usr/bin/swift -repl -### | %FileCheck -check-prefix=LLDB %s
 // RUN: %t/usr/bin/swift -### | %FileCheck -check-prefix=LLDB %s
 
-// RUN: mkdir -p %t/Toolchains/Test.xctoolchain/usr/bin/
+// RUN: %empty-directory(%t/Toolchains/Test.xctoolchain/usr/bin)
 // RUN: mv %t/usr/bin/swift %t/Toolchains/Test.xctoolchain/usr/bin/swift
 // RUN: %t/Toolchains/Test.xctoolchain/usr/bin/swift -repl -### | %FileCheck -check-prefix=LLDB %s
 
diff --git a/test/Driver/options-repl.swift b/test/Driver/options-repl.swift
index 7967fdb..d980ae8 100644
--- a/test/Driver/options-repl.swift
+++ b/test/Driver/options-repl.swift
@@ -16,7 +16,7 @@
 
 
 // RUN: %swift_driver -lldb-repl -### | %FileCheck -check-prefix=LLDB %s
-// RUN: %swift_driver -lldb-repl -DA,B,C -DD -L /path/to/libraries -L /path/to/more/libraries -F /path/to/frameworks -lsomelib -framework SomeFramework -sdk / -I "this folder" -module-name Test -target %target-triple -### | %FileCheck -check-prefix=LLDB-OPTS %s
+// RUN: %swift_driver -lldb-repl -D A -DB -D C -DD -L /path/to/libraries -L /path/to/more/libraries -F /path/to/frameworks -lsomelib -framework SomeFramework -sdk / -I "this folder" -module-name Test -target %target-triple -### | %FileCheck -check-prefix=LLDB-OPTS %s
 
 // LLDB: lldb{{"?}} {{"?}}--repl=
 // LLDB-NOT: -module-name
@@ -24,7 +24,7 @@
 
 // LLDB-OPTS: lldb{{"?}} "--repl=
 // LLDB-OPTS-DAG: -target {{[^ ]+}}
-// LLDB-OPTS-DAG: -D A,B,C -D D
+// LLDB-OPTS-DAG: -D A -D B -D C -D D
 // LLDB-OPTS-DAG: -sdk /
 // LLDB-OPTS-DAG: -L /path/to/libraries
 // LLDB-OPTS-DAG: -L /path/to/more/libraries
diff --git a/test/Driver/os-deployment.swift b/test/Driver/os-deployment.swift
index 7fd106d..f3d2fcb 100644
--- a/test/Driver/os-deployment.swift
+++ b/test/Driver/os-deployment.swift
@@ -3,9 +3,20 @@
 // RUN: not %swiftc_driver -target x86_64-apple-tvos8.0 %s 2>&1 | %FileCheck --check-prefix=CHECK-tvOS %s
 // RUN: not %swiftc_driver -target x86_64-apple-watchos1.0 %s 2>&1 | %FileCheck --check-prefix=CHECK-watchOS %s
 
+// RUN: not %swiftc_driver -target i386-apple-ios11.0 %s -### 2>&1 | %FileCheck --check-prefix=CHECK-IOS-11 %s
+// RUN: not %swiftc_driver -target armv7-apple-ios11.0 %s -### 2>&1 | %FileCheck --check-prefix=CHECK-IOS-11 %s
+// RUN: not %swiftc_driver -target i386-apple-ios12.0 %s -### 2>&1 | %FileCheck --check-prefix=CHECK-IOS-12 %s
+// RUN: not %swiftc_driver -target armv7-apple-ios12.0 %s -### 2>&1 | %FileCheck --check-prefix=CHECK-IOS-12 %s
+// RUN: %swiftc_driver -target i386-apple-ios10.3 %s -### >/dev/null
+// RUN: %swiftc_driver -target armv7-apple-ios10.3 %s -### >/dev/null
+// RUN: %swiftc_driver -target x86_64-apple-ios11.0 %s -### >/dev/null
+// RUN: %swiftc_driver -target arm64-apple-ios11.0 %s -### >/dev/null
+
 
 // CHECK-OSX: Swift requires a minimum deployment target of OS X 10.9
 // CHECK-IOS: Swift requires a minimum deployment target of iOS 7
 // CHECK-tvOS: Swift requires a minimum deployment target of tvOS 9.0
 // CHECK-watchOS: Swift requires a minimum deployment target of watchOS 2.0
 
+// CHECK-IOS-11: iOS 11 does not support 32-bit programs
+// CHECK-IOS-12: iOS 12 does not support 32-bit programs
diff --git a/test/Driver/output.swift b/test/Driver/output.swift
index c557838..a176a51 100644
--- a/test/Driver/output.swift
+++ b/test/Driver/output.swift
@@ -1,6 +1,5 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
-// RUN: mkdir -p %t/sub
+// RUN: %empty-directory(%t)
+// RUN: %empty-directory(%t/sub)
 // RUN: cd %t
 
 // RUN: %target-swift-frontend -emit-bc %s
diff --git a/test/Driver/sanitizers.swift b/test/Driver/sanitizers.swift
index ecddad7..9ca5619 100644
--- a/test/Driver/sanitizers.swift
+++ b/test/Driver/sanitizers.swift
@@ -1,25 +1,25 @@
-// RUN: %swiftc_driver -driver-print-jobs -sanitize=address -target x86_64-apple-macosx10.9 %s | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_OSX %s
-// RUN: %swiftc_driver -driver-print-jobs -sanitize=address -target x86_64-apple-ios7.1 %s | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_IOSSIM %s
-// RUN: %swiftc_driver -driver-print-jobs -sanitize=address -target arm64-apple-ios7.1 %s  | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_IOS %s
-// RUN: %swiftc_driver -driver-print-jobs -sanitize=address -target x86_64-apple-tvos9.0 %s | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_tvOS_SIM %s
-// RUN: %swiftc_driver -driver-print-jobs -sanitize=address -target arm64-apple-tvos9.0 %s  | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_tvOS %s
-// RUN: %swiftc_driver -driver-print-jobs -sanitize=address -target i386-apple-watchos2.0 %s   | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_watchOS_SIM %s
-// RUN: %swiftc_driver -driver-print-jobs -sanitize=address -target armv7k-apple-watchos2.0 %s | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_watchOS %s
-// RUN: not %swiftc_driver -driver-print-jobs -sanitize=address -target x86_64-unknown-linux-gnu %s 2>&1 | %FileCheck -check-prefix=ASAN_LINUX %s
+// RUN: %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=address -target x86_64-apple-macosx10.9 %s | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_OSX %s
+// RUN: %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=address -target x86_64-apple-ios7.1 %s | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_IOSSIM %s
+// RUN: %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=address -target arm64-apple-ios7.1 %s  | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_IOS %s
+// RUN: %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=address -target x86_64-apple-tvos9.0 %s | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_tvOS_SIM %s
+// RUN: %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=address -target arm64-apple-tvos9.0 %s  | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_tvOS %s
+// RUN: %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=address -target i386-apple-watchos2.0 %s   | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_watchOS_SIM %s
+// RUN: %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=address -target armv7k-apple-watchos2.0 %s | %FileCheck -check-prefix=ASAN -check-prefix=ASAN_watchOS %s
+// RUN: not %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=address -target x86_64-unknown-linux-gnu %s 2>&1 | %FileCheck -check-prefix=ASAN_LINUX %s
 
-// RUN: %swiftc_driver -driver-print-jobs -sanitize=thread -target x86_64-apple-macosx10.9 %s | %FileCheck -check-prefix=TSAN -check-prefix=TSAN_OSX %s
-// RUN: not %swiftc_driver -driver-print-jobs -sanitize=thread -target x86-apple-macosx10.9 %s 2>&1 | %FileCheck -check-prefix=TSAN_OSX_32 %s
-// RUN: %swiftc_driver -driver-print-jobs -sanitize=thread -target x86_64-apple-ios7.1 %s | %FileCheck -check-prefix=TSAN -check-prefix=TSAN_IOSSIM %s
-// RUN: not %swiftc_driver -driver-print-jobs -sanitize=thread -target arm64-apple-ios7.1 %s 2>&1 | %FileCheck -check-prefix=TSAN_IOS %s
-// RUN: %swiftc_driver -driver-print-jobs -sanitize=thread -target x86_64-apple-tvos9.0 %s | %FileCheck -check-prefix=TSAN -check-prefix=TSAN_tvOS_SIM %s
-// RUN: not %swiftc_driver -driver-print-jobs -sanitize=thread -target arm64-apple-tvos9.0 %s 2>&1 | %FileCheck -check-prefix=TSAN_tvOS %s
-// RUN: not %swiftc_driver -driver-print-jobs -sanitize=thread -target i386-apple-watchos2.0 %s 2>&1 | %FileCheck -check-prefix=TSAN_watchOS_SIM %s
-// RUN: not %swiftc_driver -driver-print-jobs -sanitize=thread -target armv7k-apple-watchos2.0 %s 2>&1  | %FileCheck -check-prefix=TSAN_watchOS %s
-// RUN: not %swiftc_driver -driver-print-jobs -sanitize=thread -target x86_64-unknown-linux-gnu %s 2>&1 | %FileCheck -check-prefix=TSAN_LINUX %s
+// RUN: %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=thread -target x86_64-apple-macosx10.9 %s | %FileCheck -check-prefix=TSAN -check-prefix=TSAN_OSX %s
+// RUN: not %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=thread -target x86-apple-macosx10.9 %s 2>&1 | %FileCheck -check-prefix=TSAN_OSX_32 %s
+// RUN: not %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=thread -target x86_64-apple-ios7.1 %s 2>&1 | %FileCheck -check-prefix=TSAN_IOSSIM %s
+// RUN: not %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=thread -target arm64-apple-ios7.1 %s 2>&1 | %FileCheck -check-prefix=TSAN_IOS %s
+// RUN: not %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=thread -target x86_64-apple-tvos9.0 %s 2>&1 | %FileCheck -check-prefix=TSAN_tvOS_SIM %s
+// RUN: not %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=thread -target arm64-apple-tvos9.0 %s 2>&1 | %FileCheck -check-prefix=TSAN_tvOS %s
+// RUN: not %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=thread -target i386-apple-watchos2.0 %s 2>&1 | %FileCheck -check-prefix=TSAN_watchOS_SIM %s
+// RUN: not %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=thread -target armv7k-apple-watchos2.0 %s 2>&1  | %FileCheck -check-prefix=TSAN_watchOS %s
+// RUN: not %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=thread -target x86_64-unknown-linux-gnu %s 2>&1 | %FileCheck -check-prefix=TSAN_LINUX %s
 
-// RUN: not %swiftc_driver -driver-print-jobs -sanitize=address,unknown %s 2>&1 | %FileCheck -check-prefix=BADARG %s
-// RUN: not %swiftc_driver -driver-print-jobs -sanitize=address -sanitize=unknown %s 2>&1 | %FileCheck -check-prefix=BADARG %s
-// RUN: not %swiftc_driver -driver-print-jobs -sanitize=address,thread %s 2>&1 | %FileCheck -check-prefix=INCOMPATIBLESANITIZERS %s
+// RUN: not %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=address,unknown %s 2>&1 | %FileCheck -check-prefix=BADARG %s
+// RUN: not %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=address -sanitize=unknown %s 2>&1 | %FileCheck -check-prefix=BADARG %s
+// RUN: not %swiftc_driver -resource-dir %S/Inputs/fake-resource-dir/lib/swift/ -driver-print-jobs -sanitize=address,thread %s 2>&1 | %FileCheck -check-prefix=INCOMPATIBLESANITIZERS %s
 
 // ASAN: swift
 // ASAN: -sanitize=address
@@ -40,9 +40,9 @@
 
 // TSAN_OSX: lib/swift/clang/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib
 // TSAN_OSX_32: unsupported option '-sanitize=thread' for target 'x86-apple-macosx10.9'
-// TSAN_IOSSIM: lib/swift/clang/lib/darwin/libclang_rt.tsan_iossim_dynamic.dylib
+// TSAN_IOSSIM: unsupported option '-sanitize=thread' for target 'x86_64-apple-ios7.1'
 // TSAN_IOS: unsupported option '-sanitize=thread' for target 'arm64-apple-ios7.1'
-// TSAN_tvOS_SIM: lib/swift/clang/lib/darwin/libclang_rt.tsan_tvossim_dynamic.dylib
+// TSAN_tvOS_SIM: unsupported option '-sanitize=thread' for target 'x86_64-apple-tvos9.0'
 // TSAN_tvOS: unsupported option '-sanitize=thread' for target 'arm64-apple-tvos9.0'
 // TSAN_watchOS_SIM: unsupported option '-sanitize=thread' for target 'i386-apple-watchos2.0'
 // TSAN_watchOS: unsupported option '-sanitize=thread' for target 'armv7k-apple-watchos2.0'
diff --git a/test/Driver/sdk-apple.swift b/test/Driver/sdk-apple.swift
index a1d94bf..7647a09 100644
--- a/test/Driver/sdk-apple.swift
+++ b/test/Driver/sdk-apple.swift
@@ -1,7 +1,8 @@
 // XFAIL: freebsd, linux
 
 // Test SDK detection for immediate mode.
-// RUN: rm -rf %t && mkdir -p %t/usr/bin/
+// RUN: %empty-directory(%t)
+// RUN: %empty-directory(%t/usr/bin)
 
 // RUN: cp %S/Inputs/xcrun-bad.sh %t/usr/bin/xcrun
 // RUN: env PATH=%t/usr/bin %swift_driver_plain -deprecated-integrated-repl -### | %FileCheck -check-prefix=NOSDK %s
@@ -21,16 +22,19 @@
 
 // ROOT-SDK: -sdk /{{ |$}}
 
-// RUN: rm -rf %t && mkdir -p %t
-// RUN: mkdir -p %t/MacOSX10.8.sdk && not %swift_driver -sdk %t/MacOSX10.8.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/MacOSX10.9.sdk && not %swift_driver -sdk %t/MacOSX10.9.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/MacOSX10.9.Internal.sdk && not %swift_driver -sdk %t/MacOSX10.9.Internal.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/MacOSX10.10.sdk && not %swift_driver -sdk %t/MacOSX10.10.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/MacOSX10.10.Internal.sdk && not %swift_driver -sdk %t/MacOSX10.10.Internal.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/MacOSX10.11.sdk && not %swift_driver -sdk %t/MacOSX10.11.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/MacOSX10.11.Internal.sdk && not %swift_driver -sdk %t/MacOSX10.11.Internal.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/MacOSX10.12.sdk && %swift_driver -sdk %t/MacOSX10.12.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
-// RUN: mkdir -p %t/OSX12.sdk && %swift_driver -sdk %t/OSX12.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
+// RUN: %empty-directory(%t)
+// RUN: %empty-directory(%t/MacOSX10.8.sdk) && not %swift_driver -sdk %t/MacOSX10.8.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/MacOSX10.9.sdk) && not %swift_driver -sdk %t/MacOSX10.9.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/MacOSX10.9.Internal.sdk) && not %swift_driver -sdk %t/MacOSX10.9.Internal.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/MacOSX10.10.sdk) && not %swift_driver -sdk %t/MacOSX10.10.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/MacOSX10.10.Internal.sdk) && not %swift_driver -sdk %t/MacOSX10.10.Internal.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/MacOSX10.11.sdk) && not %swift_driver -sdk %t/MacOSX10.11.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/MacOSX10.11.Internal.sdk) && not %swift_driver -sdk %t/MacOSX10.11.Internal.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/MacOSX10.12.sdk) && not %swift_driver -sdk %t/MacOSX10.12.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/MacOSX10.12.Internal.sdk) && not %swift_driver -sdk %t/MacOSX10.12.Internal.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/MacOSX10.13.sdk) && %swift_driver -sdk %t/MacOSX10.13.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
+// RUN: %empty-directory(%t/MacOSX10.13.Internal.sdk) && %swift_driver -sdk %t/MacOSX10.13.Internal.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
+// RUN: %empty-directory(%t/OSX50.sdk) && %swift_driver -sdk %t/OSX50.sdk -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
 
 // RUN: not %swift_driver -sdk %t/MacOSX10.9.sdk/ -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
 // RUN: not %swift_driver -sdk %t/MacOSX10.9.Internal.sdk/ -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
@@ -38,36 +42,41 @@
 // RUN: not %swift_driver -sdk %t/MacOSX10.10.Internal.sdk/ -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
 // RUN: not %swift_driver -sdk %t/MacOSX10.11.sdk/ -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
 // RUN: not %swift_driver -sdk %t/MacOSX10.11.Internal.sdk/ -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: %swift_driver -sdk %t/MacOSX10.12.sdk/ -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
-// RUN: %swift_driver -sdk %t/MacOSX10.12.Internal.sdk/ -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
+// RUN: not %swift_driver -sdk %t/MacOSX10.12.sdk/ -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: not %swift_driver -sdk %t/MacOSX10.12.Internal.sdk/ -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %swift_driver -sdk %t/MacOSX10.13.sdk/ -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
+// RUN: %swift_driver -sdk %t/MacOSX10.13.Internal.sdk/ -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
 
-// RUN: mkdir -p %t/iPhoneOS7.0.sdk && not %swift_driver -sdk %t/iPhoneOS7.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/iPhoneOS7.0.Internal.sdk && not %swift_driver -sdk %t/iPhoneOS7.0.Internal.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/iPhoneOS8.0.sdk && not %swift_driver -sdk %t/iPhoneOS8.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/iPhoneOS8.0.Internal.sdk && not %swift_driver -sdk %t/iPhoneOS8.0.Internal.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/iPhoneOS9.0.sdk && not %swift_driver -sdk %t/iPhoneOS9.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/iPhoneOS10.0.sdk && %swift_driver -sdk %t/iPhoneOS10.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
+// RUN: %empty-directory(%t/iPhoneOS7.0.sdk) && not %swift_driver -sdk %t/iPhoneOS7.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/iPhoneOS7.0.Internal.sdk) && not %swift_driver -sdk %t/iPhoneOS7.0.Internal.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/iPhoneOS8.0.sdk) && not %swift_driver -sdk %t/iPhoneOS8.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/iPhoneOS8.0.Internal.sdk) && not %swift_driver -sdk %t/iPhoneOS8.0.Internal.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/iPhoneOS9.0.sdk) && not %swift_driver -sdk %t/iPhoneOS9.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/iPhoneOS10.0.sdk) && not %swift_driver -sdk %t/iPhoneOS10.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/iPhoneOS11.0.sdk) && %swift_driver -sdk %t/iPhoneOS11.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
 
-// RUN: mkdir -p %t/tvOS8.0.sdk && not %swift_driver -sdk %t/tvOS8.0.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/tvOS8.0.Internal.sdk && not %swift_driver -sdk %t/tvOS8.0.Internal.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/tvOS9.0.sdk && not %swift_driver -sdk %t/tvOS9.0.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/tvOS10.0.sdk && %swift_driver -sdk %t/tvOS10.0.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
+// RUN: %empty-directory(%t/tvOS8.0.sdk) && not %swift_driver -sdk %t/tvOS8.0.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/tvOS8.0.Internal.sdk) && not %swift_driver -sdk %t/tvOS8.0.Internal.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/tvOS9.0.sdk) && not %swift_driver -sdk %t/tvOS9.0.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/tvOS10.0.sdk) && not %swift_driver -sdk %t/tvOS10.0.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/tvOS11.0.sdk) && %swift_driver -sdk %t/tvOS11.0.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
 
-// RUN: mkdir -p %t/watchOS1.0.sdk && not %swift_driver -sdk %t/watchOS1.0.sdk -target x86_64-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/watchOS1.0.Internal.sdk && not %swift_driver -sdk %t/watchOS1.0.Internal.sdk -target x86_64-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/watchOS2.0.sdk && not %swift_driver -sdk %t/watchOS2.0.sdk -target x86_64-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/watchOS3.0.sdk && %swift_driver -sdk %t/watchOS3.0.sdk -target x86_64-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
+// RUN: %empty-directory(%t/watchOS1.0.sdk) && not %swift_driver -sdk %t/watchOS1.0.sdk -target x86_64-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/watchOS1.0.Internal.sdk) && not %swift_driver -sdk %t/watchOS1.0.Internal.sdk -target x86_64-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/watchOS2.0.sdk) && not %swift_driver -sdk %t/watchOS2.0.sdk -target x86_64-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/watchOS3.0.sdk) && not %swift_driver -sdk %t/watchOS3.0.sdk -target x86_64-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/watchOS4.0.sdk) && %swift_driver -sdk %t/watchOS4.0.sdk -target x86_64-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
 
-// RUN: mkdir -p %t/iPhoneSimulator7.0.sdk && not %swift_driver -sdk %t/iPhoneSimulator7.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/iPhoneSimulator8.0.sdk && not %swift_driver -sdk %t/iPhoneSimulator8.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/AppleTVSimulator8.0.sdk && not %swift_driver -sdk %t/AppleTVSimulator8.0.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
-// RUN: mkdir -p %t/WatchSimulator1.0.sdk && not %swift_driver -sdk %t/WatchSimulator1.0.sdk -target i386-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/iPhoneSimulator7.0.sdk) && not %swift_driver -sdk %t/iPhoneSimulator7.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/iPhoneSimulator8.0.sdk) && not %swift_driver -sdk %t/iPhoneSimulator8.0.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/AppleTVSimulator8.0.sdk) && not %swift_driver -sdk %t/AppleTVSimulator8.0.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
+// RUN: %empty-directory(%t/WatchSimulator1.0.sdk) && not %swift_driver -sdk %t/WatchSimulator1.0.sdk -target i386-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-TOO-OLD %s
 
-// RUN: mkdir -p %t/iPhoneOS.sdk && %swift_driver -sdk %t/iPhoneOS.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
-// RUN: mkdir -p %t/tvOS.sdk && %swift_driver -sdk %t/tvOS.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
-// RUN: mkdir -p %t/watchOS.sdk && %swift_driver -sdk %t/watchOS.sdk -target x86_64-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
+// RUN: %empty-directory(%t/iPhoneOS.sdk) && %swift_driver -sdk %t/iPhoneOS.sdk -target x86_64-apple-ios7 -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
+// RUN: %empty-directory(%t/tvOS.sdk) && %swift_driver -sdk %t/tvOS.sdk -target x86_64-apple-tvos9 -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
+// RUN: %empty-directory(%t/watchOS.sdk) && %swift_driver -sdk %t/watchOS.sdk -target x86_64-apple-watchos2 -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
 
-// RUN: mkdir -p %t/custom-sdk && %swift_driver -sdk %t/custom-sdk -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
+// RUN: %empty-directory(%t/custom-sdk) && %swift_driver -sdk %t/custom-sdk -### 2>&1 | %FileCheck -check-prefix=SDK-OKAY %s
 
 // SDK-TOO-OLD: error: Swift does not support the SDK '{{.+}}.sdk'{{$}}
 // SDK-OKAY: -sdk {{.*}}/{{[^/ ]+}}sdk
diff --git a/test/Driver/sdk-link.swift b/test/Driver/sdk-link.swift
index daab933..3e8b648 100644
--- a/test/Driver/sdk-link.swift
+++ b/test/Driver/sdk-link.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t/test.swiftmodule %s
 // RUN: %target-build-swift -g -o %t/sdk-link %s
 // RUN: %target-run %t/sdk-link | %FileCheck %s
diff --git a/test/Driver/static-stdlib-linux.swift b/test/Driver/static-stdlib-linux.swift
index a1ed42e..59d5e29 100644
--- a/test/Driver/static-stdlib-linux.swift
+++ b/test/Driver/static-stdlib-linux.swift
@@ -2,7 +2,7 @@
 // REQUIRES: OS=linux-gnu
 // REQUIRES: static_stdlib
 print("hello world!")
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swiftc_driver -static-stdlib -o %t/static-stdlib %s
 // RUN: %t/static-stdlib | %FileCheck %s
 // RUN: ldd %t/static-stdlib | %FileCheck %s --check-prefix=LDD
diff --git a/test/Driver/static-stdlib.swift b/test/Driver/static-stdlib.swift
index 6e1fd73..e079073 100644
--- a/test/Driver/static-stdlib.swift
+++ b/test/Driver/static-stdlib.swift
@@ -2,7 +2,7 @@
 // XFAIL: linux
 // REQUIRES: static_stdlib
 print("hello world!")
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -static-stdlib -o %t/static-stdlib %s
 // RUN: %target-run %t/static-stdlib | %FileCheck %s
 // RUN: otool -L %t/static-stdlib | %FileCheck %s --check-prefix=OTOOL
diff --git a/test/Driver/subcommands.swift b/test/Driver/subcommands.swift
index 094de63..57b5406 100644
--- a/test/Driver/subcommands.swift
+++ b/test/Driver/subcommands.swift
@@ -17,7 +17,8 @@
 // (for shebang line use). We have to run these since we can't get the driver to
 // dump what it is doing and test the argv[1] processing.
 //
-// RUN: mkdir -p %t.dir/subpath
+// RUN: %empty-directory(%t.dir)
+// RUN: %empty-directory(%t.dir/subpath)
 // RUN: echo "print(\"exec: \" + #file)" > %t.dir/stdin
 // RUN: echo "print(\"exec: \" + #file)" > %t.dir/t.swift
 // RUN: echo "print(\"exec: \" + #file)" > %t.dir/subpath/build
@@ -31,8 +32,7 @@
 
 // Check that 'swift foo' invokes 'swift-foo'.
 //
-// RUN: rm -rf %t.dir
-// RUN: mkdir -p %t.dir
+// RUN: %empty-directory(%t.dir)
 // RUN: echo "#!/bin/sh" > %t.dir/swift-foo
 // RUN: echo "echo \"exec: \$0\"" >> %t.dir/swift-foo
 // RUN: chmod +x %t.dir/swift-foo
diff --git a/test/Driver/temp-files.swift b/test/Driver/temp-files.swift
index 3fa22f7..d1a5197 100644
--- a/test/Driver/temp-files.swift
+++ b/test/Driver/temp-files.swift
@@ -1,25 +1,27 @@
 // REQUIRES: objc_interop
 // FIXME: actually, this test requires Mach-O.
 
-// RUN: rm -rf %t && mkdir -p %t/tmp/ && touch %t/tmp/dummy
+// RUN: %empty-directory(%t)
+// RUN: %empty-directory(%t/tmp)
+// RUN: touch %t/tmp/dummy
 // RUN: env TMPDIR=%t/tmp/ %target-swiftc_driver -emit-executable %s -o %t/main
 // RUN: ls %t/main
 // RUN: ls %t/tmp | %FileCheck -check-prefix=EMPTY %s
 
 // EMPTY-NOT: .{{(o|swiftmodule|swiftdoc)}}
 
-// RUN: rm -rf %t && mkdir -p %t/tmp/ && touch %t/tmp/dummy
+// RUN: %empty-directory(%t) && %empty-directory(%t/tmp) && touch %t/tmp/dummy
 // RUN: env TMPDIR=%t/tmp/ %swiftc_driver -target %target-triple -sdk %sdk -module-cache-path %t -emit-executable %s -o %t/main2 -emit-module-path %t/main2.swiftmodule
 // RUN: ls %t/main2
 // RUN: ls %t/main2.swiftmodule
 // RUN: ls %t/tmp | %FileCheck -check-prefix=EMPTY %s
 
-// RUN: rm -rf %t && mkdir -p %t/tmp/ && touch %t/tmp/dummy
+// RUN: %empty-directory(%t) && %empty-directory(%t/tmp) && touch %t/tmp/dummy
 // RUN: env TMPDIR=%t/tmp/ %swiftc_driver -target %target-triple -sdk %sdk -module-cache-path %t -emit-executable %s -o %t/main3 -g
 // RUN: ls %t/main3
 // RUN: ls %t/tmp | %FileCheck -check-prefix=EMPTY %s
 
-// RUN: rm -rf %t && mkdir -p %t/tmp/ && touch %t/tmp/dummy
+// RUN: %empty-directory(%t) && %empty-directory(%t/tmp) && touch %t/tmp/dummy
 // RUN: env TMPDIR=%t/tmp/ %swiftc_driver -target %target-triple -sdk %sdk -module-cache-path %t -emit-executable %s -o %t/main4 -emit-module-path %t/main4.swiftmodule -g
 // RUN: ls %t/main4
 // RUN: ls %t/main4.swiftmodule
@@ -29,7 +31,7 @@
 // MAIN4-macho: main4.dSYM
 // MAIN4-elf-NOT: .dSYM
 
-// RUN: rm -rf %t && mkdir -p %t/tmp/ && touch %t/tmp/dummy
+// RUN: %empty-directory(%t) && %empty-directory(%t/tmp) && touch %t/tmp/dummy
 // RUN: echo "{\"%s\": {\"object\": \"%t/main5.o\"}}" > %t.json
 // RUN: env TMPDIR=%t/tmp/ %swiftc_driver -target %target-triple -sdk %sdk -module-cache-path %t -emit-executable %s -o %t/main5 -output-file-map %t.json -g
 // RUN: ls %t/main5
@@ -40,7 +42,7 @@
 // MAIN5-macho: main5.dSYM
 // MAIN5-elf-NOT: .dSYM
 
-// RUN: rm -rf %t && mkdir -p %t/tmp/ && touch %t/tmp/dummy
+// RUN: %empty-directory(%t) && %empty-directory(%t/tmp) && touch %t/tmp/dummy
 // RUN: env TMPDIR=%t/tmp/ %swiftc_driver -target %target-triple -sdk %sdk -module-cache-path %t -emit-executable %s -o %t/main6 -g -save-temps
 // RUN: ls %t/main6
 // RUN: ls %t | %FileCheck -check-prefix=MAIN6-%target-object-format %s
diff --git a/test/Driver/unknown-inputs.swift b/test/Driver/unknown-inputs.swift
index f9a27b6..78569fd 100644
--- a/test/Driver/unknown-inputs.swift
+++ b/test/Driver/unknown-inputs.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: touch %t/empty
 // RUN: touch %t/empty.swiftmodule
 // RUN: touch %t/empty.o
diff --git a/test/Frontend/dependencies-preservation.swift b/test/Frontend/dependencies-preservation.swift
index cd01cec..b32351a 100644
--- a/test/Frontend/dependencies-preservation.swift
+++ b/test/Frontend/dependencies-preservation.swift
@@ -3,7 +3,7 @@
 // a second compilation should move 'foo.swiftdeps' to 'foo.swiftdeps~', then
 // overwrite 'foo.swiftdeps' with new dependency information.
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // First, produce the dependency files and verify their contents.
 // RUN: %target-swift-frontend -emit-reference-dependencies-path %t.swiftdeps -typecheck -primary-file %S/../Inputs/empty\ file.swift
diff --git a/test/Frontend/dependencies.swift b/test/Frontend/dependencies.swift
index 3628859..7d9e7f5 100644
--- a/test/Frontend/dependencies.swift
+++ b/test/Frontend/dependencies.swift
@@ -1,6 +1,6 @@
 // XFAIL: linux
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-frontend -emit-dependencies-path - -typecheck %S/../Inputs/empty\ file.swift | %FileCheck -check-prefix=CHECK-BASIC %s
 // RUN: %target-swift-frontend -emit-reference-dependencies-path - -typecheck -primary-file %S/../Inputs/empty\ file.swift | %FileCheck -check-prefix=CHECK-BASIC-YAML %s
diff --git a/test/Frontend/filelist.swift b/test/Frontend/filelist.swift
index 000d6e3..7d02866 100644
--- a/test/Frontend/filelist.swift
+++ b/test/Frontend/filelist.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: echo '%S/Inputs/filelist-other.swift' >> %t/input.txt
 // RUN: echo '%s' >> %t/input.txt
 // RUN: echo '%S/../Inputs/empty.swift' >> %t/input.txt
diff --git a/test/Frontend/sil-primary-file-with-sib.swift b/test/Frontend/sil-primary-file-with-sib.swift
index 1b7f3e4..485ec46 100644
--- a/test/Frontend/sil-primary-file-with-sib.swift
+++ b/test/Frontend/sil-primary-file-with-sib.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-build-swift -emit-sib %s -module-name test -o %t/test.sib
 // RUN: %target-build-swift -Xfrontend -disable-llvm-optzns -emit-ir %s -module-name test -o %t/test-orig.ll
diff --git a/test/Frontend/unknown-arguments.swift b/test/Frontend/unknown-arguments.swift
index d80a2a7..0e681b2 100644
--- a/test/Frontend/unknown-arguments.swift
+++ b/test/Frontend/unknown-arguments.swift
@@ -6,3 +6,9 @@
 // RUN: not %swiftc_driver -c %s -o %t.o -Xfrontend -fake-frontend-arg -Xfrontend fakevalue 2>&1 | %FileCheck -check-prefix=XFRONTEND %s
 
 // XFRONTEND: <unknown>:0: error: unknown argument: '-fake-frontend-arg'
+
+// RUN: not %swiftc_driver -D Correct -DAlsoCorrect -D@#%! -D Swift=Cool -D-D -c %s -o %t.o 2>&1 | %FileCheck -check-prefix=INVALID-COND %s
+// INVALID-COND: <unknown>:0: error: conditional compilation flags must be valid Swift identifiers (rather than '@#%!')
+// INVALID-COND-NEXT: <unknown>:0: error: conditional compilation flags do not have values in Swift; they are either present or absent (rather than 'Swift=Cool')
+// INVALID-COND-NEXT: <unknown>:0: error: conditional compilation flags must be valid Swift identifiers (rather than '-D')
+
diff --git a/test/Generics/associated_type_typo.swift b/test/Generics/associated_type_typo.swift
index 1e3255f..24d5f81 100644
--- a/test/Generics/associated_type_typo.swift
+++ b/test/Generics/associated_type_typo.swift
@@ -14,7 +14,7 @@
 protocol P3 { }
 protocol P4 { }
 
-// expected-error@+1{{'T' does not have a member type named 'assoc'; did you mean 'Assoc'?}}{{30-35=Assoc}}
+// expected-error@+1{{'assoc' is not a member type of 'T'}}
 func typoAssoc1<T : P1>(x: T.assoc, _: T) { } 
 
 // expected-error@+2{{'T' does not have a member type named 'assoc'; did you mean 'Assoc'?}}{{53-58=Assoc}}
diff --git a/test/Generics/same_type_constraints.swift b/test/Generics/same_type_constraints.swift
index f529fd6..873efe7 100644
--- a/test/Generics/same_type_constraints.swift
+++ b/test/Generics/same_type_constraints.swift
@@ -365,3 +365,10 @@
 
 func intracomponentInferred<T>(_: X11<T>) // expected-note{{previous same-type constraint 'T.A' == 'T.B' inferred from type here}}
   where T.A == T.B { } // expected-warning{{redundant same-type constraint 'T.A' == 'T.B'}}
+
+// Suppress redundant same-type constraint warnings from result types.
+struct StructTakingP1<T: P1> { }
+
+func resultTypeSuppress<T: P1>() -> StructTakingP1<T> {
+  return StructTakingP1()
+}
diff --git a/test/Generics/superclass_constraint.swift b/test/Generics/superclass_constraint.swift
index efb35a3..94a37e0 100644
--- a/test/Generics/superclass_constraint.swift
+++ b/test/Generics/superclass_constraint.swift
@@ -101,7 +101,7 @@
 
 // CHECK: superclassConformance3
 // CHECK: Requirements:
-// CHECK-NEXT: τ_0_0 : C2 [τ_0_0: Explicit @ {{.*}}:46]
+// CHECK-NEXT: τ_0_0 : C2 [τ_0_0: Explicit @ {{.*}}:61]
 // CHECK-NEXT: τ_0_0 : _NativeClass [τ_0_0: Explicit @ {{.*}}:46 -> Superclass]
 // CHECK-NEXT: τ_0_0 : P4 [τ_0_0: Explicit @ {{.*}}:61 -> Superclass (C2: P4)]
 // CHECK: Canonical generic signature: <τ_0_0 where τ_0_0 : C2>
@@ -152,3 +152,34 @@
 }
 
 func genericFunc<T : Elementary, U : Classical>(_: T, _: U) where T.Element == U.Element {}
+
+// Lookup within superclass constraints.
+protocol P8 {
+  associatedtype B
+}
+
+class C8 {
+  struct A { }
+}
+
+func superclassLookup1<T: C8 & P8>(_: T) where T.A == T.B { }
+
+func superclassLookup2<T: P8>(_: T) where T.A == T.B, T: C8 { }
+
+func superclassLookup3<T>(_: T) where T.A == T.B, T: C8, T: P8 { }
+
+// SR-5165
+class C9 {}
+
+protocol P9 {}
+
+class C10 : C9, P9 { }
+
+protocol P10 {
+  associatedtype A: C9
+}
+
+// CHECK: superclass_constraint.(file).testP10
+// CHECK: Generic signature: <T where T : P10, T.A : C10>
+// CHECK: Canonical generic signature: <τ_0_0 where τ_0_0 : P10, τ_0_0.A : C10>
+func testP10<T>(_: T) where T: P10, T.A: C10 { }
diff --git a/test/IDE/compatibility_alias.swift b/test/IDE/compatibility_alias.swift
index d94e562..113430d 100644
--- a/test/IDE/compatibility_alias.swift
+++ b/test/IDE/compatibility_alias.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-clang-importer-objc-overlays
 
 // RUN: %target-swift-ide-test(mock-sdk: %clang-importer-sdk-nosource) -I %t -I %S/Inputs/custom-modules -print-module -source-filename %s -module-to-print=CompatibilityAlias > %t.printed.CompatibilityAlias.txt
diff --git a/test/IDE/complete_at_top_level.swift b/test/IDE/complete_at_top_level.swift
index 0eb4877..a6b6bf58 100644
--- a/test/IDE/complete_at_top_level.swift
+++ b/test/IDE/complete_at_top_level.swift
@@ -151,9 +151,9 @@
 
 fooObject#^TYPE_CHECKED_EXPR_1^#
 // TYPE_CHECKED_EXPR_1: Begin completions
-// TYPE_CHECKED_EXPR_1-NEXT: Decl[InstanceVar]/CurrNominal: .instanceVar[#Int#]{{; name=.+$}}
-// TYPE_CHECKED_EXPR_1-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc({#(a): Int#})[#Void#]{{; name=.+$}}
-// TYPE_CHECKED_EXPR_1-NEXT: BuiltinOperator/None:                     = {#FooStruct#}[#Void#];
+// TYPE_CHECKED_EXPR_1-NEXT: Decl[InstanceVar]/CurrNominal:      .instanceVar[#Int#]{{; name=.+$}}
+// TYPE_CHECKED_EXPR_1-NEXT: Decl[InstanceMethod]/CurrNominal:   .instanceFunc({#(a): Int#})[#Void#]{{; name=.+$}}
+// TYPE_CHECKED_EXPR_1-NEXT:BuiltinOperator/None:                = {#FooStruct#}[#Void#]; name== FooStruct
 // TYPE_CHECKED_EXPR_1-NEXT: End completions
 
 func resyncParser2() {}
@@ -165,7 +165,7 @@
 // TYPE_CHECKED_EXPR_2: Begin completions
 // TYPE_CHECKED_EXPR_2-NEXT: Decl[InstanceVar]/CurrNominal: .instanceVar[#Int#]{{; name=.+$}}
 // TYPE_CHECKED_EXPR_2-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc({#(a): Int#})[#Void#]{{; name=.+$}}
-// TYPE_CHECKED_EXPR_2-NEXT: BuiltinOperator/None:                     = {#FooStruct#}[#Void#];
+// TYPE_CHECKED_EXPR_2-NEXT: BuiltinOperator/None:                     = {#FooStruct#}[#Void#]; name== FooStruct
 // TYPE_CHECKED_EXPR_2-NEXT: End completions
 
 func resyncParser3() {}
@@ -174,7 +174,7 @@
 // TYPE_CHECKED_EXPR_3: Begin completions
 // TYPE_CHECKED_EXPR_3-NEXT: Decl[InstanceVar]/CurrNominal: .instanceVar[#Int#]{{; name=.+$}}
 // TYPE_CHECKED_EXPR_3-NEXT: Decl[InstanceMethod]/CurrNominal: .instanceFunc({#(a): Int#})[#Void#]{{; name=.+$}}
-// TYPE_CHECKED_EXPR_3-NEXT: BuiltinOperator/None:                     = {#FooStruct#}[#Void#];
+// TYPE_CHECKED_EXPR_3-NEXT: BuiltinOperator/None:                     = {#FooStruct#}[#Void#]; name== FooStruct
 // TYPE_CHECKED_EXPR_3-NEXT: End completions
 
 func resyncParser4() {}
diff --git a/test/IDE/complete_decl_attribute.swift b/test/IDE/complete_decl_attribute.swift
index 81967a8..a6815ca 100644
--- a/test/IDE/complete_decl_attribute.swift
+++ b/test/IDE/complete_decl_attribute.swift
@@ -58,7 +58,7 @@
 @#^KEYWORD3^#
 class C {}
 
-// KEYWORD3:                  Begin completions, 10 items
+// KEYWORD3:                  Begin completions, 8 items
 // KEYWORD3-NEXT:             Keyword/None:                       available[#Class Attribute#]; name=available{{$}}
 // KEYWORD3-NEXT:             Keyword/None:                       objc[#Class Attribute#]; name=objc{{$}}
 // KEYWORD3-NEXT:             Keyword/None:                       IBDesignable[#Class Attribute#]; name=IBDesignable{{$}}
@@ -67,8 +67,6 @@
 // KEYWORD3-NEXT:             Keyword/None:                       objcMembers[#Class Attribute#]; name=objcMembers{{$}}
 // KEYWORD3-NEXT:             Keyword/None:                       NSApplicationMain[#Class Attribute#]; name=NSApplicationMain{{$}}
 // KEYWORD3-NEXT:             Keyword/None:                       objc_non_lazy_realization[#Class Attribute#]; name=objc_non_lazy_realization{{$}}
-// KEYWORD3-NEXT:             Keyword/None:                       NSKeyedArchiverClassName[#Class Attribute#]; name=NSKeyedArchiverClassName{{$}}
-// KEYWORD3-NEXT:             Keyword/None:                       NSKeyedArchiverEncodeNonGenericSubclassesOnly[#Class Attribute#]; name=NSKeyedArchiverEncodeNonGenericSubclassesOnly{{$}}
 // KEYWORD3-NEXT:             End completions
 
 @#^KEYWORD4^#
@@ -88,7 +86,7 @@
 
 @#^KEYWORD_LAST^#
 
-// KEYWORD_LAST:                  Begin completions, 23 items
+// KEYWORD_LAST:                  Begin completions, 21 items
 // KEYWORD_LAST-NEXT:             Keyword/None:                       available[#Declaration Attribute#]; name=available{{$}}
 // KEYWORD_LAST-NEXT:             Keyword/None:                       objc[#Declaration Attribute#]; name=objc{{$}}
 // KEYWORD_LAST-NEXT:             Keyword/None:                       noreturn[#Declaration Attribute#]; name=noreturn{{$}}
@@ -110,6 +108,4 @@
 // KEYWORD_LAST-NEXT:             Keyword/None:                       warn_unqualified_access[#Declaration Attribute#]; name=warn_unqualified_access
 // KEYWORD_LAST-NEXT:             Keyword/None:                       discardableResult[#Declaration Attribute#]; name=discardableResult
 // KEYWORD_LAST-NEXT:             Keyword/None:                       GKInspectable[#Declaration Attribute#]; name=GKInspectable{{$}}
-// KEYWORD_LAST-NEXT:             Keyword/None:                       NSKeyedArchiverClassName[#Declaration Attribute#]; name=NSKeyedArchiverClassName{{$}}
-// KEYWORD_LAST-NEXT:             Keyword/None:                       NSKeyedArchiverEncodeNonGenericSubclassesOnly[#Declaration Attribute#]; name=NSKeyedArchiverEncodeNonGenericSubclassesOnly{{$}}
 // KEYWORD_LAST-NEXT:             End completions
diff --git a/test/IDE/complete_dynamic_lookup.swift b/test/IDE/complete_dynamic_lookup.swift
index 16bf163..31893fe 100644
--- a/test/IDE/complete_dynamic_lookup.swift
+++ b/test/IDE/complete_dynamic_lookup.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -disable-objc-attr-requires-foundation-module -o %t %S/Inputs/AnyObject/foo_swift_module.swift
 // RUN: %target-swift-frontend -emit-module -disable-objc-attr-requires-foundation-module -o %t %S/Inputs/AnyObject/bar_swift_module.swift
 // RUN: cp %S/Inputs/AnyObject/baz_clang_module.h %t
diff --git a/test/IDE/complete_enum_elements.swift b/test/IDE/complete_enum_elements.swift
index 99b2c43..35169a7 100644
--- a/test/IDE/complete_enum_elements.swift
+++ b/test/IDE/complete_enum_elements.swift
@@ -197,9 +197,9 @@
 // BAZ_T_ENUM_NO_DOT: Begin completions
 // BAZ_T_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal:    .Baz1[#BazEnum<T>#]{{; name=.+$}}
 // BAZ_T_ENUM_NO_DOT-NEXT: Decl[EnumElement]/CurrNominal:    .Baz2({#T#})[#(T) -> BazEnum<T>#]{{; name=.+$}}
-// BAZ_T_ENUM_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .bazInstanceFunc({#self: &BazEnum<T>#})[#() -> Void#]{{; name=.+$}}
+// BAZ_T_ENUM_NO_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: .bazInstanceFunc({#self: &BazEnum<_>#})[#() -> Void#]{{; name=.+$}}
 // BAZ_T_ENUM_NO_DOT-NEXT: Decl[StaticVar]/CurrNominal:      .staticVar[#Int#]{{; name=.+$}}
-// BAZ_T_ENUM_NO_DOT-NEXT: Decl[StaticVar]/CurrNominal:      .staticVarT[#T#]{{; name=.+$}}
+// BAZ_T_ENUM_NO_DOT-NEXT: Decl[StaticVar]/CurrNominal:      .staticVarT[#_#]{{; name=.+$}}
 // BAZ_T_ENUM_NO_DOT-NEXT: Decl[StaticMethod]/CurrNominal:   .bazStaticFunc()[#Void#]{{; name=.+$}}
 // BAZ_T_ENUM_NO_DOT-NEXT: Decl[InfixOperatorFunction]/OtherModule[Swift]: == {#Any.Type?#}[#Bool#]; name=== Any.Type?
 // BAZ_T_ENUM_NO_DOT-NEXT: Decl[InfixOperatorFunction]/OtherModule[Swift]: != {#Any.Type?#}[#Bool#]; name=!= Any.Type?
@@ -217,9 +217,9 @@
 // BAZ_T_ENUM_DOT: Begin completions, 6 items
 // BAZ_T_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal:    Baz1[#BazEnum<T>#]{{; name=.+$}}
 // BAZ_T_ENUM_DOT-NEXT: Decl[EnumElement]/CurrNominal:    Baz2({#T#})[#(T) -> BazEnum<T>#]{{; name=.+$}}
-// BAZ_T_ENUM_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: bazInstanceFunc({#self: &BazEnum<T>#})[#() -> Void#]{{; name=.+$}}
+// BAZ_T_ENUM_DOT-NEXT: Decl[InstanceMethod]/CurrNominal: bazInstanceFunc({#self: &BazEnum<_>#})[#() -> Void#]{{; name=.+$}}
 // BAZ_T_ENUM_DOT-NEXT: Decl[StaticVar]/CurrNominal:      staticVar[#Int#]{{; name=.+$}}
-// BAZ_T_ENUM_DOT-NEXT: Decl[StaticVar]/CurrNominal:      staticVarT[#T#]{{; name=.+$}}
+// BAZ_T_ENUM_DOT-NEXT: Decl[StaticVar]/CurrNominal:      staticVarT[#_#]{{; name=.+$}}
 // BAZ_T_ENUM_DOT-NEXT: Decl[StaticMethod]/CurrNominal:   bazStaticFunc()[#Void#]{{; name=.+$}}
 // BAZ_T_ENUM_DOT-NEXT: End completions
 
diff --git a/test/IDE/complete_exception.swift b/test/IDE/complete_exception.swift
index a3e18e1..61cbaa2 100644
--- a/test/IDE/complete_exception.swift
+++ b/test/IDE/complete_exception.swift
@@ -227,8 +227,8 @@
 }
 // Check that we can complete on the bound value; Not exhaustive..
 // INT_DOT: Begin completions
-// INT_DOT-DAG: Decl[InstanceVar]/CurrNominal:      bigEndian[#Int32#]; name=bigEndian
-// INT_DOT-DAG: Decl[InstanceVar]/CurrNominal:      littleEndian[#Int32#]; name=littleEndian
+// INT_DOT-DAG: Decl[InstanceVar]/Super:            bigEndian[#(Int32)#]; name=bigEndian
+// INT_DOT-DAG: Decl[InstanceVar]/Super:            littleEndian[#(Int32)#]; name=littleEndian
 // INT_DOT: End completions
 
 //===--- Inside catch body top-level
diff --git a/test/IDE/complete_from_reexport.swift b/test/IDE/complete_from_reexport.swift
index 90f2b74..d8c0da7 100644
--- a/test/IDE/complete_from_reexport.swift
+++ b/test/IDE/complete_from_reexport.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-swift-frontend -emit-module -module-name FooSwiftModule %S/Inputs/foo_swift_module.swift -o %t
 // RUN: %target-swift-frontend -emit-module -module-name FooSwiftModuleOverlay %S/Inputs/foo_swift_module_overlay.swift -I %t -o %t
diff --git a/test/IDE/complete_from_swift_module.swift b/test/IDE/complete_from_swift_module.swift
index 465bbc4..96eb5a7 100644
--- a/test/IDE/complete_from_swift_module.swift
+++ b/test/IDE/complete_from_swift_module.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/foo_swift_module.swift
 //
@@ -63,8 +62,8 @@
   foo_swift_module.BarGenericSwiftStruct1#^MODULE_QUALIFIED_3^#
 }
 // MODULE_QUALIFIED_3: Begin completions
-// MODULE_QUALIFIED_3-NEXT: Decl[Constructor]/CurrNominal:    ({#t: T#})[#BarGenericSwiftStruct1<T>#]
-// MODULE_QUALIFIED_3-NEXT: Decl[InstanceMethod]/CurrNominal: .bar1InstanceFunc({#self: BarGenericSwiftStruct1<T>#})[#() -> Void#]{{; name=.+$}}
+// MODULE_QUALIFIED_3-NEXT: Decl[Constructor]/CurrNominal: ({#t: _#})[#BarGenericSwiftStruct1<_>#]; name=(t: _)
+// MODULE_QUALIFIED_3-NEXT: Decl[InstanceMethod]/CurrNominal: .bar1InstanceFunc({#self: BarGenericSwiftStruct1<_>#})[#() -> Void#]; name=bar1InstanceFunc(BarGenericSwiftStruct1<_>)
 // MODULE_QUALIFIED_3: Decl[InfixOperatorFunction]/OtherModule[Swift]: != {#Any.Type?#}[#Bool#];
 // MODULE_QUALIFIED_3: End completions
 
@@ -72,8 +71,8 @@
   foo_swift_module.BarGenericSwiftStruct2#^MODULE_QUALIFIED_4^#
 }
 // MODULE_QUALIFIED_4: Begin completions
-// MODULE_QUALIFIED_4-NEXT: Decl[Constructor]/CurrNominal:    ({#t: BarProtocol#}, {#u: BarProtocol#})[#BarGenericSwiftStruct2<BarProtocol, BarProtocol>#]
-// MODULE_QUALIFIED_4-NEXT: Decl[InstanceMethod]/CurrNominal: .bar2InstanceFunc({#self: BarGenericSwiftStruct2<BarProtocol, BarProtocol>#})[#() -> Void#]
+// MODULE_QUALIFIED_4-NEXT: Decl[Constructor]/CurrNominal: ({#t: _#}, {#u: _#})[#BarGenericSwiftStruct2<_, _>#]; name=(t: _, u: _)
+// MODULE_QUALIFIED_4-NEXT: Decl[InstanceMethod]/CurrNominal: .bar2InstanceFunc({#self: BarGenericSwiftStruct2<_, _>#})[#() -> Void#]; name=bar2InstanceFunc(BarGenericSwiftStruct2<_, _>)
 // MODULE_QUALIFIED_4: Decl[InfixOperatorFunction]/OtherModule[Swift]: != {#Any.Type?#}[#Bool#];
 // MODULE_QUALIFIED_4-NEXT: End completions
 
diff --git a/test/IDE/complete_literal.swift b/test/IDE/complete_literal.swift
index 56637a1..f49fb3e 100644
--- a/test/IDE/complete_literal.swift
+++ b/test/IDE/complete_literal.swift
@@ -10,8 +10,8 @@
   1.#^LITERAL1^#
 }
 // LITERAL1:          Begin completions
-// LITERAL1-DAG:      Decl[InstanceVar]/CurrNominal:      bigEndian[#Int#]; name=bigEndian{{$}}
-// LITERAL1-DAG:      Decl[InstanceVar]/CurrNominal:      littleEndian[#Int#]; name=littleEndian{{$}}
+// LITERAL1-DAG:      Decl[InstanceVar]/Super:            bigEndian[#Int#]; name=bigEndian{{$}}
+// LITERAL1-DAG:      Decl[InstanceVar]/Super:            littleEndian[#Int#]; name=littleEndian{{$}}
 // LITERAL1-DAG:      Decl[InstanceVar]/CurrNominal:      byteSwapped[#Int#]; name=byteSwapped{{$}}
 // LITERAL1-DAG:      Decl[InstanceVar]/CurrNominal:      nonzeroBitCount[#Int#]; name=nonzeroBitCount{{$}}
 
diff --git a/test/IDE/complete_operators.swift b/test/IDE/complete_operators.swift
index d16da90..705fa76 100644
--- a/test/IDE/complete_operators.swift
+++ b/test/IDE/complete_operators.swift
@@ -34,18 +34,18 @@
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_8 | %FileCheck %s -check-prefix=S3_INFIX_OPTIONAL
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_9 | %FileCheck %s -check-prefix=FOOABLE_INFIX
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_10 | %FileCheck %s -check-prefix=FOOABLE_INFIX
-// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_11 | %FileCheck %s -check-prefix=NO_OPERATORS
-// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_12 | %FileCheck %s -check-prefix=NO_OPERATORS
+// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_11 | %FileCheck %s -check-prefix=INFIX_11
+// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_12 | %FileCheck %s -check-prefix=INFIX_12
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_13 | %FileCheck %s -check-prefix=NO_OPERATORS
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_14 | %FileCheck %s -check-prefix=NO_OPERATORS
-// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_15 | %FileCheck %s -check-prefix=NO_OPERATORS
-// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_16 | %FileCheck %s -check-prefix=NO_OPERATORS
+// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_15 | %FileCheck %s -check-prefix=INFIX_15
+// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_16 | %FileCheck %s -check-prefix=INFIX_16
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_17 | %FileCheck %s -check-prefix=NO_OPERATORS
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_18 | %FileCheck %s -check-prefix=NO_OPERATORS
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_19 | %FileCheck %s -check-prefix=EMPTYCLASS_INFIX
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_20 | %FileCheck %s -check-prefix=NO_OPERATORS
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_21 | %FileCheck %s -check-prefix=NO_OPERATORS
-// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_22 | %FileCheck %s -check-prefix=NO_OPERATORS
+// RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=INFIX_22 | %FileCheck %s -check-prefix=INFIX_22
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=S2_INFIX_SPACE | %FileCheck %s -check-prefix=S2_INFIX_SPACE
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=EXT_INFIX_1 | %FileCheck %s -check-prefix=S2_INFIX
 // RUN: %target-swift-ide-test -code-completion -source-filename=%s -code-completion-token=EXT_INFIX_2 > %t.ext_infix_2
@@ -243,22 +243,41 @@
 func testInfix11() {
   S2#^INFIX_11^#
 }
-// NO_OPERATORS-NOT: Decl[InfixOperatorFunction]
+// INFIX_11: Begin completions, 1 items
+// INFIX_11-DAG: Decl[Constructor]/CurrNominal:      ()[#S2#]; name=()
+// INFIX_11: End completions
+
 func testInfix12() {
   P#^INFIX_12^#
 }
+// INFIX_12: Begin completions, 2 items
+// INFIX_12-NEXT: Decl[AssociatedType]/CurrNominal:   .T; name=T
+// INFIX_12-NEXT: Decl[InstanceMethod]/CurrNominal:   .foo({#self: P#})[#() -> P.T#]; name=foo(P)
+// INFIX_12: End completions
+
 func testInfix13() {
   P.foo#^INFIX_13^#
 }
+// NO_OPERATORS-NOT: Decl[InfixOperatorFunction]
+
 func testInfix14() {
   P.T#^INFIX_14^#
 }
 func testInfix15<T: P where T.T == S2>() {
   T#^INFIX_15^#
 }
+// INFIX_15: Begin completions, 2 items
+// INFIX_15-NEXT: Decl[AssociatedType]/Super:         .T; name=T
+// INFIX_15-NEXT: Decl[InstanceMethod]/Super:         .foo({#self: P#})[#() -> S2#]; name=foo(P)
+// INFIX_15: End completions
+
 func testInfix16<T: P where T.T == S2>() {
   T.foo#^INFIX_16^#
 }
+// INFIX_16: Begin completions, 1 items
+// INFIX_16-NEXT: Pattern/ExprSpecific:               ({#(self): T#})[#() -> S2#]; name=(self: T)
+// INFIX_16: End completions
+
 func testInfix17(x: Void) {
   x#^INFIX_17^#
 }
@@ -269,6 +288,7 @@
 func testInfix19(x: EmptyClass) {
   x#^INFIX_19^#
 }
+
 // EMPTYCLASS_INFIX: Begin completions
 // EMPTYCLASS_INFIX-DAG: Decl[InfixOperatorFunction]/OtherModule[Swift]: === {#AnyObject?#}[#Bool#]
 // EMPTYCLASS_INFIX-DAG: Decl[InfixOperatorFunction]/OtherModule[Swift]: !== {#AnyObject?#}[#Bool#]
@@ -287,6 +307,9 @@
 func testInfix22() {
   E.B#^INFIX_22^#
 }
+// INFIX_22: Begin completions, 1 items
+// INFIX_22-NEXT: Pattern/ExprSpecific:               ({#S2#})[#E#]; name=(S2)
+// INFIX_22: End completions
 
 func testSpace(x: S2) {
   x #^S2_INFIX_SPACE^#
diff --git a/test/IDE/complete_testable.swift b/test/IDE/complete_testable.swift
index 2b8f657..a7b79ac 100644
--- a/test/IDE/complete_testable.swift
+++ b/test/IDE/complete_testable.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -enable-testing -o %t %S/Inputs/complete_testable_helper.swift
 
 // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TOP_LEVEL -I %t > %t.txt
diff --git a/test/IDE/complete_value_expr.swift b/test/IDE/complete_value_expr.swift
index ceac0f6..18232bb 100644
--- a/test/IDE/complete_value_expr.swift
+++ b/test/IDE/complete_value_expr.swift
@@ -1266,8 +1266,8 @@
 }
 // TC_UNSOLVED_VARIABLES_1: Begin completions
 // TC_UNSOLVED_VARIABLES_1-NEXT: Decl[InstanceVar]/CurrNominal: count[#Int#]{{; name=.+$}}
-// TC_UNSOLVED_VARIABLES_1-NEXT: Decl[InstanceMethod]/CurrNominal: addString({#(s): String#})[#BuilderStyle<T>#]{{; name=.+$}}
-// TC_UNSOLVED_VARIABLES_1-NEXT: Decl[InstanceMethod]/CurrNominal: add({#(t): T#})[#BuilderStyle<T>#]{{; name=.+$}}
+// TC_UNSOLVED_VARIABLES_1-NEXT: Decl[InstanceMethod]/CurrNominal: addString({#(s): String#})[#BuilderStyle<_>#]{{; name=.+$}}
+// TC_UNSOLVED_VARIABLES_1-NEXT: Decl[InstanceMethod]/CurrNominal: add({#(t): _#})[#BuilderStyle<_>#]{{; name=.+$}}
 // TC_UNSOLVED_VARIABLES_1-NEXT: Decl[InstanceMethod]/CurrNominal: get()[#Int#]{{; name=.+$}}
 // TC_UNSOLVED_VARIABLES_1-NEXT: End completions
 
@@ -1276,8 +1276,8 @@
 }
 // TC_UNSOLVED_VARIABLES_2: Begin completions
 // TC_UNSOLVED_VARIABLES_2-NEXT: Decl[InstanceVar]/CurrNominal:    count[#Int#]{{; name=.+$}}
-// TC_UNSOLVED_VARIABLES_2-NEXT: Decl[InstanceMethod]/CurrNominal: addString({#(s): String#})[#BuilderStyle<T>#]{{; name=.+$}}
-// TC_UNSOLVED_VARIABLES_2-NEXT: Decl[InstanceMethod]/CurrNominal: add({#(t): T#})[#BuilderStyle<T>#]{{; name=.+$}}
+// TC_UNSOLVED_VARIABLES_2-NEXT: Decl[InstanceMethod]/CurrNominal: addString({#(s): String#})[#BuilderStyle<_>#]{{; name=.+$}}
+// TC_UNSOLVED_VARIABLES_2-NEXT: Decl[InstanceMethod]/CurrNominal: add({#(t): _#})[#BuilderStyle<_>#]{{; name=.+$}}
 // TC_UNSOLVED_VARIABLES_2-NEXT: Decl[InstanceMethod]/CurrNominal: get()[#Int#]{{; name=.+$}}
 // TC_UNSOLVED_VARIABLES_2-NEXT: End completions
 
diff --git a/test/IDE/complete_vararg.swift b/test/IDE/complete_vararg.swift
index c46ee6f..7aabfa6 100644
--- a/test/IDE/complete_vararg.swift
+++ b/test/IDE/complete_vararg.swift
@@ -89,7 +89,7 @@
   genericFreeFunc1(#^GENERIC_FREE_FUNC_1^#
 }
 // GENERIC_FREE_FUNC_1: Begin completions, 1 items
-// GENERIC_FREE_FUNC_1: Pattern/ExprSpecific:               ['(']{#t: τ_0_0...#})[#Void#]{{; name=.+$}}
+// GENERIC_FREE_FUNC_1: Pattern/ExprSpecific:               ['(']{#t: _...#})[#Void#]{{; name=.+$}}
 // GENERIC_FREE_FUNC_1: End completions
 
 
diff --git a/test/IDE/complete_with_header_import.swift b/test/IDE/complete_with_header_import.swift
index b5afc83..29e7ccc 100644
--- a/test/IDE/complete_with_header_import.swift
+++ b/test/IDE/complete_with_header_import.swift
@@ -1,6 +1,6 @@
 // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TOP -import-objc-header %S/Inputs/header.h | %FileCheck %s -check-prefix=CHECK-TOP
 // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=TYPE -import-objc-header %S/Inputs/header.h | %FileCheck %s -check-prefix=CHECK-TYPE
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-ide-test -code-completion -pch-output-dir %t -source-filename %s -code-completion-token=TOP -import-objc-header %S/Inputs/header.h | %FileCheck %s -check-prefix=CHECK-TOP
 // RUN: %target-swift-ide-test -code-completion -pch-output-dir %t -source-filename %s -code-completion-token=TYPE -import-objc-header %S/Inputs/header.h | %FileCheck %s -check-prefix=CHECK-TYPE
 // RUN: stat %t/*.pch
diff --git a/test/IDE/local_types.swift b/test/IDE/local_types.swift
index a7e589b..3953d64 100644
--- a/test/IDE/local_types.swift
+++ b/test/IDE/local_types.swift
@@ -1,8 +1,10 @@
 // Tests lookup and mangling of local types
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swiftc_driver -swift-version 3 -v -emit-module -module-name LocalTypes -o %t/LocalTypes.swiftmodule %s
-// RUN: %target-swift-ide-test -swift-version 3 -print-local-types -I %t -module-to-print LocalTypes -source-filename %s | %FileCheck %s
+// RUN: %target-swift-ide-test -swift-version 3 -print-local-types -I %t -module-to-print LocalTypes -source-filename %s > %t.dump
+// RUN: %FileCheck %s < %t.dump
+// RUN: %FileCheck -check-prefix=NEGATIVE %s < %t.dump
 
 public func singleFunc() {
   // CHECK-DAG: 10LocalTypes10singleFuncyyF06SingleD6StructL_V
@@ -20,6 +22,27 @@
   enum SingleFuncEnum {
     case SFEI(Int)
   }
+
+  // CHECK-DAG: 10LocalTypes10singleFuncyyF13GenericStructL_V
+  struct GenericStruct<T> {
+    let sfgsi: Int
+  }
+
+  // CHECK-DAG: 10LocalTypes10singleFuncyyF12GenericClassL_C
+  class GenericClass<T> {
+    let sfgci: Int = 0
+  }
+
+  // CHECK-DAG: 10LocalTypes10singleFuncyyF11GenericEnumL_O
+  enum GenericEnum<T> {
+    case sfgei(Int)
+  }
+
+  // We'll need to handle this if we start saving alias types.
+  // NEGATIVE-NOT: AliasAAA
+  typealias SingleFuncAliasAAA = Int
+  // NEGATIVE-NOT: AliasGGG
+  typealias GenericAliasGGG<T> = (T, T)
 }
 
 public func singleFuncWithDuplicates(_ fake: Bool) {
diff --git a/test/IDE/merge_local_types.swift b/test/IDE/merge_local_types.swift
index 33bd063..dd94be8 100644
--- a/test/IDE/merge_local_types.swift
+++ b/test/IDE/merge_local_types.swift
@@ -1,6 +1,6 @@
 // Tests merging of modules each with their own local types
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // Create separate modules and merge them together
 // RUN: %target-swiftc_driver -swift-version 3 -v -emit-module -module-name LocalTypesMerged -o %t/LocalTypesMerged.swiftmodule %s %S/local_types.swift
diff --git a/test/IDE/module_api_smoketest.swift b/test/IDE/module_api_smoketest.swift
index 7282f32..d6edecb 100644
--- a/test/IDE/module_api_smoketest.swift
+++ b/test/IDE/module_api_smoketest.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %swift-ide-test -generate-module-api-description -- -target %target-triple -module-cache-path %t %s | %FileCheck %s
 
 public struct Struct1 {}
diff --git a/test/IDE/newtype.swift b/test/IDE/newtype.swift
index c9316b3..e3f6402 100644
--- a/test/IDE/newtype.swift
+++ b/test/IDE/newtype.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-clang-importer-objc-overlays
 // RUN: %target-swift-ide-test(mock-sdk: %clang-importer-sdk-nosource) -I %t -I %S/Inputs/custom-modules -print-module -source-filename %s -module-to-print=Newtype -skip-unavailable > %t.printed.A.txt
 // RUN: %FileCheck %s -check-prefix=PRINT -strict-whitespace < %t.printed.A.txt
diff --git a/test/IDE/newtype_objc.swift b/test/IDE/newtype_objc.swift
index 2a376e5..4446d2d 100644
--- a/test/IDE/newtype_objc.swift
+++ b/test/IDE/newtype_objc.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-clang-importer-objc-overlays
 
 // RUN: %target-swift-ide-test(mock-sdk: %clang-importer-sdk-nosource) -I %t -I %S/Inputs/custom-modules -print-module -source-filename %s -module-to-print=NewtypeObjC > %t.printed.NewtypeObjC.txt
diff --git a/test/IDE/print_ast_non_typechecked.swift b/test/IDE/print_ast_non_typechecked.swift
index 90b2d46..dfc4c56 100644
--- a/test/IDE/print_ast_non_typechecked.swift
+++ b/test/IDE/print_ast_non_typechecked.swift
@@ -4,3 +4,24 @@
 
 // RUN: %target-swift-ide-test -print-ast-not-typechecked -source-filename %s | %FileCheck %s -check-prefix=CHECK1
 // CHECK1: func foo(s: Int)
+
+#if BAR
+func bar() {}
+#elseif BAZ
+func baz() {}
+#else
+func qux() {}
+#endif
+
+// CHECK1: {{^}}#if /* condition */
+// CHECK1: {{^}}  func bar() {
+// CHECK1: {{^}}  }
+// CHECK1: {{^}}#elseif /* condition */
+// CHECK1: {{^}}  func baz() {
+// CHECK1: {{^}}  }
+// CHECK1: {{^}}#else
+// CHECK1: {{^}}  func qux() {
+// CHECK1: {{^}}  }
+// CHECK1: {{^}}#endif
+// CHECK1: {{^}}func qux() {
+// CHECK1: {{^}}}
diff --git a/test/IDE/print_ast_overlay.swift b/test/IDE/print_ast_overlay.swift
index e12932d..573121d 100644
--- a/test/IDE/print_ast_overlay.swift
+++ b/test/IDE/print_ast_overlay.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -emit-module -module-name Foo -o %t -F %S/Inputs/mock-sdk %s
 //
 // RUN: %target-swift-ide-test -print-module -source-filename %s -I %t -F %S/Inputs/mock-sdk -module-to-print=Foo -accessibility-filter-public > %t.printed.txt
diff --git a/test/IDE/print_ast_tc_decls.swift b/test/IDE/print_ast_tc_decls.swift
index 34d62ee..5ecc2cb 100644
--- a/test/IDE/print_ast_tc_decls.swift
+++ b/test/IDE/print_ast_tc_decls.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // Build swift modules this test depends on.
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/foo_swift_module.swift
diff --git a/test/IDE/print_clang_ObjectiveC.swift b/test/IDE/print_clang_ObjectiveC.swift
index 3ec1b73..a903207 100644
--- a/test/IDE/print_clang_ObjectiveC.swift
+++ b/test/IDE/print_clang_ObjectiveC.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-ide-test -print-module -source-filename %s -module-to-print=ObjectiveC.NSObject -function-definitions=false > %t/ObjectiveC.NSObject.printed.txt
 // RUN: %FileCheck -input-file %t/ObjectiveC.NSObject.printed.txt %s
diff --git a/test/IDE/print_clang_bool_bridging.swift b/test/IDE/print_clang_bool_bridging.swift
index 7677486..923eec7 100644
--- a/test/IDE/print_clang_bool_bridging.swift
+++ b/test/IDE/print_clang_bool_bridging.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-ide-test -print-module -source-filename %s -module-to-print=BoolBridgingTests -function-definitions=false -print-regular-comments -skip-unavailable -F %S/Inputs/mock-sdk > %t.txt
 // RUN: diff -u <(tail +9 %s) %t.txt
diff --git a/test/IDE/print_clang_decls.swift b/test/IDE/print_clang_decls.swift
index 5beb1b1..98f8418 100644
--- a/test/IDE/print_clang_decls.swift
+++ b/test/IDE/print_clang_decls.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // XFAIL: linux
 
diff --git a/test/IDE/print_clang_decls_AppKit.swift b/test/IDE/print_clang_decls_AppKit.swift
index 0cbb1a4..a754355 100644
--- a/test/IDE/print_clang_decls_AppKit.swift
+++ b/test/IDE/print_clang_decls_AppKit.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // This file deliberately does not use %clang-importer-sdk for most RUN lines.
 // Instead, it generates custom overlay modules itself, and uses -I %t when it
diff --git a/test/IDE/print_clang_foundation.swift b/test/IDE/print_clang_foundation.swift
index d95749a..f45c470 100644
--- a/test/IDE/print_clang_foundation.swift
+++ b/test/IDE/print_clang_foundation.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-ide-test -print-module -source-filename %s -module-to-print=Foundation.NSArray -function-definitions=false > %t/Foundation.NSArray.printed.txt
 // RUN: %FileCheck -input-file %t/Foundation.NSArray.printed.txt -check-prefix=CHECK_NSARRAY %s
diff --git a/test/IDE/print_clang_framework.swift b/test/IDE/print_clang_framework.swift
index 8dc47a9..36f3e17 100644
--- a/test/IDE/print_clang_framework.swift
+++ b/test/IDE/print_clang_framework.swift
@@ -1,8 +1,7 @@
 // TODO: Properties with unowned or weak ownership should not be bridged.
 // XFAIL: *
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-ide-test(mock-sdk: -F %S/Inputs/mock-sdk) -print-module -source-filename %s -module-to-print=Foo -function-definitions=false -print-regular-comments > %t/Foo.printed.txt
 // RUN: diff -u %S/Inputs/mock-sdk/Foo.printed.txt %t/Foo.printed.txt
diff --git a/test/IDE/print_clang_framework_with_overlay.swift b/test/IDE/print_clang_framework_with_overlay.swift
index 9cab000..a5be718 100644
--- a/test/IDE/print_clang_framework_with_overlay.swift
+++ b/test/IDE/print_clang_framework_with_overlay.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-frontend(mock-sdk: -F %S/Inputs/mock-sdk) -I %t -emit-module -o %t/FooOverlay.swiftmodule %S/Inputs/FooOverlay.swift
 // RUN: %target-swift-ide-test(mock-sdk: -F %S/Inputs/mock-sdk) -I %t -print-module -source-filename %s -module-to-print=FooOverlay -function-definitions=false | %FileCheck %s
diff --git a/test/IDE/print_clang_swift_name.swift b/test/IDE/print_clang_swift_name.swift
index 8a79ab0..3add33e 100644
--- a/test/IDE/print_clang_swift_name.swift
+++ b/test/IDE/print_clang_swift_name.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-ide-test(mock-sdk: %clang-importer-sdk) -print-module -source-filename %s -module-to-print=SwiftNameTests -function-definitions=false -print-regular-comments -F %S/Inputs/mock-sdk > %t.txt
 // RUN: diff -u <(tail +9 %s) %t.txt
diff --git a/test/IDE/print_module_comments.swift b/test/IDE/print_module_comments.swift
index f3ebd96..aaefd60 100644
--- a/test/IDE/print_module_comments.swift
+++ b/test/IDE/print_module_comments.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // Build swift modules this test depends on.
 // RUN: %target-swift-frontend -emit-module %S/Inputs/foo_swift_module.swift -emit-module-path %t/foo_swift_module.swiftmodule -emit-module-doc-path %t/foo_swift_module.swiftdoc
diff --git a/test/IDE/print_module_without_deinit.swift b/test/IDE/print_module_without_deinit.swift
index 84e2375..d964b71 100644
--- a/test/IDE/print_module_without_deinit.swift
+++ b/test/IDE/print_module_without_deinit.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %s
 // RUN: %target-swift-ide-test(mock-sdk: %clang-importer-sdk) -print-module -skip-deinit=true -module-to-print=print_module_without_deinit -I %t -source-filename=%s | %FileCheck -check-prefix=SKIP1 %s
 // RUN: %target-swift-ide-test(mock-sdk: %clang-importer-sdk) -print-module -skip-deinit=false -module-to-print=print_module_without_deinit -I %t -source-filename=%s | %FileCheck -check-prefix=NOSKIP1 %s
diff --git a/test/IDE/print_omit_needless_words.swift b/test/IDE/print_omit_needless_words.swift
index 0bb9e08..9cf56bb 100644
--- a/test/IDE/print_omit_needless_words.swift
+++ b/test/IDE/print_omit_needless_words.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // REQUIRES: objc_interop
 // FIXME: this is failing on simulators
diff --git a/test/IDE/print_omit_needless_words_appkit.swift b/test/IDE/print_omit_needless_words_appkit.swift
index ef6ae2c..6e7878b 100644
--- a/test/IDE/print_omit_needless_words_appkit.swift
+++ b/test/IDE/print_omit_needless_words_appkit.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // REQUIRES: objc_interop
 // REQUIRES: OS=macosx
diff --git a/test/IDE/print_source_file_interface_1.swift.result b/test/IDE/print_source_file_interface_1.swift.result
index f1f4873..fbf08d5 100644
--- a/test/IDE/print_source_file_interface_1.swift.result
+++ b/test/IDE/print_source_file_interface_1.swift.result
@@ -3,8 +3,6 @@
 
 // More blah blah.
 
-
-
 import Swift
 
 internal class FooDisabled {
diff --git a/test/IDE/print_swift_module.swift b/test/IDE/print_swift_module.swift
index 2ddb1cc..bc7f0f2 100644
--- a/test/IDE/print_swift_module.swift
+++ b/test/IDE/print_swift_module.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module-path %t/print_swift_module.swiftmodule -emit-module-doc -emit-module-doc-path %t/print_swift_module.swiftdoc %s
 // RUN: %target-swift-ide-test -print-module -print-interface -no-empty-line-between-members -module-to-print=print_swift_module -I %t -source-filename=%s > %t.syn.txt
 // RUN: %FileCheck %s -check-prefix=CHECK1 < %t.syn.txt
diff --git a/test/IDE/print_synthesized_extensions.swift b/test/IDE/print_synthesized_extensions.swift
index 4994281..a4556c2 100644
--- a/test/IDE/print_synthesized_extensions.swift
+++ b/test/IDE/print_synthesized_extensions.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module-path %t/print_synthesized_extensions.swiftmodule -emit-module-doc -emit-module-doc-path %t/print_synthesized_extensions.swiftdoc %s
 // RUN: %target-swift-ide-test -print-module -annotate-print -synthesize-extension -print-interface -no-empty-line-between-members -module-to-print=print_synthesized_extensions -I %t -source-filename=%s > %t.syn.txt
 // RUN: %FileCheck %s -check-prefix=CHECK1 < %t.syn.txt
diff --git a/test/IDE/range_info_basics.swift b/test/IDE/range_info_basics.swift
index e8a19c8..d11fe25 100644
--- a/test/IDE/range_info_basics.swift
+++ b/test/IDE/range_info_basics.swift
@@ -135,6 +135,15 @@
   return components.map { "\($0)=\($1)" }.joined(separator: "&")
 }
 
+func testExpressionVariables() -> Int {
+  func bar() -> Int {
+    let x = 5
+    let y = 6
+    return x + y
+  }
+  return bar()
+}
+
 // RUN: %target-swift-ide-test -range -pos=8:1 -end-pos 8:32 -source-filename %s | %FileCheck %s -check-prefix=CHECK1
 // RUN: %target-swift-ide-test -range -pos=9:1 -end-pos 9:26 -source-filename %s | %FileCheck %s -check-prefix=CHECK2
 // RUN: %target-swift-ide-test -range -pos=10:1 -end-pos 10:27 -source-filename %s | %FileCheck %s -check-prefix=CHECK3
@@ -171,6 +180,7 @@
 // RUN: %target-swift-ide-test -range -pos=128:13 -end-pos=128:15 -source-filename %s | %FileCheck %s -check-prefix=CHECK-INT-INOUT
 // RUN: %target-swift-ide-test -range -pos=118:1 -end-pos=120:22 -source-filename %s | %FileCheck %s -check-prefix=CHECK-INT
 // RUN: %target-swift-ide-test -range -pos=133:1 -end-pos=135:65 -source-filename %s | %FileCheck %s -check-prefix=CHECK-NO-PATTERN
+// RUN: %target-swift-ide-test -range -pos=142:12 -end-pos=142:17 -source-filename %s | %FileCheck %s -check-prefix=CHECK-X-Y
 
 // CHECK-NO-PATTERN: <Kind>MultiStatement</Kind>
 // CHECK-NO-PATTERN-NEXT: <Content>for key in parameters.keys.sorted(by: <) {
@@ -445,6 +455,7 @@
 // CHECK20-NEXT: <Type>Void</Type>
 // CHECK20-NEXT: <Context>swift_ide_test.(file).foo7(a:)</Context>
 // CHECK20-NEXT: <Entry>Multi</Entry>
+// CHECK20-NEXT: <Referenced>a</Referenced><Type>Int</Type>
 // CHECK20-NEXT: <ASTNodes>2</ASTNodes>
 // CHECK20-NEXT: <end>
 
@@ -463,3 +474,6 @@
 // CHECK27-NEXT: <Referenced>foo9</Referenced><Type>(Int, Int) -> Int</Type>
 // CHECK27-NEXT: <ASTNodes>2</ASTNodes>
 // CHECK27-NEXT: <end>
+
+// CHECK-X-Y: <Referenced>x</Referenced><Type>Int</Type>
+// CHECK-X-Y: <Referenced>y</Referenced><Type>Int</Type>
diff --git a/test/IDE/sdk_sugar.swift b/test/IDE/sdk_sugar.swift
index 3e746b4..b22add5 100644
--- a/test/IDE/sdk_sugar.swift
+++ b/test/IDE/sdk_sugar.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-ide-test -print-module -module-print-submodules -module-to-print=Foundation -function-definitions=false -source-filename %s > %t/out 2>&1
 // RUN: %FileCheck -input-file=%t/out %s
 
diff --git a/test/IRGen/Inputs/conformance_multifile_1.swift b/test/IRGen/Inputs/conformance_multifile_1.swift
new file mode 100644
index 0000000..70cb828
--- /dev/null
+++ b/test/IRGen/Inputs/conformance_multifile_1.swift
@@ -0,0 +1,10 @@
+protocol Super {}
+protocol P : Super { }
+
+enum E {}
+
+extension E : P { }
+
+enum E2 {
+  case Filter(P)
+}
diff --git a/test/IRGen/abi_v7k.swift b/test/IRGen/abi_v7k.swift
index 6a105a8..2c8dc98 100644
--- a/test/IRGen/abi_v7k.swift
+++ b/test/IRGen/abi_v7k.swift
@@ -68,7 +68,7 @@
 // CHECK-LABEL: define hidden swiftcc i32 @_T08test_v7k0A6Single{{.*}}()
 // CHECK: ret i32 1
 // V7K-LABEL: __T08test_v7k0A6Single
-// V7K: movw    r0, #1
+// V7K: movs    r0, #1
 enum SingleCase { case X }
 func testSingle(x: SingleCase) -> Int32{
   switch x {
@@ -94,9 +94,9 @@
 // CHECK: [[ID:%[0-9]+]] = phi i32 [ 2, {{.*}} ], [ 1, {{.*}} ]
 // CHECK: ret i32 [[ID]]
 // V7K-LABEL: __T08test_v7k0A6Clike2
-// V7K: tst r0, #1
-// V7K: movw r0, #1
-// V7K: movw r0, #2
+// V7K: tst.w r0, #1
+// V7K: movs r0, #1
+// V7K: movs r0, #2
 enum CLike2 {
   case A
   case B
@@ -116,7 +116,7 @@
 // V7K-LABEL: __T08test_v7k0A6Clike8
 // V7K: sxtb r1, r1
 // V7K: cmp r1, #0
-// V7K: movw r0, #1
+// V7K: movs r0, #1
 // V7K: mvn r0, #0
 enum CLike8 {
   case A
@@ -149,7 +149,7 @@
 // CHECK: bitcast i64 [[RESULT]] to double
 // CHECK: phi double [ 0.000000e+00, {{.*}} ]
 // V7K-LABEL: __T08test_v7k0A7SingleP
-// V7K: tst     r2, #1
+// V7K: tst.w     r2, #1
 // V7K: vmov.f64 d0
 enum SinglePayload {
   case Paragraph
@@ -202,12 +202,12 @@
 // CHECK: [[ID:%[0-9]+]] = bitcast i32 %0 to float
 // CHECK: ret float
 // V7K-LABEL: __T08test_v7k0A3Opt
-// V7K:         tst     r1, #1
-// V7K:         str     r0, [r7, [[SLOT:#-[0-9]+]]
-// V7K:         ldr     r0, [r7, [[SLOT]]
+// V7K:         tst.w     r1, #1
+// V7K:         str     r0, [sp, [[SLOT:#[0-9]+]]
+// V7K:         ldr     r0, [sp, [[SLOT]]
 // V7K:         vmov    s0, r0
-// V7K:         vstr    s0, [r7, [[SLOT2:#-[0-9]+]]
-// V7K:         vldr    s0, [r7, [[SLOT2]]
+// V7K:         vstr    s0, [sp, [[SLOT2:#[0-9]+]]
+// V7K:         vldr    s0, [sp, [[SLOT2]]
 // V7K:         pop     {{{.*}}, pc}
 func testOpt(x: Float?) -> Float {
   return x!
@@ -291,9 +291,9 @@
 // V7K: cmp r1, r2
 // V7K: str r0, [sp, [[IDX:#[0-9]+]]]
 // V7K: ldr [[R0_RELOAD:r[0-9]+]], [sp, [[IDX]]]
-// V7K: str {{.*}}, [{{.*}}[[R0_RELOAD]]]
-// V7K: str {{.*}}, [{{.*}}[[R0_RELOAD]], #4]
-// V7K: str {{.*}}, [{{.*}}[[R0_RELOAD]], #8]
+// V7K: str.w {{.*}}, [{{.*}}[[R0_RELOAD]]]
+// V7K: str.w {{.*}}, [{{.*}}[[R0_RELOAD]], #4]
+// V7K: str.w {{.*}}, [{{.*}}[[R0_RELOAD]], #8]
 // V7K: str {{.*}}, [{{.*}}[[R0_RELOAD]], #12]
 // V7K: str {{.*}}, [{{.*}}[[R0_RELOAD]], #16]
 // V7K: str {{.*}}, [{{.*}}[[R0_RELOAD]], #20]
@@ -340,7 +340,7 @@
 // V7K-LABEL: __T08test_v7k0A4Ret5
 // V7K:   ldrb    r1, [r0]
 // V7K:   vldr    d16, [r0, #8]
-// V7K:   add     r0, r0, #296
+// V7K:   add.w     r0, r0, #296
 // V7K:   vldr    d18, [r0]
 // V7K:   sxtb    r0, r1
 // V7K:   vmov    s0, r0
diff --git a/test/IRGen/alloc.sil b/test/IRGen/alloc.sil
index f426da9..b01f078 100644
--- a/test/IRGen/alloc.sil
+++ b/test/IRGen/alloc.sil
@@ -19,17 +19,6 @@
   var unalign: Builtin.Int8
 }
 
-// CHECK: @_swift_slowAlloc = external global i8* ([[SIZE_T:i(32|64)]],
-
-// CHECK:    define linkonce_odr hidden void @_T04main4HugeVwde(
-// CHECK:      [[T0:%.*]] = bitcast [[BUFFER:.[0-9]+ x i8.]]* {{%.*}} to i8**
-// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]]
-// CHECK-NEXT: call void @swift_rt_swift_slowDealloc(i8* [[T1]], [[SIZE_T]] 4097, [[SIZE_T]] 7)
-// CHECK-NEXT: ret void
-
-
-// CHECK:    define linkonce_odr hidden [[OPAQUE:%swift.opaque]]* @_T04main4HugeVwal({{.*}}* [[BUFFER:%.*]], %swift.type
-// CHECK:  [[BOXPAIR:%.*]] = call { %swift.refcounted*, %swift.opaque* } @swift_allocBox({{.*}} @_T04main4HugeVMf
-// CHECK:  [[REF:%.*]] = extractvalue { %swift.refcounted*, %swift.opaque* } %0, 0
-// CHECK:  [[BUFFER_ADDR:%.*]] = bitcast {{.*}}* [[BUFFER]] to %swift.refcounted**
-// CHECK:  store %swift.refcounted* [[REF]], %swift.refcounted** [[BUFFER_ADDR]]
+// CHECK: define linkonce_odr hidden i8* @__swift_memcpy4097_8(i8*, i8*, %swift.type*)
+// CHECK:   call void @llvm.memcpy.p0i8.p0i8.{{(i64|i32)}}(i8* %0, i8* %1, {{(i64|i32)}} 4097, i32 8, i1 false)
+// CHECK:   ret i8* %0
diff --git a/test/IRGen/arm_to_thumb_darwin.sil b/test/IRGen/arm_to_thumb_darwin.sil
new file mode 100644
index 0000000..b8b3c81
--- /dev/null
+++ b/test/IRGen/arm_to_thumb_darwin.sil
@@ -0,0 +1,28 @@
+// RUN: %swift -target armv7-apple-ios7 %s -gnone -emit-ir -o - | %FileCheck %s -check-prefix=IOS
+// RUN: %swift -target armv7k-apple-watchos2 %s -gnone -emit-ir -o - | %FileCheck %s -check-prefix=WATCHOS
+
+// REQUIRES: CODEGENERATOR=ARM
+
+sil_stage canonical
+import Builtin
+
+// IOS: target triple = "thumbv7-apple-ios7
+
+// IOS: define{{( protected)?}} swiftcc i32 @word_literal() {{.*}} {
+// IOS: entry:
+// IOS:   ret i32 12345
+// IOS: }
+
+
+// WATCHOS: target triple = "thumbv7k-apple-watchos2
+
+// WATCHOS: define{{( protected)?}} swiftcc i32 @word_literal() {{.*}} {
+// WATCHOS: entry:
+// WATCHOS:   ret i32 12345
+// WATCHOS: }
+
+sil @word_literal : $() -> Builtin.Word {
+entry:
+  %w = integer_literal $Builtin.Word, 12345
+  return %w : $Builtin.Word
+}
diff --git a/test/IRGen/autolink-coff-force-link.swift b/test/IRGen/autolink-coff-force-link.swift
index a885512..18fefca 100644
--- a/test/IRGen/autolink-coff-force-link.swift
+++ b/test/IRGen/autolink-coff-force-link.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %swift -target i686--windows-msvc -parse-as-library -parse-stdlib -module-name autolink -module-link-name autolink -autolink-force-load -emit-ir -o - %s | %FileCheck %s
 // RUN: %swift -target i686--windows-itanium -parse-as-library -parse-stdlib -module-name autolink -module-link-name autolink -autolink-force-load -S -o - %s | %FileCheck %s -check-prefix CHECK-ASM-GNU
diff --git a/test/IRGen/autolink-coff.swift b/test/IRGen/autolink-coff.swift
index a1c1bac..4cd77db 100644
--- a/test/IRGen/autolink-coff.swift
+++ b/test/IRGen/autolink-coff.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %swift -target thumbv7--windows-itanium -parse-as-library -parse-stdlib -emit-module-path %t/module.swiftmodule -module-name module -module-link-name module %s
 // RUN: %swift -target thumbv7--windows-itanium -parse-as-library -parse-stdlib -module-name autolink -I %t -D MAIN_MODULE -emit-ir -o - %s | %FileCheck %s -check-prefix CHECK-MSVC-IR
diff --git a/test/IRGen/autolink-psei.swift b/test/IRGen/autolink-psei.swift
index 392b15c..9298820 100644
--- a/test/IRGen/autolink-psei.swift
+++ b/test/IRGen/autolink-psei.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %swift -target x86_64-scei-ps4 -parse-as-library -parse-stdlib -emit-module-path %t/module.swiftmodule -module-name module -module-link-name module %s
 // RUN: %swift -target x86_64-scei-ps4 -parse-as-library -parse-stdlib -module-name autolink -I %t -D MAIN_MODULE -emit-ir -o - %s | %FileCheck %s -check-prefix CHECK-IR
 
diff --git a/test/IRGen/autolink_elf.swift b/test/IRGen/autolink_elf.swift
index a1b03ea..5b11ab3 100644
--- a/test/IRGen/autolink_elf.swift
+++ b/test/IRGen/autolink_elf.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %swift -target x86_64-unknown-linux-gnu -emit-module -parse-stdlib -o %t -module-name Empty -module-link-name swiftEmpty %S/../Inputs/empty.swift
 // RUN: %swift -target x86_64-unknown-linux-gnu %s -I %t -parse-stdlib -disable-objc-interop -module-name main -emit-ir -o - | %FileCheck %s
 
diff --git a/test/IRGen/builtins.swift b/test/IRGen/builtins.swift
index 03b8a05..6786f2f 100644
--- a/test/IRGen/builtins.swift
+++ b/test/IRGen/builtins.swift
@@ -222,12 +222,12 @@
 
 // CHECK: define hidden {{.*}}void @_T08builtins27generic_sizeof_alignof_testyxlF(
 func generic_sizeof_alignof_test<T>(_: T) {
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds i8*, i8** [[T:%.*]], i32 17
+  // CHECK:      [[T0:%.*]] = getelementptr inbounds i8*, i8** [[T:%.*]], i32 11
   // CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]]
   // CHECK-NEXT: [[SIZE:%.*]] = ptrtoint i8* [[T1]] to i64
   // CHECK-NEXT: store i64 [[SIZE]], i64* [[S:%.*]]
   var s = Builtin.sizeof(T.self)
-  // CHECK: [[T0:%.*]] = getelementptr inbounds i8*, i8** [[T:%.*]], i32 18
+  // CHECK: [[T0:%.*]] = getelementptr inbounds i8*, i8** [[T:%.*]], i32 12
   // CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]]
   // CHECK-NEXT: [[T2:%.*]] = ptrtoint i8* [[T1]] to i64
   // CHECK-NEXT: [[T3:%.*]] = and i64 [[T2]], 65535
@@ -238,7 +238,7 @@
 
 // CHECK: define hidden {{.*}}void @_T08builtins21generic_strideof_testyxlF(
 func generic_strideof_test<T>(_: T) {
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds i8*, i8** [[T:%.*]], i32 19
+  // CHECK:      [[T0:%.*]] = getelementptr inbounds i8*, i8** [[T:%.*]], i32 13
   // CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]]
   // CHECK-NEXT: [[STRIDE:%.*]] = ptrtoint i8* [[T1]] to i64
   // CHECK-NEXT: store i64 [[STRIDE]], i64* [[S:%.*]]
@@ -728,7 +728,7 @@
 
 // CHECK-LABEL: define {{.*}} @{{.*}}generic_ispod_test
 func generic_ispod_test<T>(_: T) {
-  // CHECK:      [[T0:%.*]] = getelementptr inbounds i8*, i8** [[T:%.*]], i32 18
+  // CHECK:      [[T0:%.*]] = getelementptr inbounds i8*, i8** [[T:%.*]], i32 12
   // CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]]
   // CHECK-NEXT: [[FLAGS:%.*]] = ptrtoint i8* [[T1]] to i64
   // CHECK-NEXT: [[ISNOTPOD:%.*]] = and i64 [[FLAGS]], 65536
diff --git a/test/IRGen/c_functions.swift b/test/IRGen/c_functions.swift
index b755af5..b3128c5 100644
--- a/test/IRGen/c_functions.swift
+++ b/test/IRGen/c_functions.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -import-objc-header %S/Inputs/c_functions.h -primary-file %s -emit-ir | %FileCheck %s
 
 // This is deliberately not a SIL test so that we can test SILGen too.
diff --git a/test/IRGen/clang_inline.swift b/test/IRGen/clang_inline.swift
index 37295f2..a240cdd 100644
--- a/test/IRGen/clang_inline.swift
+++ b/test/IRGen/clang_inline.swift
@@ -3,10 +3,10 @@
 // check that the static inline functions in Gizmo.h are correctly emitted as
 // inlineable.
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -sdk %S/Inputs -primary-file %s -Xcc -O3 -emit-ir | %FileCheck %s
 
-// RUN: mkdir -p %t/Empty.framework/Modules/Empty.swiftmodule
+// RUN: %empty-directory(%t/Empty.framework/Modules/Empty.swiftmodule)
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-module-path %t/Empty.framework/Modules/Empty.swiftmodule/%target-swiftmodule-name %S/../Inputs/empty.swift -module-name Empty
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -sdk %S/Inputs -primary-file %s -F %t -DIMPORT_EMPTY -Xcc -O3 -emit-ir > %t.ll
 // RUN: %FileCheck %s < %t.ll
@@ -16,7 +16,7 @@
 // XFAIL: linux
 
 #if IMPORT_EMPTY
-import Empty
+  import Empty
 #endif
 
 import gizmo
@@ -81,5 +81,5 @@
 
 // CHECK: attributes [[INLINEHINT_SSP_UWTABLE]] = { inlinehint ssp {{.*}}}
 // CHECK: attributes [[SSP]] = { ssp {{.*}} }
-// CHECK: attributes [[INNER_ZERO_ATTR]] = { inlinehint nounwind ssp 
+// CHECK: attributes [[INNER_ZERO_ATTR]] = { inlinehint nounwind ssp
 // CHECK: attributes [[GET_INT_ATTR]] = {
diff --git a/test/IRGen/class_isa_pointers.sil b/test/IRGen/class_isa_pointers.sil
index 70301d7..869bdb1 100644
--- a/test/IRGen/class_isa_pointers.sil
+++ b/test/IRGen/class_isa_pointers.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/class_isa_pointers_armv7k_watchos.sil b/test/IRGen/class_isa_pointers_armv7k_watchos.sil
index 756fbb6..10c23cd 100644
--- a/test/IRGen/class_isa_pointers_armv7k_watchos.sil
+++ b/test/IRGen/class_isa_pointers_armv7k_watchos.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/class_resilience.swift b/test/IRGen/class_resilience.swift
index 0f1423b..5c5c08c 100644
--- a/test/IRGen/class_resilience.swift
+++ b/test/IRGen/class_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -enable-resilience -enable-class-resilience -emit-module-path=%t/resilient_struct.swiftmodule -module-name=resilient_struct %S/../Inputs/resilient_struct.swift
 // RUN: %target-swift-frontend -emit-module -enable-resilience -enable-class-resilience -emit-module-path=%t/resilient_enum.swiftmodule -module-name=resilient_enum -I %t %S/../Inputs/resilient_enum.swift
 // RUN: %target-swift-frontend -emit-module -enable-resilience -enable-class-resilience -emit-module-path=%t/resilient_class.swiftmodule -module-name=resilient_class -I %t %S/../Inputs/resilient_class.swift
@@ -122,9 +122,11 @@
 // CHECK-NEXT: [[PTR:%.*]] = bitcast %T16class_resilience26ClassWithResilientPropertyC* %0 to i8*
 // CHECK-NEXT: [[FIELD_ADDR:%.*]] = getelementptr inbounds i8, i8* [[PTR]], [[INT]] [[OFFSET]]
 // CHECK-NEXT: [[FIELD_PTR:%.*]] = bitcast i8* [[FIELD_ADDR]] to %Ts5Int32V*
+// CHECK:      call void @swift_beginAccess
 // CHECK-NEXT: [[FIELD_PAYLOAD:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[FIELD_PTR]], i32 0, i32 0
 // CHECK-NEXT: [[FIELD_VALUE:%.*]] = load i32, i32* [[FIELD_PAYLOAD]]
-// CHECK-NEXT: ret i32 [[FIELD_VALUE]]
+// CHECK-NEXT: call void @swift_endAccess
+// CHECK: ret i32 [[FIELD_VALUE]]
 
 // ClassWithResilientProperty metadata accessor
 
@@ -149,9 +151,11 @@
 // CHECK-NEXT: [[PTR:%.*]] = bitcast %T16class_resilience33ClassWithResilientlySizedPropertyC* %0 to i8*
 // CHECK-NEXT: [[FIELD_ADDR:%.*]] = getelementptr inbounds i8, i8* [[PTR]], [[INT]] [[OFFSET]]
 // CHECK-NEXT: [[FIELD_PTR:%.*]] = bitcast i8* [[FIELD_ADDR]] to %Ts5Int32V*
+// CHECK:      call void @swift_beginAccess
 // CHECK-NEXT: [[FIELD_PAYLOAD:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[FIELD_PTR]], i32 0, i32 0
 // CHECK-NEXT: [[FIELD_VALUE:%.*]] = load i32, i32* [[FIELD_PAYLOAD]]
-// CHECK-NEXT: ret i32 [[FIELD_VALUE]]
+// CHECK-NEXT: call void @swift_endAccess
+// CHECK:      ret i32 [[FIELD_VALUE]]
 
 // ClassWithResilientlySizedProperty metadata accessor
 
@@ -174,9 +178,11 @@
 
 // CHECK-LABEL: define{{( protected)?}} swiftcc i32 @_T016class_resilience30ClassWithIndirectResilientEnumC5colors5Int32Vfg(%T16class_resilience30ClassWithIndirectResilientEnumC* swiftself)
 // CHECK:      [[FIELD_PTR:%.*]] = getelementptr inbounds %T16class_resilience30ClassWithIndirectResilientEnumC, %T16class_resilience30ClassWithIndirectResilientEnumC* %0, i32 0, i32 2
+// CHECK: call void @swift_beginAccess
 // CHECK-NEXT: [[FIELD_PAYLOAD:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[FIELD_PTR]], i32 0, i32 0
 // CHECK-NEXT: [[FIELD_VALUE:%.*]] = load i32, i32* [[FIELD_PAYLOAD]]
-// CHECK-NEXT: ret i32 [[FIELD_VALUE]]
+// CHECK-NEXT: call void @swift_endAccess
+// CHECK: ret i32 [[FIELD_VALUE]]
 
 
 // ResilientChild.field getter
@@ -186,9 +192,11 @@
 // CHECK-NEXT: [[PTR:%.*]] = bitcast %T16class_resilience14ResilientChildC* %0 to i8*
 // CHECK-NEXT: [[FIELD_ADDR:%.*]] = getelementptr inbounds i8, i8* [[PTR]], [[INT]] [[OFFSET]]
 // CHECK-NEXT: [[FIELD_PTR:%.*]] = bitcast i8* [[FIELD_ADDR]] to %Ts5Int32V*
+// CHECK: call void @swift_beginAccess
 // CHECK-NEXT: [[FIELD_PAYLOAD:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[FIELD_PTR]], i32 0, i32 0
 // CHECK-NEXT: [[FIELD_VALUE:%.*]] = load i32, i32* [[FIELD_PAYLOAD]]
-// CHECK-NEXT: ret i32 [[FIELD_VALUE]]
+// CHECK-NEXT: call void @swift_endAccess
+// CHECK: ret i32 [[FIELD_VALUE]]
 
 
 // ResilientGenericChild.field getter
@@ -211,18 +219,22 @@
 // CHECK-NEXT: [[OBJECT:%.*]] = bitcast %T16class_resilience21ResilientGenericChildC* %0 to i8*
 // CHECK-NEXT: [[ADDR:%.*]] = getelementptr inbounds i8, i8* [[OBJECT]], [[INT]] [[FIELD_OFFSET]]
 // CHECK-NEXT: [[FIELD_ADDR:%.*]] = bitcast i8* [[ADDR]] to %Ts5Int32V*
+// CHECK:      call void @swift_beginAccess
 // CHECK-NEXT: [[PAYLOAD_ADDR:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[FIELD_ADDR]], i32 0, i32 0
 // CHECK-NEXT: [[RESULT:%.*]] = load i32, i32* [[PAYLOAD_ADDR]]
-// CHECK-NEXT: ret i32 [[RESULT]]
+// CHECK-NEXT: call void @swift_endAccess
+// CHECK:      ret i32 [[RESULT]]
 
 
 // MyResilientChild.field getter
 
 // CHECK-LABEL: define{{( protected)?}} swiftcc i32 @_T016class_resilience16MyResilientChildC5fields5Int32Vfg(%T16class_resilience16MyResilientChildC* swiftself)
 // CHECK:      [[FIELD_ADDR:%.*]] = getelementptr inbounds %T16class_resilience16MyResilientChildC, %T16class_resilience16MyResilientChildC* %0, i32 0, i32 2
+// CHECK:      call void @swift_beginAccess
 // CHECK-NEXT: [[PAYLOAD_ADDR:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[FIELD_ADDR]], i32 0, i32 0
 // CHECK-NEXT: [[RESULT:%.*]] = load i32, i32* [[PAYLOAD_ADDR]]
-// CHECK-NEXT: ret i32 [[RESULT]]
+// CHECK-NEXT: call void @swift_endAccess
+// CHECK:      ret i32 [[RESULT]]
 
 
 // ClassWithResilientProperty metadata initialization function
diff --git a/test/IRGen/class_resilience_objc.swift b/test/IRGen/class_resilience_objc.swift
index c414104..3f16a86 100644
--- a/test/IRGen/class_resilience_objc.swift
+++ b/test/IRGen/class_resilience_objc.swift
@@ -18,6 +18,7 @@
 // CHECK-NEXT: [[OBJECT:%.*]] = bitcast %T21class_resilience_objc23FixedLayoutObjCSubclassC* %0 to i8*
 // CHECK-NEXT: [[ADDR:%.*]] = getelementptr inbounds i8, i8* [[OBJECT]], [[INT]] [[OFFSET]]
 // CHECK-NEXT: [[FIELD_ADDR:%.*]] = bitcast i8* [[ADDR]] to %Ts5Int32V*
+// CHECK:      call void @swift_beginAccess
 // CHECK-NEXT: [[PAYLOAD_ADDR:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[FIELD_ADDR]], i32 0, i32 0
 // CHECK-NEXT: store i32 10, i32* [[PAYLOAD_ADDR]]
 
@@ -36,6 +37,7 @@
 // CHECK-NEXT: [[OBJECT:%.*]] = bitcast %T21class_resilience_objc26NonFixedLayoutObjCSubclassC* %0 to i8*
 // CHECK-NEXT: [[ADDR:%.*]] = getelementptr inbounds i8, i8* [[OBJECT]], [[INT]] [[OFFSET]]
 // CHECK-NEXT: [[FIELD_ADDR:%.*]] = bitcast i8* [[ADDR]] to %Ts5Int32V*
+// CHECK:      call void @swift_beginAccess
 // CHECK-NEXT: [[PAYLOAD_ADDR:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[FIELD_ADDR]], i32 0, i32 0
 // CHECK-NEXT: store i32 10, i32* [[PAYLOAD_ADDR]]
 
@@ -78,6 +80,7 @@
 // CHECK-NEXT: [[OBJECT:%.*]] = bitcast %T21class_resilience_objc19GenericObjCSubclassC* %0 to i8*
 // CHECK-NEXT: [[ADDR:%.*]] = getelementptr inbounds i8, i8* [[OBJECT]], [[INT]] [[FIELD_OFFSET]]
 // CHECK-NEXT: [[FIELD_ADDR:%.*]] = bitcast i8* [[ADDR]] to %Ts5Int32V*
+// CHECK:      call void @swift_beginAccess
 // CHECK-NEXT: [[PAYLOAD_ADDR:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[FIELD_ADDR]], i32 0, i32 0
 // CHECK-NEXT: store i32 10, i32* [[PAYLOAD_ADDR]]
 
diff --git a/test/IRGen/class_resilience_objc_armv7k.swift b/test/IRGen/class_resilience_objc_armv7k.swift
index 1eef6d1..545809e 100644
--- a/test/IRGen/class_resilience_objc_armv7k.swift
+++ b/test/IRGen/class_resilience_objc_armv7k.swift
@@ -18,6 +18,7 @@
 // CHECK-NEXT: [[OBJECT:%.*]] = bitcast %T28class_resilience_objc_armv7k23FixedLayoutObjCSubclassC* %0 to i8*
 // CHECK-NEXT: [[ADDR:%.*]] = getelementptr inbounds i8, i8* [[OBJECT]], [[INT]] [[OFFSET]]
 // CHECK-NEXT: [[FIELD_ADDR:%.*]] = bitcast i8* [[ADDR]] to %Ts5Int32V*
+// CHECK:      call void @swift_beginAccess
 // CHECK-NEXT: [[PAYLOAD_ADDR:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[FIELD_ADDR]], i32 0, i32 0
 // CHECK-NEXT: store i32 10, i32* [[PAYLOAD_ADDR]]
 
@@ -36,6 +37,7 @@
 // CHECK-NEXT: [[OBJECT:%.*]] = bitcast %T28class_resilience_objc_armv7k26NonFixedLayoutObjCSubclassC* %0 to i8*
 // CHECK-NEXT: [[ADDR:%.*]] = getelementptr inbounds i8, i8* [[OBJECT]], [[INT]] [[OFFSET]]
 // CHECK-NEXT: [[FIELD_ADDR:%.*]] = bitcast i8* [[ADDR]] to %Ts5Int32V*
+// CHECK:      call void @swift_beginAccess
 // CHECK-NEXT: [[PAYLOAD_ADDR:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[FIELD_ADDR]], i32 0, i32 0
 // CHECK-NEXT: store i32 10, i32* [[PAYLOAD_ADDR]]
 
@@ -67,6 +69,7 @@
 // CHECK-NEXT: [[OBJECT:%.*]] = bitcast %T28class_resilience_objc_armv7k19GenericObjCSubclassC* %0 to i8*
 // CHECK-NEXT: [[ADDR:%.*]] = getelementptr inbounds i8, i8* [[OBJECT]], [[INT]] [[FIELD_OFFSET]]
 // CHECK-NEXT: [[FIELD_ADDR:%.*]] = bitcast i8* [[ADDR]] to %Ts5Int32V*
+// CHECK:      call void @swift_beginAccess
 // CHECK-NEXT: [[PAYLOAD_ADDR:%.*]] = getelementptr inbounds %Ts5Int32V, %Ts5Int32V* [[FIELD_ADDR]], i32 0, i32 0
 // CHECK-NEXT: store i32 10, i32* [[PAYLOAD_ADDR]]
 
diff --git a/test/IRGen/class_with_stub_initializers.swift b/test/IRGen/class_with_stub_initializers.swift
index 00dca07..c688977 100644
--- a/test/IRGen/class_with_stub_initializers.swift
+++ b/test/IRGen/class_with_stub_initializers.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/conformance_multifile.swift b/test/IRGen/conformance_multifile.swift
new file mode 100644
index 0000000..961763c
--- /dev/null
+++ b/test/IRGen/conformance_multifile.swift
@@ -0,0 +1,8 @@
+// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-ir -primary-file %s %S/Inputs/conformance_multifile_1.swift | %FileCheck %s
+
+func g<U>(_ f : (E) throws -> (U)) {}
+
+// CHECK: _T021conformance_multifile1tyyF
+func t() {
+  g(E2.Filter)
+}
diff --git a/test/IRGen/empty_objc_ivar.swift b/test/IRGen/empty_objc_ivar.swift
index 988e80d..f865613 100644
--- a/test/IRGen/empty_objc_ivar.swift
+++ b/test/IRGen/empty_objc_ivar.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-ir -verify %s
 
diff --git a/test/IRGen/enum.sil b/test/IRGen/enum.sil
index df5448a..f6dcf60 100644
--- a/test/IRGen/enum.sil
+++ b/test/IRGen/enum.sil
@@ -122,7 +122,7 @@
 // CHECK:   i32 1, i32 0
 // CHECK: }>
 
-// CHECK: @_T04enum16DynamicSingletonOMP = internal global <{ {{.*}}, [26 x i8*] }> <{
+// CHECK: @_T04enum16DynamicSingletonOMP = internal global <{ {{.*}}, [20 x i8*] }> <{
 // CHECK:   %swift.type* (%swift.type_pattern*, i8**)* @create_generic_metadata_DynamicSingleton
 // CHECK:   @_T04enum16DynamicSingletonOMn
 // CHECK:   i8* null
@@ -131,7 +131,7 @@
 
 // -- No-payload enums have extra inhabitants in
 //    their value witness table.
-// CHECK: @_T04enum10NoPayloadsOWV = internal constant [26 x i8*] [
+// CHECK: @_T04enum10NoPayloadsOWV = internal constant [20 x i8*] [
 // -- ...
 // -- size
 // CHECK:   i8* inttoptr ([[WORD:i32|i64]] 1 to i8*),
@@ -149,7 +149,7 @@
 
 // -- Single-payload enums take unused extra inhabitants from their payload
 //    as their own.
-// CHECK: @_T04enum19SinglePayloadNestedOWV = internal constant [26 x i8*] [
+// CHECK: @_T04enum19SinglePayloadNestedOWV = internal constant [20 x i8*] [
 // -- ...
 // -- size
 // CHECK:   i8* inttoptr ([[WORD]] 1 to i8*),
@@ -166,13 +166,13 @@
 // CHECK: ]
 
 
-// CHECK: @_T04enum20DynamicSinglePayloadOMP = internal global <{ {{.*}}, [26 x i8*] }> <{
+// CHECK: @_T04enum20DynamicSinglePayloadOMP = internal global <{ {{.*}}, [20 x i8*] }> <{
 // CHECK:   %swift.type* (%swift.type_pattern*, i8**)* @create_generic_metadata_DynamicSinglePayload
 // CHECK:   i8* null
 // CHECK:   i8* bitcast (void (%swift.opaque*, i32, %swift.type*)* @_T04enum20DynamicSinglePayloadOwxs to i8*)
 // CHECK:   i8* bitcast (i32 (%swift.opaque*, %swift.type*)* @_T04enum20DynamicSinglePayloadOwxg to i8*)
 
-// CHECK: @_T04enum18MultiPayloadNestedOWV = internal constant [26 x i8*] [
+// CHECK: @_T04enum18MultiPayloadNestedOWV = internal constant [20 x i8*] [
 // CHECK:   i8* inttoptr ([[WORD]] 9 to i8*),
 // CHECK:   i8* inttoptr ([[WORD]] 16 to i8*)
 // CHECK: ]
@@ -2692,16 +2692,16 @@
 // CHECK:   [[T_VWTS:%.*]] = bitcast %swift.type* [[T]] to i8***
 // CHECK:   [[T_VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[T_VWTS]], [[WORD]] -1
 // CHECK:   [[T_VWT:%.*]] = load i8**, i8*** [[T_VWT_ADDR]]
-// CHECK:   [[T_LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[T_VWT]], i32 17
-// CHECK:   [[SIZE_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 17
+// CHECK:   [[T_LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[T_VWT]], i32 11
+// CHECK:   [[SIZE_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 11
 // CHECK:   [[T_SIZE_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[T_LAYOUT]], i32 0
 // CHECK:   [[T_SIZE:%.*]] = load i8*, i8** [[T_SIZE_ADDR]]
 // CHECK:   store i8* [[T_SIZE]], i8** [[SIZE_ADDR]]
-// CHECK:   [[STRIDE_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 19
+// CHECK:   [[STRIDE_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 13
 // CHECK:   [[T_STRIDE_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[T_LAYOUT]], i32 2
 // CHECK:   [[T_STRIDE:%.*]] = load i8*, i8** [[T_STRIDE_ADDR]]
 // CHECK:   store i8* [[T_STRIDE]], i8** [[STRIDE_ADDR]]
-// CHECK:   [[FLAGS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 18
+// CHECK:   [[FLAGS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 12
 // CHECK:   [[T_FLAGS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[T_LAYOUT]], i32 1
 // CHECK:   [[T_FLAGS:%.*]] = load i8*, i8** [[T_FLAGS_ADDR]]
 // CHECK:   [[T_FLAGS_INT:%.*]] = ptrtoint i8* [[T_FLAGS]] to [[WORD]]
@@ -2715,7 +2715,7 @@
 // CHECK:   [[XI_BIT:%.*]] = icmp ne [[WORD]] [[XI_FLAG]], 0
 // CHECK:   br i1 [[XI_BIT]], label %[[HAS_XI:[0-9]+]], label %[[HAS_NO_XI:[0-9]+]]
 // CHECK: ; <label>:[[HAS_XI]]
-// CHECK:   [[XI_FLAGS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 20
+// CHECK:   [[XI_FLAGS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 14
 // CHECK:   [[T_XI_FLAGS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[T_LAYOUT]], i32 3
 // CHECK:   [[T_XI_FLAGS:%.*]] = load i8*, i8** [[T_XI_FLAGS_ADDR]]
 // CHECK:   store i8* [[T_XI_FLAGS]], i8** [[XI_FLAGS_ADDR]]
diff --git a/test/IRGen/enum_derived.swift b/test/IRGen/enum_derived.swift
index fbc8f4c..c9d3d69 100644
--- a/test/IRGen/enum_derived.swift
+++ b/test/IRGen/enum_derived.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-module -module-name def_enum -o %t %S/Inputs/def_enum.swift
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -I %t -O -primary-file %s -emit-ir | %FileCheck -check-prefix=CHECK -check-prefix=CHECK-NORMAL %s
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -I %t -O -primary-file %s -enable-testing -emit-ir | %FileCheck -check-prefix=CHECK -check-prefix=CHECK-TESTABLE %s
diff --git a/test/IRGen/enum_dynamic_multi_payload.sil b/test/IRGen/enum_dynamic_multi_payload.sil
index 3740538..0d45571 100644
--- a/test/IRGen/enum_dynamic_multi_payload.sil
+++ b/test/IRGen/enum_dynamic_multi_payload.sil
@@ -427,14 +427,14 @@
 // CHECK-NEXT: [[T0:%.*]] = bitcast %swift.type* %T to i8***
 // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]]
 // CHECK-NEXT: [[VALUE_WITNESSES:%.*]] = load i8**, i8*** [[T1]]
-// CHECK-NEXT: [[LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[VALUE_WITNESSES]], i32 17
+// CHECK-NEXT: [[LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[VALUE_WITNESSES]], i32 11
 // CHECK-NEXT: store i8** [[LAYOUT]], {{.*}} [[BUF0]]
 
 // CHECK:      [[BUF1:%.*]] = getelementptr {{.*}} [[BUF]], i32 0, i32 1
 // CHECK-NEXT: [[T0:%.*]] = bitcast %swift.type* %U to i8***
 // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]]
 // CHECK-NEXT: [[VALUE_WITNESSES:%.*]] = load i8**, i8*** [[T1]]
-// CHECK-NEXT: [[LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[VALUE_WITNESSES]], i32 17
+// CHECK-NEXT: [[LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[VALUE_WITNESSES]], i32 11
 // CHECK-NEXT: store i8** [[LAYOUT]], {{.*}} [[BUF1]]
 
 // CHECK:   call void @swift_initEnumMetadataMultiPayload(i8** {{%.*}}, %swift.type* [[METADATA]], {{i(32|64)}} 2, i8*** [[BUF0]])
diff --git a/test/IRGen/enum_resilience.swift b/test/IRGen/enum_resilience.swift
index 7649fcc..d5051c9 100644
--- a/test/IRGen/enum_resilience.swift
+++ b/test/IRGen/enum_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_struct.swiftmodule -module-name=resilient_struct %S/../Inputs/resilient_struct.swift
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_enum.swiftmodule -module-name=resilient_enum -I %t %S/../Inputs/resilient_enum.swift
 // RUN: %target-swift-frontend -I %t -emit-ir -enable-resilience %s | %FileCheck %s
@@ -69,7 +69,7 @@
 // CHECK-NEXT: [[METADATA_ADDR:%.*]] = bitcast %swift.type* [[METADATA]] to i8***
 // CHECK-NEXT: [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[METADATA_ADDR]], [[INT:i32|i64]] -1
 // CHECK-NEXT: [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 9
+// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 4
 // CHECK-NEXT: [[WITNESS:%.*]]  = load i8*, i8** [[WITNESS_ADDR]]
 // CHECK-NEXT: [[WITNESS_FN:%.*]] = bitcast i8* [[WITNESS]]
 // CHECK-NEXT: call %swift.opaque* [[WITNESS_FN]](%swift.opaque* %0, %swift.opaque* %1, %swift.type* [[METADATA]])
@@ -85,7 +85,7 @@
 // CHECK-NEXT: [[METADATA_ADDR:%.*]] = bitcast %swift.type* [[METADATA]] to i8***
 // CHECK-NEXT: [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[METADATA_ADDR]], [[INT:i32|i64]] -1
 // CHECK-NEXT: [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 9
+// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 4
 // CHECK-NEXT: [[WITNESS:%.*]]  = load i8*, i8** [[WITNESS_ADDR]]
 // CHECK-NEXT: [[WITNESS_FN:%.*]] = bitcast i8* [[WITNESS]]
 // CHECK-NEXT: call %swift.opaque* [[WITNESS_FN]](%swift.opaque* %0, %swift.opaque* %1, %swift.type* [[METADATA]])
@@ -101,7 +101,7 @@
 // CHECK-NEXT: [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[METADATA_ADDR]], [[INT:i32|i64]] -1
 // CHECK-NEXT: [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
 
-// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 25
+// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 19
 // CHECK-NEXT: [[WITNESS:%.*]] = load i8*, i8** [[WITNESS_ADDR]]
 // CHECK-NEXT: [[WITNESS_FN:%.*]] = bitcast i8* [[WITNESS]]
 // CHECK-NEXT: call void [[WITNESS_FN]](%swift.opaque* %0, i32 0, %swift.type* [[METADATA]])
@@ -117,7 +117,7 @@
 // CHECK-NEXT: [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[METADATA_ADDR]], [[INT:i32|i64]] -1
 // CHECK-NEXT: [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
 
-// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 6
+// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 2
 // CHECK-NEXT: [[WITNESS:%.*]]  = load i8*, i8** [[WITNESS_ADDR]]
 // CHECK-NEXT: [[WITNESS_FN:%.*]] = bitcast i8* [[WITNESS]]
 // CHECK-NEXT: [[COPY:%.*]] = call %swift.opaque* %initializeWithCopy(%swift.opaque* %0, %swift.opaque* %1, %swift.type* [[METADATA]])
@@ -127,12 +127,12 @@
 // CHECK-NEXT: [[VWT_ADDR2:%.*]] = getelementptr inbounds i8**, i8*** [[METADATA_ADDR2]], [[INT:i32|i64]] -1
 // CHECK-NEXT: [[VWT2:%.*]] = load i8**, i8*** [[VWT_ADDR2]]
 
-// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT2]], i32 25
+// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT2]], i32 19
 // CHECK-NEXT: [[WITNESS:%.*]] = load i8*, i8** [[WITNESS_ADDR]]
 // CHECK-NEXT: [[WITNESS_FN:%.*]] = bitcast i8* [[WITNESS]]
 // CHECK-NEXT: call void [[WITNESS_FN]](%swift.opaque* %0, i32 -2, %swift.type* [[METADATA2]])
 
-// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 4
+// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 1
 // CHECK-NEXT: [[WITNESS:%.*]] = load i8*, i8** [[WITNESS_ADDR]]
 // CHECK-NEXT: [[WITNESS_FN:%.*]] = bitcast i8* [[WITNESS]]
 // CHECK-NEXT: call void [[WITNESS_FN]](%swift.opaque* %1, %swift.type* [[METADATA]])
@@ -147,7 +147,7 @@
 // CHECK: [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[METADATA_ADDR]], [[INT]] -1
 // CHECK: [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
 
-// CHECK: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 17
+// CHECK: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 11
 // CHECK: [[WITNESS:%.*]] = load i8*, i8** [[WITNESS_ADDR]]
 // CHECK: [[WITNESS_FOR_SIZE:%.*]] = ptrtoint i8* [[WITNESS]]
 // CHECK: [[ALLOCA:%.*]] = alloca i8, {{.*}} [[WITNESS_FOR_SIZE]], align 16
@@ -155,12 +155,12 @@
 // CHECK: [[ALLOCA:%.*]] = alloca i8, {{.*}} [[WITNESS_FOR_SIZE]], align 16
 // CHECK: [[ENUM_STORAGE:%.*]] = bitcast i8* [[ALLOCA]] to %swift.opaque*
 
-// CHECK: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 6
+// CHECK: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 2
 // CHECK: [[WITNESS:%.*]] = load i8*, i8** [[WITNESS_ADDR]]
 // CHECK: [[WITNESS_FN:%.*]] = bitcast i8* [[WITNESS]]
 // CHECK: [[ENUM_COPY:%.*]] = call %swift.opaque* [[WITNESS_FN]](%swift.opaque* [[ENUM_STORAGE]], %swift.opaque* %0, %swift.type* [[METADATA]])
 
-// CHECK: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 23
+// CHECK: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 17
 // CHECK: [[WITNESS:%.*]] = load i8*, i8** [[WITNESS_ADDR]]
 // CHECK: [[WITNESS_FN:%.*]] = bitcast i8* [[WITNESS]]
 // CHECK: [[TAG:%.*]] = call i32 %getEnumTag(%swift.opaque* [[ENUM_STORAGE]], %swift.type* [[METADATA]])
diff --git a/test/IRGen/enum_spare_bits.sil b/test/IRGen/enum_spare_bits.sil
index 6cee3dc..a0bae61 100644
--- a/test/IRGen/enum_spare_bits.sil
+++ b/test/IRGen/enum_spare_bits.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize %s
 
diff --git a/test/IRGen/enum_value_semantics.sil b/test/IRGen/enum_value_semantics.sil
index 11156f3..65b48c3 100644
--- a/test/IRGen/enum_value_semantics.sil
+++ b/test/IRGen/enum_value_semantics.sil
@@ -94,20 +94,14 @@
 }
 
 
-// CHECK-LABEL: @_T020enum_value_semantics20SinglePayloadTrivialOWV = internal constant [26 x i8*] [
-// CHECK:   i8* bitcast (void (i8*, %swift.type*)* @__swift_noop_void_return to i8*),
+// CHECK-LABEL: @_T020enum_value_semantics20SinglePayloadTrivialOWV = internal constant [20 x i8*] [
 // CHECK:   i8* bitcast (i8* (i8*, i8*, %swift.type*)* @__swift_memcpy9_8 to i8*),
-// CHECK:   i8* bitcast (i8* (i8*, %swift.type*)* @__swift_noop_self_return to i8*),
-// CHECK:   i8* bitcast (void (i8*, %swift.type*)* @__swift_noop_void_return to i8*),
 // CHECK:   i8* bitcast (void (i8*, %swift.type*)* @__swift_noop_void_return to i8*),
 // CHECK:   i8* bitcast (i8* (i8*, i8*, %swift.type*)* @__swift_memcpy9_8 to i8*),
 // CHECK:   i8* bitcast (i8* (i8*, i8*, %swift.type*)* @__swift_memcpy9_8 to i8*),
 // CHECK:   i8* bitcast (i8* (i8*, i8*, %swift.type*)* @__swift_memcpy9_8 to i8*),
 // CHECK:   i8* bitcast (i8* (i8*, i8*, %swift.type*)* @__swift_memcpy9_8 to i8*),
 // CHECK:   i8* bitcast (i8* (i8*, i8*, %swift.type*)* @__swift_memcpy9_8 to i8*),
-// CHECK:   i8* bitcast (i8* (i8*, i8*, %swift.type*)* @__swift_memcpy9_8 to i8*),
-// CHECK:   i8* bitcast (i8* (i8*, %swift.type*)* @__swift_noop_self_return to i8*),
-// CHECK:   i8* bitcast (i8* (i8*, i8*, %swift.type*)* @__swift_memcpy9_8 to i8*),
 // CHECK:   i8* bitcast (void (i8*, %swift.type*)* @__swift_noop_void_return to i8*),
 // CHECK:   i8* bitcast (i8* (i8*, i8*, i64, %swift.type*)* @__swift_memcpy_array16_8 to i8*),
 // CHECK:   i8* bitcast (i8* (i8*, i8*, i64, %swift.type*)* @__swift_memmove_array16_8 to i8*),
@@ -126,27 +120,20 @@
 
 // CHECK-LABEL: @_T020enum_value_semantics20SinglePayloadTrivialOMf =
 // CHECK-SAME:   internal constant <{ {{.*}} }> <{
-// CHECK-SAME:   i8** getelementptr inbounds ([26 x i8*], [26 x i8*]* @_T020enum_value_semantics20SinglePayloadTrivialOWV, i32 0, i32 0),
+// CHECK-SAME:   i8** getelementptr inbounds ([20 x i8*], [20 x i8*]* @_T020enum_value_semantics20SinglePayloadTrivialOWV, i32 0, i32 0),
 // CHECK-SAME:   i64 2,
 // CHECK-SAME:   {{.*}}* @_T020enum_value_semantics20SinglePayloadTrivialOMn
 // CHECK-SAME:   %swift.type* null
 // CHECK-SAME: }>
 
 
-// CHECK-LABEL: @_T020enum_value_semantics23SinglePayloadNontrivialOWV = internal constant [26 x i8*] [
-// CHECK:   i8* bitcast (void ([24 x i8]*, %swift.type*)* @_T020enum_value_semantics23SinglePayloadNontrivialOwXX to i8*),
+// CHECK-LABEL: @_T020enum_value_semantics23SinglePayloadNontrivialOWV = internal constant [20 x i8*] [
 // CHECK:   i8* bitcast (%swift.opaque* ([24 x i8]*, [24 x i8]*, %swift.type*)* @_T020enum_value_semantics23SinglePayloadNontrivialOwCP to i8*),
-// CHECK:   i8* bitcast (i8* (i8*, %swift.type*)* @__swift_noop_self_return to i8*),
-// CHECK:   i8* bitcast (void (i8*, %swift.type*)* @__swift_noop_void_return to i8*),
 // CHECK:   i8* bitcast (void (%swift.opaque*, %swift.type*)* @_T020enum_value_semantics23SinglePayloadNontrivialOwxx to i8*),
-// CHECK:   i8* bitcast (%swift.opaque* ([24 x i8]*, %swift.opaque*, %swift.type*)* @_T020enum_value_semantics23SinglePayloadNontrivialOwCp to i8*),
 // CHECK:   i8* bitcast (%swift.opaque* (%swift.opaque*, %swift.opaque*, %swift.type*)* @_T020enum_value_semantics23SinglePayloadNontrivialOwcp to i8*),
 // CHECK:   i8* bitcast (%swift.opaque* (%swift.opaque*, %swift.opaque*, %swift.type*)* @_T020enum_value_semantics23SinglePayloadNontrivialOwca to i8*),
 // CHECK:   i8* bitcast (i8* (i8*, i8*, %swift.type*)* @__swift_memcpy8_8 to i8*),
-// CHECK:   i8* bitcast (i8* (i8*, i8*, %swift.type*)* @__swift_memcpy8_8 to i8*),
 // CHECK:   i8* bitcast (%swift.opaque* (%swift.opaque*, %swift.opaque*, %swift.type*)* @_T020enum_value_semantics23SinglePayloadNontrivialOwta to i8*),
-// CHECK:   i8* bitcast (i8* (i8*, %swift.type*)* @__swift_noop_self_return to i8*),
-// CHECK:   i8* bitcast (i8* (i8*, i8*, %swift.type*)* @__swift_memcpy8_8 to i8*),
 // CHECK:   i8* bitcast (void (%swift.opaque*, i64, %swift.type*)* @_T020enum_value_semantics23SinglePayloadNontrivialOwXx to i8*),
 // CHECK:   i8* bitcast (%swift.opaque* (%swift.opaque*, %swift.opaque*, i64, %swift.type*)* @_T020enum_value_semantics23SinglePayloadNontrivialOwCc to i8*),
 // CHECK:   i8* bitcast (i8* (i8*, i8*, i64, %swift.type*)* @__swift_memmove_array8_8 to i8*),
@@ -168,7 +155,7 @@
 
 // CHECK-LABEL: @_T020enum_value_semantics23SinglePayloadNontrivialOMf =
 // CHECK-SAME: internal constant <{ {{.*}} }> <{
-// CHECK-SAME:   i8** getelementptr inbounds ([26 x i8*], [26 x i8*]* @_T020enum_value_semantics23SinglePayloadNontrivialOWV, i32 0, i32 0),
+// CHECK-SAME:   i8** getelementptr inbounds ([20 x i8*], [20 x i8*]* @_T020enum_value_semantics23SinglePayloadNontrivialOWV, i32 0, i32 0),
 // CHECK-SAME:   i64 2,
 // CHECK-SAME:   {{.*}}* @_T020enum_value_semantics23SinglePayloadNontrivialOMn
 // CHECK-SAME:   %swift.type* null
@@ -179,7 +166,7 @@
 // CHECK:   %swift.type* (%swift.type_pattern*, i8**)* @create_generic_metadata_GenericFixedLayout
 // CHECK:   i32 48, i16 1, i16 8,
 // CHECK:   [16 x i8*] zeroinitializer,
-// CHECK:   i8** getelementptr inbounds ([26 x i8*], [26 x i8*]* @_T020enum_value_semantics18GenericFixedLayoutOWV, i32 0, i32 0),
+// CHECK:   i8** getelementptr inbounds ([20 x i8*], [20 x i8*]* @_T020enum_value_semantics18GenericFixedLayoutOWV, i32 0, i32 0),
 // CHECK:   i64 2,
 // CHECK:   {{.*}}* @_T020enum_value_semantics18GenericFixedLayoutOMn
 // CHECK:   i{{32|64}} 0
diff --git a/test/IRGen/existentials_objc.sil b/test/IRGen/existentials_objc.sil
index 3a64d16..964bee8 100644
--- a/test/IRGen/existentials_objc.sil
+++ b/test/IRGen/existentials_objc.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -sdk %S/Inputs -I %t %s -emit-ir | %FileCheck %s
 
@@ -45,7 +45,7 @@
 // CHECK-NEXT: [[CAST:%.*]] = bitcast %swift.type* [[TYPE]] to i8***
 // CHECK-NEXT: [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], i64 -1
 // CHECK-NEXT: [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK-NEXT: [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 12
+// CHECK-NEXT: [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 6
 // CHECK-NEXT: [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK-NEXT: [[INITWITHTAKEBUFFER:%.*]] = bitcast i8* [[VW]]
 // CHECK-NEXT: call %swift.opaque* [[INITWITHTAKEBUFFER]]({{.*}} [[TO_BUFFER_ADDR]], {{.*}} [[FROM_BUFFER_ADDR]], %swift.type* [[TYPE]])
diff --git a/test/IRGen/existentials_opaque_boxed.sil b/test/IRGen/existentials_opaque_boxed.sil
index ac1bd6d..959a419 100644
--- a/test/IRGen/existentials_opaque_boxed.sil
+++ b/test/IRGen/existentials_opaque_boxed.sil
@@ -41,7 +41,7 @@
 // CHECK:  [[CAST:%.*]] = bitcast %swift.type* [[METATYPE]]
 // CHECK:  [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:  [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:  [[FLAG_WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 18
+// CHECK:  [[FLAG_WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 12
 // CHECK:  [[FLAG_WITNESS:%.*]] = load i8*, i8** [[FLAG_WITNESS_ADDR]]
 // CHECK:  [[FLAGS:%.*]] = ptrtoint i8* [[FLAG_WITNESS]]
 // CHECK:  [[ISNOTINLINE:%.*]] = and {{(i64|i32)}} [[FLAGS]], 131072
@@ -115,7 +115,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* [[META]] to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** %3, {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 18
+// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 12
 // CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:   [[FLAGS:%.*]] = ptrtoint i8* [[VW]] to {{(i64|i32)}}
 // CHECK:   [[MASKED:%.*]] = and {{(i64|i32)}} [[FLAGS]], 131072
@@ -132,7 +132,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* [[META]] to i8***
 // CHECK:   [[VWT_ADDR2:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:   [[VWT2:%.*]] = load i8**, i8*** [[VWT_ADDR2]]
-// CHECK:   [[VW_ADDR2:%.*]] = getelementptr inbounds i8*, i8** [[VWT2]], i32 17
+// CHECK:   [[VW_ADDR2:%.*]] = getelementptr inbounds i8*, i8** [[VWT2]], i32 11
 // CHECK:   [[VW2:%.*]] = load i8*, i8** [[VW_ADDR2]]
 // CHECK:   [[SIZE:%.*]] = ptrtoint i8* [[VW2]] to {{(i64|i32)}}
 // CHECK:   [[ALIGNMASK:%.*]] = and {{(i64|i32)}} [[FLAGS]], 65535
@@ -164,7 +164,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* %1 to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 18
+// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 12
 // CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:   [[FLAGS:%.*]] = ptrtoint i8* [[VW]] to {{(i64|i32)}}
 // CHECK:   [[ISNOTINLINE:%.*]] = and {{(i64|i32)}} [[FLAGS]], 131072
@@ -207,7 +207,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* %1 to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 18
+// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 12
 // CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:   [[FLAGS:%.*]] = ptrtoint i8* [[VW]] to {{(i64|i32)}}
 // CHECK:   [[ISNOTINLINE:%.*]] = and {{(i64|i32)}} [[FLAGS]], 131072
@@ -244,7 +244,7 @@
 // CHECK:  [[CAST:%.*]] = bitcast %swift.type* [[METADATA]] to i8***
 // CHECK:  [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:  [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:  [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 18
+// CHECK:  [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 12
 // CHECK:  [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:  [[FLAGS:%.*]] = ptrtoint i8* [[VW]] to {{(i64|i32)}}
 // CHECK:  [[ISNOTINLINE:%.*]] = and {{(i64|i32)}} [[FLAGS]], 131072
@@ -256,7 +256,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* [[METADATA]] to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 4
+// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 1
 // CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:   [[DESTROY:%.*]] = bitcast i8* [[VW]] to void (%swift.opaque*, %swift.type*)*
 // CHECK:   call void [[DESTROY]](%swift.opaque* [[OPAQUE]], %swift.type* [[METADATA]])
@@ -301,7 +301,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* [[DEST_TYPE]] to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 18
+// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 12
 // CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:   [[FLAGS:%.*]] = ptrtoint i8* [[VW]] to {{(i64|i32)}}
 // CHECK:   [[MASKED:%.*]] = and {{(i64|i32)}} [[FLAGS]], 131072
@@ -314,7 +314,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* [[DEST_TYPE]] to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 7
+// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 3
 // CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:   [[ASSIGNWITHCOPY:%.*]] = bitcast i8* [[VW]] to %swift.opaque* (%swift.opaque*, %swift.opaque*, %swift.type*)*
 // CHECK:   call %swift.opaque* [[ASSIGNWITHCOPY]](%swift.opaque* [[DEST_OPAQUE]], %swift.opaque* [[SRC_OPAQUE]], %swift.type* [[DEST_TYPE]])
@@ -339,7 +339,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* [[DEST_TYPE]] to i8***
 // CHECK:   [[DEST_VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:   [[DEST_VWT:%.*]] = load i8**, i8*** [[DEST_VWT_ADDR]]
-// CHECK:   [[DEST_VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[DEST_VWT]], i32 18
+// CHECK:   [[DEST_VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[DEST_VWT]], i32 12
 // CHECK:   [[DEST_VW:%.*]] = load i8*, i8** [[DEST_VW_ADDR]]
 // CHECK:   [[DEST_FLAGS:%.*]] = ptrtoint i8* [[DEST_VW]] to {{(i64|i32)}}
 // CHECK:   [[DEST_ISNOTINLINE:%.*]] = and {{(i64|i32)}} [[DEST_FLAGS]], 131072
@@ -347,7 +347,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* [[SRC_TYPE]] to i8***
 // CHECK:   [[SRC_VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:   [[SRC_VWT:%.*]] = load i8**, i8*** [[SRC_VWT_ADDR]]
-// CHECK:   [[SRC_VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[SRC_VWT]], i32 18
+// CHECK:   [[SRC_VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[SRC_VWT]], i32 12
 // CHECK:   [[SRC_VW:%.*]] = load i8*, i8** [[SRC_VW_ADDR]]
 // CHECK:   [[SRC_FLAGS:%.*]] = ptrtoint i8* [[SRC_VW]] to {{(i64|i32)}}
 // CHECK:   [[SRC_ISNOTINLINE:%.*]] = and {{(i64|i32)}} [[SRC_FLAGS]], 131072
@@ -360,7 +360,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* [[DEST_TYPE]] to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 9
+// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 4
 // CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:   [[INITWITHTAKE:%.*]] = bitcast i8* [[VW]] to %swift.opaque* (%swift.opaque*, %swift.opaque*, %swift.type*)*
 // CHECK:   call %swift.opaque* [[INITWITHTAKE]](%swift.opaque* [[TMPBUFFER_OPAQUE]], %swift.opaque* [[DESTBUFFER_OPAQUE]], %swift.type* [[DEST_TYPE]])
@@ -372,7 +372,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* [[SRC_TYPE]] to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 6
+// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 2
 // CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:   [[INITWITHCOPY:%.*]] = bitcast i8* [[VW]] to %swift.opaque* (%swift.opaque*, %swift.opaque*, %swift.type*)*
 // CHECK:   call %swift.opaque* [[INITWITHCOPY]](%swift.opaque* [[DESTBUFFER_OPAQUE]], %swift.opaque* [[SRCBUFFER_OPAQUE]], %swift.type* [[SRC_TYPE]])
@@ -391,7 +391,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* [[DEST_TYPE]] to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 4
+// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 1
 // CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:   [[DESTROY:%.*]] = bitcast i8* [[VW]] to void (%swift.opaque*, %swift.type*)*
 // CHECK:   call void [[DESTROY]](%swift.opaque* [[TMPBUFFER_OPAQUE]], %swift.type* [[DEST_TYPE]])
@@ -408,7 +408,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* [[SRC_TYPE]] to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 6
+// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 2
 // CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:   [[INITWITHCOPY:%.*]] = bitcast i8* [[VW]] to %swift.opaque* (%swift.opaque*, %swift.opaque*, %swift.type*)*
 // CHECK:   call %swift.opaque* [[INITWITHCOPY]](%swift.opaque* [[DESTBUFFER_OPAQUE]], %swift.opaque* [[SRCBUFFER_OPAQUE]], %swift.type* [[SRC_TYPE]])
@@ -445,7 +445,7 @@
 // CHECK:   [[CAST_ADDR:%.*]] = bitcast %swift.type* [[ARG_TYPE]] to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST_ADDR]], {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 12
+// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 6
 // CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:   [[INITWITHTAKEBUFFER:%.*]] = bitcast i8* [[VW]]
 // CHECK:     call %swift.opaque* [[INITWITHTAKEBUFFER]]({{.*}} [[BUFFER_LOCAL_ADDR]], {{.*}} [[BUFFER_ARG_ADDR]], %swift.type* [[ARG_TYPE]])
@@ -474,7 +474,7 @@
 // CHECK:   [[CAST_ADDR:%.*]] = bitcast %swift.type* [[ARG_TYPE]] to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST_ADDR]], {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 12
+// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 6
 // CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
 // CHECK:   [[INITWITHTAKEBUFFER:%.*]] = bitcast i8* [[VW]]
 // CHECK:     call %swift.opaque* [[INITWITHTAKEBUFFER]]({{.*}} [[BUFFER_LOCAL_ADDR]], {{.*}} [[BUFFER_ARG_ADDR]], %swift.type* [[ARG_TYPE]])
@@ -503,8 +503,7 @@
 // CHECK:   [[CAST_ADDR:%.*]] = bitcast %swift.type* [[ARG_TYPE]] to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST_ADDR]], {{(i64|i32)}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[VW_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 1
-// CHECK:   [[VW:%.*]] = load i8*, i8** [[VW_ADDR]]
+// CHECK:   [[VW:%.*]] = load i8*, i8** [[VWT]]
 // CHECK:   [[INITWITHCOPYBUFFER:%.*]] = bitcast i8* [[VW]]
 // CHECK:     call %swift.opaque* [[INITWITHCOPYBUFFER]]({{.*}} [[BUFFER_LOCAL_ADDR]], {{.*}} [[BUFFER_ARG_ADDR]], %swift.type* [[ARG_TYPE]])
 // CHECK:   ret void
diff --git a/test/IRGen/extension_type_metadata_linking.swift b/test/IRGen/extension_type_metadata_linking.swift
index 51e6adb..c874eda 100644
--- a/test/IRGen/extension_type_metadata_linking.swift
+++ b/test/IRGen/extension_type_metadata_linking.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -c  %S/Inputs/simple.swift %s -O  -num-threads 1 -o %t/simple.o -o %t/extension_type_metadata_linking.o
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -c  %S/Inputs/main.swift -o %t/main.o
 // RUN: %target-build-swift %t/extension_type_metadata_linking.o %t/simple.o %t/main.o -o %t/main.out
diff --git a/test/IRGen/fixed_size_buffer_peepholes.sil b/test/IRGen/fixed_size_buffer_peepholes.sil
index 943dc05..1d2917b 100644
--- a/test/IRGen/fixed_size_buffer_peepholes.sil
+++ b/test/IRGen/fixed_size_buffer_peepholes.sil
@@ -11,7 +11,7 @@
 // CHECK:  [[PTR:%.*]] = bitcast %swift.type* [[TYPE]] to i8***
 // CHECK:  [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[PTR]], {{(i64|i32)}} -1
 // CHECK:  [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:  [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], {{(i64|i32)}} 6
+// CHECK:  [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], {{(i64|i32)}} 2
 // CHECK:  [[WITNESS:%.*]] = load i8*, i8** [[WITNESS_ADDR]]
 // CHECK:  [[INITWITHCOPY:%.*]] = bitcast i8* [[WITNESS]] to %swift.opaque* (%swift.opaque*, %swift.opaque*, %swift.type*)*
 // CHECK:  call %swift.opaque* [[INITWITHCOPY]](
diff --git a/test/IRGen/foreign_class_extension.swift b/test/IRGen/foreign_class_extension.swift
index 7a95fe2..e8bc213 100644
--- a/test/IRGen/foreign_class_extension.swift
+++ b/test/IRGen/foreign_class_extension.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/generic_casts.swift b/test/IRGen/generic_casts.swift
index dbd5f1e..8e32996 100644
--- a/test/IRGen/generic_casts.swift
+++ b/test/IRGen/generic_casts.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -primary-file %s -emit-ir -disable-objc-attr-requires-foundation-module | %FileCheck %s
 
@@ -38,7 +38,7 @@
 	// CHECK: [[TYPE_ADDR:%.*]] = bitcast %swift.type* %T to i8***
   // CHECK: [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[TYPE_ADDR]], i64 -1
   // CHECK: [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-  // CHECK: [[SIZE_WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 17
+  // CHECK: [[SIZE_WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 11
   // CHECK: [[SIZE_WITNESS:%.*]] = load i8*, i8** [[SIZE_WITNESS_ADDR]]
   // CHECK: [[SIZE:%.*]] = ptrtoint i8* [[SIZE_WITNESS]]
   // CHECK: [[T_ALLOCA:%.*]] = alloca i8, {{.*}} [[SIZE]], align 16
diff --git a/test/IRGen/generic_classes.sil b/test/IRGen/generic_classes.sil
index d5ef36b..dc2fdf3 100644
--- a/test/IRGen/generic_classes.sil
+++ b/test/IRGen/generic_classes.sil
@@ -352,10 +352,10 @@
 // CHECK:   [[T0:%.*]] = bitcast %swift.type* %B to i8***
 // CHECK:   [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], i64 -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[T1]], align 8
-// CHECK:   [[T0:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 17
+// CHECK:   [[T0:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 11
 // CHECK:   [[T1:%.*]] = load i8*, i8** [[T0]], align 8
 // CHECK:   [[SIZE:%.*]] = ptrtoint i8* [[T1]] to i64
-// CHECK:   [[T0:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 18
+// CHECK:   [[T0:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 12
 // CHECK:   [[T1:%.*]] = load i8*, i8** [[T0]], align 8
 // CHECK:   [[T2:%.*]] = ptrtoint i8* [[T1]] to i64
 // CHECK:   [[ALIGN:%.*]] = and i64 [[T2]], 65535
diff --git a/test/IRGen/generic_classes_objc.sil b/test/IRGen/generic_classes_objc.sil
index 087ae5b..5209289 100644
--- a/test/IRGen/generic_classes_objc.sil
+++ b/test/IRGen/generic_classes_objc.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/generic_structs.sil b/test/IRGen/generic_structs.sil
index 33a52d9..757207f 100644
--- a/test/IRGen/generic_structs.sil
+++ b/test/IRGen/generic_structs.sil
@@ -29,7 +29,7 @@
 // CHECK: @_T015generic_structs13SingleDynamicVMP = internal global <{ {{.*}} }> <{
 // -- template header
 // CHECK:   %swift.type* (%swift.type_pattern*, i8**)* @create_generic_metadata_SingleDynamic,
-// CHECK:   i32 240, i16 1, i16 8, [{{[0-9]+}} x i8*] zeroinitializer,
+// CHECK:   i32 192, i16 1, i16 8, [{{[0-9]+}} x i8*] zeroinitializer,
 // -- placeholder for vwtable pointer
 // CHECK:   i8* null,
 // -- address point
@@ -37,7 +37,7 @@
 // -- field offset vector; generic parameter vector
 // CHECK:   i64 0, %swift.type* null,
 // -- tail-allocated vwtable pattern
-// CHECK:   i8* bitcast (void ([24 x i8]*, %swift.type*)* @_T015generic_structs13SingleDynamicVwXX to i8*),
+// CHECK:   i8* bitcast (%swift.opaque* ([24 x i8]*, [24 x i8]*, %swift.type*)* @_T015generic_structs13SingleDynamicVwCP to i8*),
 // -- ...
 // -- placeholder for size, flags, stride
 // CHECK:   i8* null, i8* null, i8* null
@@ -169,16 +169,6 @@
 }
 
 // Check that we directly delegate buffer witnesses to a single dynamic field:
-//   destroyBuffer
-// CHECK-LABEL: define linkonce_odr hidden void @_T015generic_structs13SingleDynamicVwXX([24 x i8]* %buffer, %swift.type* %"SingleDynamic<T>") {{.*}} {
-// CHECK:      %T = load %swift.type*,
-// CHECK-NEXT: [[T0:%.*]] = bitcast %swift.type* %T to i8***
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], i64 -1
-// CHECK-NEXT: %T.valueWitnesses = load i8**, i8*** [[T1]]
-// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** %T.valueWitnesses
-// CHECK-NEXT: [[FN:%.*]] = bitcast i8* [[T1]] to void ([24 x i8]*, %swift.type*)*
-// CHECK-NEXT: call void [[FN]]([24 x i8]* %buffer, %swift.type* %T)
-// CHECK-NEXT: ret void
 
 //   initializeBufferWithCopyOfBuffer
 // CHECK-LABEL: define linkonce_odr hidden %swift.opaque* @_T015generic_structs13SingleDynamicVwCP([24 x i8]* %dest, [24 x i8]* %src, %swift.type* %"SingleDynamic<T>") {{.*}} {
@@ -186,85 +176,13 @@
 // CHECK-NEXT: [[T0:%.*]] = bitcast %swift.type* %T to i8***
 // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], i64 -1
 // CHECK-NEXT: %T.valueWitnesses = load i8**, i8*** [[T1]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds i8*, i8** %T.valueWitnesses, i32 1
-// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]],
+// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** %T.valueWitnesses,
 // CHECK-NEXT: [[FN:%.*]] = bitcast i8* [[T1]] to %swift.opaque* ([24 x i8]*, [24 x i8]*, %swift.type*)*
 // CHECK-NEXT: [[T0:%.*]] = call %swift.opaque* [[FN]]([24 x i8]* %dest, [24 x i8]* %src, %swift.type* %T)
 // CHECK-NEXT: [[T1:%.*]] = bitcast %swift.opaque* [[T0]] to {{.*}}
 // CHECK-NEXT: [[T2:%.*]] = bitcast {{.*}} [[T1]] to %swift.opaque*
 // CHECK-NEXT: ret %swift.opaque* [[T2]]
 
-//   projectBuffer
-// CHECK-LABEL: define linkonce_odr hidden %swift.opaque* @_T015generic_structs13SingleDynamicVwpr([24 x i8]* %buffer, %swift.type* %"SingleDynamic<T>") {{.*}} {
-// CHECK:      %T = load %swift.type*,
-// CHECK-NEXT: [[T0:%.*]] = bitcast %swift.type* %T to i8***
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], i64 -1
-// CHECK-NEXT: %T.valueWitnesses = load i8**, i8*** [[T1]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds i8*, i8** %T.valueWitnesses, i32 2
-// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]]
-// CHECK-NEXT: [[FN:%.*]] = bitcast i8* [[T1]] to %swift.opaque* ([24 x i8]*, %swift.type*)*
-// CHECK-NEXT: [[T0:%.*]] = call %swift.opaque* [[FN]]([24 x i8]* %buffer, %swift.type* %T)
-// CHECK-NEXT: [[T1:%.*]] = bitcast %swift.opaque* [[T0]] to {{.*}}
-// CHECK-NEXT: [[T2:%.*]] = bitcast {{.*}} [[T1]] to %swift.opaque*
-// CHECK-NEXT: ret %swift.opaque* [[T2]]
-
-//   deallocateBuffer
-// CHECK-LABEL: define linkonce_odr hidden void @_T015generic_structs13SingleDynamicVwde([24 x i8]* %buffer, %swift.type* %"SingleDynamic<T>") {{.*}} {
-// CHECK:      %T = load %swift.type*,
-// CHECK-NEXT: [[T0:%.*]] = bitcast %swift.type* %T to i8***
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], i64 -1
-// CHECK-NEXT: %T.valueWitnesses = load i8**, i8*** [[T1]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds i8*, i8** %T.valueWitnesses, i32 3
-// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]]
-// CHECK-NEXT: [[FN:%.*]] = bitcast i8* [[T1]] to void ([24 x i8]*, %swift.type*)*
-// CHECK-NEXT: call void [[FN]]([24 x i8]* %buffer, %swift.type* %T)
-// CHECK-NEXT: ret void
-
-//   initializeBufferWithCopy
-// CHECK-LABEL: define linkonce_odr hidden %swift.opaque* @_T015generic_structs13SingleDynamicVwCp([24 x i8]* %dest, %swift.opaque* %src, %swift.type* %"SingleDynamic<T>") {{.*}} {
-// CHECK:      [[T0:%.*]] = bitcast %swift.opaque* %src to {{.*}}*
-// CHECK:      [[SRC:%.*]] = bitcast {{.*}}* [[T0]] to %swift.opaque*
-// CHECK:      %T = load %swift.type*,
-// CHECK-NEXT: [[T0:%.*]] = bitcast %swift.type* %T to i8***
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], i64 -1
-// CHECK-NEXT: %T.valueWitnesses = load i8**, i8*** [[T1]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds i8*, i8** %T.valueWitnesses, i32 5
-// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]],
-// CHECK-NEXT: [[FN:%.*]] = bitcast i8* [[T1]] to %swift.opaque* ([24 x i8]*, %swift.opaque*, %swift.type*)*
-// CHECK-NEXT: [[T0:%.*]] = call %swift.opaque* [[FN]]([24 x i8]* %dest, %swift.opaque* [[SRC]], %swift.type* %T)
-// CHECK-NEXT: [[T1:%.*]] = bitcast %swift.opaque* [[T0]] to {{.*}}*
-// CHECK-NEXT: [[T2:%.*]] = bitcast {{.*}}* [[T1]] to %swift.opaque*
-// CHECK-NEXT: ret %swift.opaque* [[T2]]
-
-//   initializeBufferWithTake
-// CHECK-LABEL: define linkonce_odr hidden %swift.opaque* @_T015generic_structs13SingleDynamicVwTk([24 x i8]* %dest, %swift.opaque* %src, %swift.type* %"SingleDynamic<T>") {{.*}} {
-// CHECK:      [[T0:%.*]] = bitcast %swift.opaque* %src to {{.*}}*
-// CHECK:      [[SRC:%.*]] = bitcast {{.*}}* [[T0]] to %swift.opaque*
-// CHECK:      %T = load %swift.type*,
-// CHECK-NEXT: [[T0:%.*]] = bitcast %swift.type* %T to i8***
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], i64 -1
-// CHECK-NEXT: %T.valueWitnesses = load i8**, i8*** [[T1]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds i8*, i8** %T.valueWitnesses, i32 8
-// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]],
-// CHECK-NEXT: [[FN:%.*]] = bitcast i8* [[T1]] to %swift.opaque* ([24 x i8]*, %swift.opaque*, %swift.type*)*
-// CHECK-NEXT: [[T0:%.*]] = call %swift.opaque* [[FN]]([24 x i8]* %dest, %swift.opaque* [[SRC]], %swift.type* %T)
-// CHECK-NEXT: [[T1:%.*]] = bitcast %swift.opaque* [[T0]] to {{.*}}*
-// CHECK-NEXT: [[T2:%.*]] = bitcast {{.*}}* [[T1]] to %swift.opaque*
-// CHECK-NEXT: ret %swift.opaque* [[T2]]
-
-//   allocateBuffer
-// CHECK-LABEL: define linkonce_odr hidden %swift.opaque* @_T015generic_structs13SingleDynamicVwal([24 x i8]* %buffer, %swift.type* %"SingleDynamic<T>") {{.*}} {
-// CHECK:      %T = load %swift.type*,
-// CHECK-NEXT: [[T0:%.*]] = bitcast %swift.type* %T to i8***
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], i64 -1
-// CHECK-NEXT: %T.valueWitnesses = load i8**, i8*** [[T1]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds i8*, i8** %T.valueWitnesses, i32 11
-// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]]
-// CHECK-NEXT: [[FN:%.*]] = bitcast i8* [[T1]] to %swift.opaque* ([24 x i8]*, %swift.type*)*
-// CHECK-NEXT: [[T0:%.*]] = call %swift.opaque* [[FN]]([24 x i8]* %buffer, %swift.type* %T)
-// CHECK-NEXT: [[T1:%.*]] = bitcast %swift.opaque* [[T0]] to {{.*}}
-// CHECK-NEXT: [[T2:%.*]] = bitcast {{.*}} [[T1]] to %swift.opaque*
-// CHECK-NEXT: ret %swift.opaque* [[T2]]
 
 //   initializeBufferWithTakeOfBuffer
 // CHECK-LABEL: define linkonce_odr hidden %swift.opaque* @_T015generic_structs13SingleDynamicVwTK([24 x i8]* %dest, [24 x i8]* %src, %swift.type* %"SingleDynamic<T>") {{.*}} {
@@ -272,7 +190,7 @@
 // CHECK-NEXT: [[T0:%.*]] = bitcast %swift.type* %T to i8***
 // CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], i64 -1
 // CHECK-NEXT: %T.valueWitnesses = load i8**, i8*** [[T1]]
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds i8*, i8** %T.valueWitnesses, i32 12
+// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds i8*, i8** %T.valueWitnesses, i32 6
 // CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]],
 // CHECK-NEXT: [[FN:%.*]] = bitcast i8* [[T1]] to %swift.opaque* ([24 x i8]*, [24 x i8]*, %swift.type*)*
 // CHECK-NEXT: [[T0:%.*]] = call %swift.opaque* [[FN]]([24 x i8]* %dest, [24 x i8]* %src, %swift.type* %T)
diff --git a/test/IRGen/generic_tuples.swift b/test/IRGen/generic_tuples.swift
index 4da0501..39a146d 100644
--- a/test/IRGen/generic_tuples.swift
+++ b/test/IRGen/generic_tuples.swift
@@ -17,19 +17,19 @@
 // CHECK: [[TYPE_ADDR:%.*]] = bitcast %swift.type* %T to i8***
 // CHECK: [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[TYPE_ADDR]], i64 -1
 // CHECK: [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK: [[SIZE_WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 17
+// CHECK: [[SIZE_WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 11
 // CHECK: [[SIZE_WITNESS:%.*]] = load i8*, i8** [[SIZE_WITNESS_ADDR]]
 // CHECK: [[SIZE:%.*]] = ptrtoint i8* [[SIZE_WITNESS]]
 // CHECK: [[X_ALLOCA:%.*]] = alloca i8, {{.*}} [[SIZE]], align 16
 // CHECK: [[X_TMP:%.*]] = bitcast i8* [[X_ALLOCA]] to %swift.opaque*
-// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 6
+// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 2
 // CHECK-NEXT: [[WITNESS:%.*]] = load i8*, i8** [[WITNESS_ADDR]], align 8
 // CHECK-NEXT: [[INITIALIZE_WITH_COPY:%.*]] = bitcast i8* [[WITNESS]] to [[OPAQUE]]* ([[OPAQUE]]*, [[OPAQUE]]*, [[TYPE]]*)*
 // CHECK-NEXT: [[X:%.*]] = call [[OPAQUE]]* [[INITIALIZE_WITH_COPY]]([[OPAQUE]]* [[X_TMP]], [[OPAQUE]]* {{.*}}, [[TYPE]]* %T)
 //   Copy 'x' into the first result.
 // CHECK-NEXT: call [[OPAQUE]]* [[INITIALIZE_WITH_COPY]]([[OPAQUE]]* %0, [[OPAQUE]]* [[X_TMP]], [[TYPE]]* %T)
 //   Copy 'x' into the second element.
-// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 9
+// CHECK-NEXT: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 4
 // CHECK-NEXT: [[WITNESS:%.*]] = load i8*, i8** [[WITNESS_ADDR]], align 8
 // CHECK-NEXT: [[TAKE_FN:%.*]] = bitcast i8* [[WITNESS]] to [[OPAQUE]]* ([[OPAQUE]]*, [[OPAQUE]]*, [[TYPE]]*)*
 // CHECK-NEXT: call [[OPAQUE]]* [[TAKE_FN]]([[OPAQUE]]* %1, [[OPAQUE]]* [[X_TMP]], [[TYPE]]* %T)
diff --git a/test/IRGen/global_resilience.sil b/test/IRGen/global_resilience.sil
index 52d9407..d7b7666 100644
--- a/test/IRGen/global_resilience.sil
+++ b/test/IRGen/global_resilience.sil
@@ -124,7 +124,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* %0 to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{.*}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[FLAGS_ADDR:%.*]] = getelementptr inbounds i8*, i8** %.valueWitnesses, i32 18
+// CHECK:   [[FLAGS_ADDR:%.*]] = getelementptr inbounds i8*, i8** %.valueWitnesses, i32 12
 // CHECK:   [[FLAGSWITNESS:%.*]] = load i8*, i8** [[FLAGS_ADDR]]
 // CHECK:   [[FLAGS:%.*]] = ptrtoint i8* [[FLAGSWITNESS]] to i{{.*}}
 // CHECK:   [[ISNOTINLINE:%.*]] = and {{.*}} [[FLAGS]], 131072
@@ -135,7 +135,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* %0 to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{.*}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[SIZE_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 17
+// CHECK:   [[SIZE_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 11
 // CHECK:   [[SIZEWITNESS:%.*]] = load i8*, i8** [[SIZE_ADDR]]
 // CHECK:   [[SIZE:%.*]] = ptrtoint i8* [[SIZEWITNESS]]
 // CHECK:   [[ALIGN:%.*]] = and {{.*}} [[FLAGS]], 65535
@@ -154,7 +154,7 @@
 // CHECK:   [[CAST:%.*]] = bitcast %swift.type* %0 to i8***
 // CHECK:   [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[CAST]], {{.*}} -1
 // CHECK:   [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK:   [[FLAGS_ADDR:%.*]] = getelementptr inbounds i8*, i8** %.valueWitnesses, i32 18
+// CHECK:   [[FLAGS_ADDR:%.*]] = getelementptr inbounds i8*, i8** %.valueWitnesses, i32 12
 // CHECK:   [[FLAGSWITNESS:%.*]] = load i8*, i8** [[FLAGS_ADDR]]
 // CHECK:   [[FLAGS:%.*]] = ptrtoint i8* [[FLAGSWITNESS]] to i{{.*}}
 // CHECK:   [[ISNOTINLINE:%.*]] = and {{.*}} [[FLAGS]], 131072
diff --git a/test/IRGen/indexing.sil b/test/IRGen/indexing.sil
index a1e508a..6135a88 100644
--- a/test/IRGen/indexing.sil
+++ b/test/IRGen/indexing.sil
@@ -45,7 +45,7 @@
 // CHECK:        %3 = bitcast %swift.type* %T to i8***
 // CHECK-NEXT:   %4 = getelementptr inbounds i8**, i8*** %3, i64 -1
 // CHECK-NEXT:   %T.valueWitnesses = load i8**, i8*** %4, align 8
-// CHECK-NEXT:   %5 = getelementptr inbounds i8*, i8** %T.valueWitnesses, i32 19
+// CHECK-NEXT:   %5 = getelementptr inbounds i8*, i8** %T.valueWitnesses, i32 13
 // CHECK-NEXT:   %6 = load i8*, i8** %5, align 8
 // CHECK-NEXT:   %stride = ptrtoint i8* %6 to i64
 // CHECK-NEXT:   %7 = mul nsw i64 %1, %stride
diff --git a/test/IRGen/keypaths_objc.sil b/test/IRGen/keypaths_objc.sil
index 28e7d01..8ec51e2 100644
--- a/test/IRGen/keypaths_objc.sil
+++ b/test/IRGen/keypaths_objc.sil
@@ -6,6 +6,7 @@
 
 class C: NSObject {
   dynamic var x: NSString { get }
+  @sil_stored final var stored: Int
   override init()
 }
 
@@ -18,6 +19,11 @@
 // CHECK-SAME: i32 536870914
 // CHECK-SAME: i8** @"\01L_selector(x)"
 
+// CHECK: [[KEYPATH_B:@keypath.*]] = private global
+// --             0x5ffffffd: class stored property with indirect offset
+// CHECK-SAME: i32 1610612733,
+// CHECK-SAME: @_T013keypaths_objc1CC6storedSivWvd
+
 // CHECK-LABEL: define swiftcc void @objc_only_property()
 sil @objc_only_property : $@convention(thin) () -> () {
 entry:
@@ -35,3 +41,10 @@
 entry(%0 : $@objc_metatype C.Type):
   unreachable
 }
+
+sil @objc_stored_property : $@convention(thin) () -> () {
+entry:
+  // CHECK: call %swift.refcounted* @swift_getKeyPath({{.*}} [[KEYPATH_B]]
+  %b = keypath $KeyPath<C, Int>, (objc "stored"; root $C; stored_property #C.stored : $Int)
+  unreachable
+}
diff --git a/test/IRGen/lazy_globals.swift b/test/IRGen/lazy_globals.swift
index 953d0af..a24b5d8 100644
--- a/test/IRGen/lazy_globals.swift
+++ b/test/IRGen/lazy_globals.swift
@@ -39,8 +39,8 @@
 // CHECK:   %0 = call swiftcc i8* @_T012lazy_globals1xSifau()
 // CHECK:   %1 = bitcast i8* %0 to %TSi*
 // CHECK:   %._value = getelementptr inbounds %TSi, %TSi* %1, i32 0, i32 0
-// CHECK:   %2 = load i64, i64* %._value, align 8
-// CHECK:   ret i64 %2
+// CHECK:   [[V:%.*]] = load i64, i64* %._value, align 8
+// CHECK:   ret i64 [[V]]
 // CHECK: }
 func getX() -> Int { return x }
 
diff --git a/test/IRGen/lifetime.sil b/test/IRGen/lifetime.sil
index 4720969..bb5a1c4 100644
--- a/test/IRGen/lifetime.sil
+++ b/test/IRGen/lifetime.sil
@@ -22,19 +22,19 @@
 // CHECK: [[TYPE_ADDR:%.*]] = bitcast %swift.type* %T to i8***
 // CHECK-NEXT: [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[TYPE_ADDR]], {{(i32|i64)}} -1
 // CHECK-NEXT: [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK-NEXT: [[SIZE_WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 17
+// CHECK-NEXT: [[SIZE_WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 11
 // CHECK-NEXT: [[SIZE_WITNESS:%.*]] = load i8*, i8** [[SIZE_WITNESS_ADDR]]
 // CHECK-NEXT: [[SIZE:%.*]] = ptrtoint i8* [[SIZE_WITNESS]]
 // CHECK-NEXT: [[Y_ALLOCA:%.*]] = alloca i8, {{.*}} [[SIZE]], align 16
 // CHECK-NEXT: call void @llvm.lifetime.start({{(i32|i64)}} -1, i8* [[Y_ALLOCA]])
 // CHECK-NEXT: [[Y_TMP:%.*]] = bitcast i8* [[Y_ALLOCA]] to %swift.opaque*
 //   Copy 'x' into 'y'.
-// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 6
+// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 2
 // CHECK-NEXT: [[T4:%.*]] = load i8*, i8** [[T3]], align
 // CHECK-NEXT: [[INIT_WITH_COPY_FN:%.*]] = bitcast i8* [[T4]] to [[OPAQUE]]* ([[OPAQUE]]*, [[OPAQUE]]*, [[TYPE]]*)*
 // CHECK-NEXT: [[Y:%.*]] = call [[OPAQUE]]* [[INIT_WITH_COPY_FN]]([[OPAQUE]]* [[Y_TMP]], [[OPAQUE]]* [[X:%.*]], [[TYPE]]* %T)
 //   Destroy 'y'.
-// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 4
+// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 1
 // CHECK-NEXT: [[T4:%.*]] = load i8*, i8** [[T3]], align
 // CHECK-NEXT: [[DESTROY_FN:%.*]] = bitcast i8* [[T4]] to void ([[OPAQUE]]*, [[TYPE]]*)*
 // CHECK-NEXT: call void [[DESTROY_FN]]([[OPAQUE]]* [[Y_TMP]], [[TYPE]]* %T)
@@ -61,24 +61,24 @@
 // CHECK: [[TYPE_ADDR:%.*]] = bitcast %swift.type* %T to i8***
 // CHECK-NEXT: [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[TYPE_ADDR]], {{(i32|i64)}} -1
 // CHECK-NEXT: [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
-// CHECK-NEXT: [[SIZE_WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 17
+// CHECK-NEXT: [[SIZE_WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 11
 // CHECK-NEXT: [[SIZE_WITNESS:%.*]] = load i8*, i8** [[SIZE_WITNESS_ADDR]]
 // CHECK-NEXT: [[SIZE:%.*]] = ptrtoint i8* [[SIZE_WITNESS]]
 // CHECK-NEXT: [[Y_ALLOCA:%.*]] = alloca i8, {{.*}} [[SIZE]], align 16
 // CHECK-NEXT: call void @llvm.lifetime.start({{(i32|i64)}} -1, i8* [[Y_ALLOCA]])
 // CHECK-NEXT: [[Y_TMP:%.*]] = bitcast i8* [[Y_ALLOCA]] to %swift.opaque*
 //   Copy 'x' into 'y'.
-// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 6
+// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 2
 // CHECK-NEXT: [[T4:%.*]] = load i8*, i8** [[T3]], align
 // CHECK-NEXT: [[INIT_WITH_COPY_FN:%.*]] = bitcast i8* [[T4]] to [[OPAQUE]]* ([[OPAQUE]]*, [[OPAQUE]]*, [[TYPE]]*)*
 // CHECK-NEXT: [[Y:%.*]] = call [[OPAQUE]]* [[INIT_WITH_COPY_FN]]([[OPAQUE]]* [[Y_TMP]], [[OPAQUE]]* [[X:%.*]], [[TYPE]]* %T)
 //   Destroy 'y'.
-// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 4
+// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 1
 // CHECK-NEXT: [[T4:%.*]] = load i8*, i8** [[T3]], align
 // CHECK-NEXT: [[DESTROY_FN:%.*]] = bitcast i8* [[T4]] to void ([[OPAQUE]]*, [[TYPE]]*)*
 // CHECK-NEXT: call void [[DESTROY_FN]]([[OPAQUE]]* [[Y_TMP]], [[TYPE]]* %T)
 //   Copy 'x' into 'y' again, this time as a take.
-// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 9
+// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 4
 // CHECK-NEXT: [[T4:%.*]] = load i8*, i8** [[T3]], align
 // CHECK-NEXT: [[TAKE_FN:%.*]] = bitcast i8* [[T4]] to [[OPAQUE]]* ([[OPAQUE]]*, [[OPAQUE]]*, [[TYPE]]*)*
 // CHECK-NEXT: call [[OPAQUE]]* [[TAKE_FN]]([[OPAQUE]]* [[Y_TMP]], [[OPAQUE]]* [[X]], [[TYPE]]* %T)
diff --git a/test/IRGen/linker_options_objc.swift b/test/IRGen/linker_options_objc.swift
index 1546ce0..aea3db7 100644
--- a/test/IRGen/linker_options_objc.swift
+++ b/test/IRGen/linker_options_objc.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swiftc_driver -emit-module -o %t -module-name Empty -module-link-name swiftEmpty %S/../Inputs/empty.swift
 // RUN: %target-swiftc_driver %s -I %t -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/local_types.swift b/test/IRGen/local_types.swift
index 5dce78c..0049936 100644
--- a/test/IRGen/local_types.swift
+++ b/test/IRGen/local_types.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-module %S/Inputs/local_types_helper.swift -o %t
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-ir -parse-as-library %s -I %t > %t.ll
 // RUN: %FileCheck %s < %t.ll
diff --git a/test/IRGen/meta_meta_type.swift b/test/IRGen/meta_meta_type.swift
index 908cf2a..4ba4345 100644
--- a/test/IRGen/meta_meta_type.swift
+++ b/test/IRGen/meta_meta_type.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -primary-file %s -emit-ir | %FileCheck -check-prefix=CHECKIR %s
diff --git a/test/IRGen/metatype.sil b/test/IRGen/metatype.sil
index 7e5f06f..6d82c1d 100644
--- a/test/IRGen/metatype.sil
+++ b/test/IRGen/metatype.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -sdk %S/Inputs -I %t -emit-ir %s | %FileCheck %s
 
diff --git a/test/IRGen/module_hash.swift b/test/IRGen/module_hash.swift
index c0b5817..97dccca 100644
--- a/test/IRGen/module_hash.swift
+++ b/test/IRGen/module_hash.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 
 // Test with a single output file
diff --git a/test/IRGen/multithread_module.swift b/test/IRGen/multithread_module.swift
index 32bc856..4d68059 100644
--- a/test/IRGen/multithread_module.swift
+++ b/test/IRGen/multithread_module.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil %S/Inputs/multithread_module/main.swift -emit-ir -o %t/main.ll %s -o %t/mt_module.ll -num-threads 2 -O -g -module-name test
 // RUN: %FileCheck --check-prefix=CHECK-MAINLL %s <%t/main.ll
diff --git a/test/IRGen/newtype.swift b/test/IRGen/newtype.swift
index 16bceae..e1ad051 100644
--- a/test/IRGen/newtype.swift
+++ b/test/IRGen/newtype.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t -I %S/../IDE/Inputs/custom-modules) %s -emit-ir | %FileCheck %s
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t -I %S/../IDE/Inputs/custom-modules) %s -emit-ir -O | %FileCheck %s -check-prefix=OPT
diff --git a/test/IRGen/objc.swift b/test/IRGen/objc.swift
index d953fba..e930870 100644
--- a/test/IRGen/objc.swift
+++ b/test/IRGen/objc.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -primary-file %s -emit-ir -disable-objc-attr-requires-foundation-module | %FileCheck %s
 
diff --git a/test/IRGen/objc_alloc.sil b/test/IRGen/objc_alloc.sil
index d378e5c..f21925b 100644
--- a/test/IRGen/objc_alloc.sil
+++ b/test/IRGen/objc_alloc.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -assume-parsing-unqualified-ownership-sil %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/objc_attr_NSManaged.sil b/test/IRGen/objc_attr_NSManaged.sil
index 23bbd33..66ee7f7 100644
--- a/test/IRGen/objc_attr_NSManaged.sil
+++ b/test/IRGen/objc_attr_NSManaged.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
@@ -27,7 +27,7 @@
 // The getter/setter should not show up in the Swift metadata.
 /* FIXME: sil_vtable parser picks the wrong 'init' overload. Both vtable entries
    ought to be nonnull here. rdar://problem/19572342 */
-// CHECK: @_T019objc_attr_NSManaged10SwiftGizmoCMf = internal global <{ {{.*}} }> <{ void (%T19objc_attr_NSManaged10SwiftGizmoC*)* @_T019objc_attr_NSManaged10SwiftGizmoCfD, i8** @_T0BOWV, i64 ptrtoint (%objc_class* @"OBJC_METACLASS_$__TtC19objc_attr_NSManaged10SwiftGizmo" to i64), %objc_class* @"OBJC_CLASS_$_Gizmo", %swift.opaque* @_objc_empty_cache, %swift.opaque* null, i64 add (i64 ptrtoint ({ i32, i32, i32, i32, i8*, i8*, { i32, i32, [2 x { i8*, i8*, i8* }] }*, i8*, i8*, i8*, { i32, i32, [1 x { i8*, i8* }] }* }* @_DATA__TtC19objc_attr_NSManaged10SwiftGizmo to i64), i64 1), i32 1, i32 0, i32 16, i16 7, i16 0, i32 112, i32 16, {{.*}}* @_T019objc_attr_NSManaged10SwiftGizmoCMn {{.*}}, i8* null, %T19objc_attr_NSManaged10SwiftGizmoC* (i64, %T19objc_attr_NSManaged10SwiftGizmoC*)* @_T019objc_attr_NSManaged10SwiftGizmoCACSi7bellsOn_tcfc, i8* bitcast (void ()* @swift_deletedMethodError to i8*) }>
+// CHECK: @_T019objc_attr_NSManaged10SwiftGizmoCMf = internal global <{ {{.*}} }> <{ void (%T19objc_attr_NSManaged10SwiftGizmoC*)* @_T019objc_attr_NSManaged10SwiftGizmoCfD, i8** @_T0BOWV, i64 ptrtoint (%objc_class* @"OBJC_METACLASS_$__TtC19objc_attr_NSManaged10SwiftGizmo" to i64), %objc_class* @"OBJC_CLASS_$_Gizmo", %swift.opaque* @_objc_empty_cache, %swift.opaque* null, i64 add (i64 ptrtoint ({ i32, i32, i32, i32, i8*, i8*, { i32, i32, [2 x { i8*, i8*, i8* }] }*, i8*, i8*, i8*, { i32, i32, [1 x { i8*, i8* }] }* }* @_DATA__TtC19objc_attr_NSManaged10SwiftGizmo to i64), i64 1), i32 1, i32 0, i32 8, i16 7, i16 0, i32 112, i32 16, {{.*}}* @_T019objc_attr_NSManaged10SwiftGizmoCMn {{.*}}, i8* null, %T19objc_attr_NSManaged10SwiftGizmoC* (i64, %T19objc_attr_NSManaged10SwiftGizmoC*)* @_T019objc_attr_NSManaged10SwiftGizmoCACSi7bellsOn_tcfc, i8* bitcast (void ()* @swift_deletedMethodError to i8*) }>
 
 @objc class SwiftGizmo : Gizmo {
   @objc @NSManaged var x: X
diff --git a/test/IRGen/objc_bridge.swift b/test/IRGen/objc_bridge.swift
index 32c05d4..1f60e3c 100644
--- a/test/IRGen/objc_bridge.swift
+++ b/test/IRGen/objc_bridge.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-ir -primary-file %s | %FileCheck %s
 
diff --git a/test/IRGen/objc_casts.sil b/test/IRGen/objc_casts.sil
index cdd3993..20d38af 100644
--- a/test/IRGen/objc_casts.sil
+++ b/test/IRGen/objc_casts.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -assume-parsing-unqualified-ownership-sil -primary-file %s -emit-ir | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize %s
 
diff --git a/test/IRGen/objc_class_export.swift b/test/IRGen/objc_class_export.swift
index 1ec1dbe..b502a83 100644
--- a/test/IRGen/objc_class_export.swift
+++ b/test/IRGen/objc_class_export.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -sdk %S/Inputs -I %t -primary-file %s -emit-ir -disable-objc-attr-requires-foundation-module | %FileCheck %s
 
diff --git a/test/IRGen/objc_dealloc.sil b/test/IRGen/objc_dealloc.sil
index 4448c41..2946c8c 100644
--- a/test/IRGen/objc_dealloc.sil
+++ b/test/IRGen/objc_dealloc.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -assume-parsing-unqualified-ownership-sil %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/objc_enum_multi_file.swift b/test/IRGen/objc_enum_multi_file.swift
index c9c071b..8a44c59 100644
--- a/test/IRGen/objc_enum_multi_file.swift
+++ b/test/IRGen/objc_enum_multi_file.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -module-name main -primary-file %s %S/Inputs/objc_enum_multi_file_helper.swift -emit-ir | %FileCheck %s
 
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -disable-objc-attr-requires-foundation-module -emit-module %S/Inputs/objc_enum_multi_file_helper.swift -o %t
diff --git a/test/IRGen/objc_errors.sil b/test/IRGen/objc_errors.sil
index 72a9231..a16c519 100644
--- a/test/IRGen/objc_errors.sil
+++ b/test/IRGen/objc_errors.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/objc_extensions.swift b/test/IRGen/objc_extensions.swift
index 576de76..c33d812 100644
--- a/test/IRGen/objc_extensions.swift
+++ b/test/IRGen/objc_extensions.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -disable-objc-attr-requires-foundation-module -emit-module %S/Inputs/objc_extension_base.swift -o %t
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -primary-file %s -emit-ir | %FileCheck %s
diff --git a/test/IRGen/objc_implicit_with.sil b/test/IRGen/objc_implicit_with.sil
index fe009f6..b1dbaf9 100644
--- a/test/IRGen/objc_implicit_with.sil
+++ b/test/IRGen/objc_implicit_with.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/objc_local.swift b/test/IRGen/objc_local.swift
index ce81506..bfca88a 100644
--- a/test/IRGen/objc_local.swift
+++ b/test/IRGen/objc_local.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/objc_methods.swift b/test/IRGen/objc_methods.swift
index 543df7a..04bec8f 100644
--- a/test/IRGen/objc_methods.swift
+++ b/test/IRGen/objc_methods.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -primary-file %s -emit-ir | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-%target-os %s
 
diff --git a/test/IRGen/objc_ns_enum.swift b/test/IRGen/objc_ns_enum.swift
index ab1caf0..ab3dc74 100644
--- a/test/IRGen/objc_ns_enum.swift
+++ b/test/IRGen/objc_ns_enum.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -primary-file %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/objc_pointers.swift b/test/IRGen/objc_pointers.swift
index 1a5c5b1..58479b0 100644
--- a/test/IRGen/objc_pointers.swift
+++ b/test/IRGen/objc_pointers.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -primary-file %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/objc_property_attrs.swift b/test/IRGen/objc_property_attrs.swift
index ed9333b..50f999b 100644
--- a/test/IRGen/objc_property_attrs.swift
+++ b/test/IRGen/objc_property_attrs.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/objc_protocol_conversion.sil b/test/IRGen/objc_protocol_conversion.sil
index d72e582..646b250 100644
--- a/test/IRGen/objc_protocol_conversion.sil
+++ b/test/IRGen/objc_protocol_conversion.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -sdk %S/Inputs -I %t %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/objc_protocol_extended_method_types.swift b/test/IRGen/objc_protocol_extended_method_types.swift
index af0b72d..8b06cf0 100644
--- a/test/IRGen/objc_protocol_extended_method_types.swift
+++ b/test/IRGen/objc_protocol_extended_method_types.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/objc_protocols.swift b/test/IRGen/objc_protocols.swift
index 2dbe076..399206c 100644
--- a/test/IRGen/objc_protocols.swift
+++ b/test/IRGen/objc_protocols.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-module -o %t %S/Inputs/objc_protocols_Bas.swift
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -primary-file %s -emit-ir -disable-objc-attr-requires-foundation-module | %FileCheck %s
diff --git a/test/IRGen/objc_protocols_jit.swift b/test/IRGen/objc_protocols_jit.swift
index 058f36e..9b63598 100644
--- a/test/IRGen/objc_protocols_jit.swift
+++ b/test/IRGen/objc_protocols_jit.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-module -o %t %S/Inputs/objc_protocols_Bas.swift
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -sdk %S/Inputs -I %t -primary-file %s -use-jit -emit-ir -disable-objc-attr-requires-foundation-module | %FileCheck %s
diff --git a/test/IRGen/objc_structs.swift b/test/IRGen/objc_structs.swift
index ea84b2e..efa2b5a 100644
--- a/test/IRGen/objc_structs.swift
+++ b/test/IRGen/objc_structs.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -primary-file %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/objc_subclass.swift b/test/IRGen/objc_subclass.swift
index 6ada946..602c56f 100644
--- a/test/IRGen/objc_subclass.swift
+++ b/test/IRGen/objc_subclass.swift
@@ -1,19 +1,19 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -primary-file %s -emit-ir | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize %s
 
 // REQUIRES: objc_interop
 
 // CHECK: [[SGIZMO:T13objc_subclass10SwiftGizmoC]] = type
-// CHECK: [[TYPE:%swift.type]] = type
-// CHECK: [[INT:%TSi]] = type <{ [[LLVM_PTRSIZE_INT:i(32|64)]] }>
 // CHECK: [[OBJC_CLASS:%objc_class]] = type
 // CHECK: [[OPAQUE:%swift.opaque]] = type
+// CHECK: [[INT:%TSi]] = type <{ [[LLVM_PTRSIZE_INT:i(32|64)]] }>
+// CHECK: [[TYPE:%swift.type]] = type
 // CHECK: [[GIZMO:%TSo5GizmoC]] = type opaque
 // CHECK: [[OBJC:%objc_object]] = type opaque
 
-// CHECK-32: @_T013objc_subclass10SwiftGizmoC1xSivWvd = hidden global i32 12, align [[WORD_SIZE_IN_BYTES:4]]
-// CHECK-64: @_T013objc_subclass10SwiftGizmoC1xSivWvd = hidden global i64 16, align [[WORD_SIZE_IN_BYTES:8]]
+// CHECK-32: @_T013objc_subclass10SwiftGizmoC1xSivWvd = hidden global i32 4, align [[WORD_SIZE_IN_BYTES:4]]
+// CHECK-64: @_T013objc_subclass10SwiftGizmoC1xSivWvd = hidden global i64 8, align [[WORD_SIZE_IN_BYTES:8]]
 // CHECK: @"OBJC_METACLASS_$__TtC13objc_subclass10SwiftGizmo" = hidden global [[OBJC_CLASS]] { [[OBJC_CLASS]]* @"OBJC_METACLASS_$_NSObject", [[OBJC_CLASS]]* @"OBJC_METACLASS_$_Gizmo", [[OPAQUE]]* @_objc_empty_cache, [[OPAQUE]]* null, [[LLVM_PTRSIZE_INT]] ptrtoint ({{.*}} @_METACLASS_DATA__TtC13objc_subclass10SwiftGizmo to [[LLVM_PTRSIZE_INT]]) }
 
 // CHECK: [[STRING_SWIFTGIZMO:@.*]] = private unnamed_addr constant [32 x i8] c"_TtC13objc_subclass10SwiftGizmo\00"
@@ -183,8 +183,8 @@
 
 // CHECK-32: @_DATA__TtC13objc_subclass10SwiftGizmo = private constant { {{.*}}* } {
 // CHECK-32:   i32 132,
-// CHECK-32:   i32 12,
-// CHECK-32:   i32 16,
+// CHECK-32:   i32 4,
+// CHECK-32:   i32 8,
 // CHECK-32:   i8* null,
 // CHECK-32:   i8* getelementptr inbounds ([{{[0-9]+}} x i8], [{{[0-9]+}} x i8]* [[STRING_SWIFTGIZMO]], i32 0, i32 0),
 // CHECK-32:   @_INSTANCE_METHODS__TtC13objc_subclass10SwiftGizmo,
@@ -196,8 +196,8 @@
 
 // CHECK-64: @_DATA__TtC13objc_subclass10SwiftGizmo = private constant { {{.*}}* } {
 // CHECK-64:    i32 132,
+// CHECK-64:    i32 8,
 // CHECK-64:    i32 16,
-// CHECK-64:    i32 24,
 // CHECK-64:    i32 0,
 // CHECK-64:    i8* null,
 // CHECK-64:    i8* getelementptr inbounds ([{{[0-9]+}} x i8], [{{[0-9]+}} x i8]* [[STRING_SWIFTGIZMO]], i64 0, i64 0),
diff --git a/test/IRGen/objc_super.swift b/test/IRGen/objc_super.swift
index 4d60196..1f380fd 100644
--- a/test/IRGen/objc_super.swift
+++ b/test/IRGen/objc_super.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
@@ -81,6 +81,31 @@
 }
 
 class GenericRuncer<T> : Gizmo {
+  var x: Gizmo? = nil
+  var y: T?
+
+// Use a constant indirect field access instead of a non-constant direct
+// access because the layout dependents on the alignment of y.
+
+// CHECK: define hidden swiftcc i64 @_T010objc_super13GenericRuncerC1xSo5GizmoCSgfg(%T10objc_super13GenericRuncerC* swiftself)
+// CHECK:    inttoptr
+// CHECK:   [[CAST:%.*]] = bitcast %T10objc_super13GenericRuncerC* %0 to i64*
+// CHECK:   [[ISA:%.*]] = load i64, i64* [[CAST]]
+// CHECK:   [[ISAMASK:%.*]] = load i64, i64* @swift_isaMask
+// CHECK:   [[CLASS:%.*]] = and i64 [[ISA]], [[ISAMASK]]
+// CHECK:   [[TY:%.*]] = inttoptr i64 [[CLASS]] to %swift.type*
+// CHECK:   [[CAST:%.*]] = bitcast %swift.type* [[TY]] to i64*
+// CHECK:   [[OFFSETADDR:%.*]] = getelementptr inbounds i64, i64* [[CAST]], i64 19
+// CHECK:   [[FIELDOFFSET:%.*]] = load i64, i64* [[OFFSETADDR]]
+// CHECK:   [[BYTEADDR:%.*]] = bitcast %T10objc_super13GenericRuncerC* %0 to i8*
+// CHECK:   [[FIELDADDR:%.*]] = getelementptr inbounds i8, i8* [[BYTEADDR]], i64 [[FIELDOFFSET]]
+// CHECK:   [[XADDR:%.*]] = bitcast i8* [[FIELDADDR]] to %TSo5GizmoCSg*
+// CHECK:   [[OPTIONALADDR:%.*]] = bitcast %TSo5GizmoCSg* [[XADDR]] to i64*
+// CHECK:   [[OPTIONAL:%.*]] = load i64, i64* [[OPTIONALADDR]]
+// CHECK:   [[OBJ:%.*]] = inttoptr i64 [[OPTIONAL]] to %objc_object*
+// CHECK:    call %objc_object* @objc_retain(%objc_object* [[OBJ]]
+// CHECK:   ret i64 [[OPTIONAL]]
+
   // CHECK: define hidden swiftcc void @_T010objc_super13GenericRuncerC5runceyyFZ(%swift.type* swiftself) {{.*}} {
   override class func runce() {
     // CHECK:      [[CLASS:%.*]] = call %swift.type* @_T010objc_super13GenericRuncerCMa(%swift.type* %T)
diff --git a/test/IRGen/objc_type_encoding.swift b/test/IRGen/objc_type_encoding.swift
index b85b5db..29f00d6 100644
--- a/test/IRGen/objc_type_encoding.swift
+++ b/test/IRGen/objc_type_encoding.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir -disable-objc-attr-requires-foundation-module | %FileCheck %s -check-prefix=CHECK-%target-os
 
diff --git a/test/IRGen/optional_metatype.sil b/test/IRGen/optional_metatype.sil
index c0028e7..ab29134 100644
--- a/test/IRGen/optional_metatype.sil
+++ b/test/IRGen/optional_metatype.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -sdk %S/Inputs -I %t -emit-ir %s | %FileCheck %s --check-prefix=%target-cpu
 
diff --git a/test/IRGen/osx-targets.swift b/test/IRGen/osx-targets.swift
index 11f4ec5..9a1c63f 100644
--- a/test/IRGen/osx-targets.swift
+++ b/test/IRGen/osx-targets.swift
@@ -5,7 +5,7 @@
 // REQUIRES: OS=macosx
 
 // CHECK: target triple = "x86_64-apple-macosx10.
-// CHECK-SPECIFIC: target triple = "x86_64-apple-macosx10.12"
+// CHECK-SPECIFIC: target triple = "x86_64-apple-macosx10.12.0"
 
 public func anchor() {}
 anchor()
diff --git a/test/IRGen/partial_apply.sil b/test/IRGen/partial_apply.sil
index 24d11cd..5c4af06 100644
--- a/test/IRGen/partial_apply.sil
+++ b/test/IRGen/partial_apply.sil
@@ -235,7 +235,7 @@
 // CHECK:         [[T_METADATA_BASE:%.*]] = bitcast %swift.type* %T to i8***
 // CHECK:         [[T_VWTABLE_ADDR:%.*]] = getelementptr {{.*}} [[T_METADATA_BASE]], [[WORD:i[0-9]+]] -1
 // CHECK:         [[T_VWTABLE:%.*]] = load {{.*}} [[T_VWTABLE_ADDR]]
-// CHECK:         [[T_FLAGS_ADDR:%.*]] = getelementptr {{.*}} [[T_VWTABLE]], i32 18
+// CHECK:         [[T_FLAGS_ADDR:%.*]] = getelementptr {{.*}} [[T_VWTABLE]], i32 12
 // CHECK:         [[T_FLAGS_PTR:%.*]] = load {{.*}} [[T_FLAGS_ADDR]]
 // CHECK:         [[T_FLAGS:%.*]] = ptrtoint {{.*}} [[T_FLAGS_PTR]] to [[WORD]]
 // CHECK:         [[T_ALIGN_MASK:%.*]] = and [[WORD]] [[T_FLAGS]], 65535
@@ -247,7 +247,7 @@
 // CHECK:         [[T_OFFSET:%.*]] = and [[WORD]] [[T_UP_TO_ALIGN_1]], [[T_ALIGN_MASK_NOT]]
 
 // -- Add the size of T to start the Int field.
-// CHECK:         [[T_SIZE_ADDR:%.*]] = getelementptr {{.*}} [[T_VWTABLE]], i32 17
+// CHECK:         [[T_SIZE_ADDR:%.*]] = getelementptr {{.*}} [[T_VWTABLE]], i32 11
 // CHECK:         [[T_SIZE_PTR:%.*]] = load {{.*}} [[T_SIZE_ADDR]]
 // CHECK:         [[T_SIZE:%.*]] = ptrtoint {{.*}} [[T_SIZE_PTR]] to [[WORD]]
 // CHECK:         [[T_END:%.*]] = add [[WORD]] [[T_OFFSET]], [[T_SIZE]]
diff --git a/test/IRGen/partial_apply_objc.sil b/test/IRGen/partial_apply_objc.sil
index 6f1aa22..94f716c 100644
--- a/test/IRGen/partial_apply_objc.sil
+++ b/test/IRGen/partial_apply_objc.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir -assume-parsing-unqualified-ownership-sil -disable-objc-attr-requires-foundation-module | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize
 
diff --git a/test/IRGen/pic.swift b/test/IRGen/pic.swift
index 1c8f76b..606290f 100644
--- a/test/IRGen/pic.swift
+++ b/test/IRGen/pic.swift
@@ -20,27 +20,33 @@
 // i386:         movl __T04main6globalSiv-[[PIC_BLOCK]]([[PIC_REG]]), {{%[a-z]+}}
 
 // armv7-LABEL: __T04main10use_globalSiyF:
-// armv7:         movw r0, :lower16:(__T04main6globalSiv-([[PIC_0:L.*]]+8))
-// armv7:         movt r0, :upper16:(__T04main6globalSiv-([[PIC_0]]+8))
+// Check for the runtime memory enforcement call. The global address may be
+// materialized in a different register prior to that call.
+// armv7:         bl _swift_beginAccess
+// armv7:         movw [[R_ADR:r.*]], :lower16:(__T04main6globalSiv-([[PIC_0:L.*]]+4))
+// armv7:         movt [[R_ADR]], :upper16:(__T04main6globalSiv-([[PIC_0]]+4))
 // armv7:       [[PIC_0]]:{{$}}
-// armv7:         add r0, pc, r0
-// armv7:         ldr r0, [r0]
+// armv7:         add [[R_ADR]], pc
+// armv7:         ldr [[R_ADR]], {{\[}}[[R_ADR]]{{\]}}
 
 // armv7s-LABEL: __T04main10use_globalSiyF:
-// armv7s:         movw r0, :lower16:(__T04main6globalSiv-([[PIC_0:L.*]]+8))
-// armv7s:         movt r0, :upper16:(__T04main6globalSiv-([[PIC_0]]+8))
+// armv7s:         bl _swift_beginAccess
+// armv7s:         movw [[R_ADR:r.*]], :lower16:(__T04main6globalSiv-([[PIC_0:L.*]]+4))
+// armv7s:         movt [[R_ADR]], :upper16:(__T04main6globalSiv-([[PIC_0]]+4))
 // armv7s:       [[PIC_0]]:{{$}}
-// armv7s:         add r0, pc, r0
-// armv7s:         ldr r0, [r0]
+// armv7s:         add [[R_ADR]], pc
+// armv7s:         ldr [[R_ADR]], {{\[}}[[R_ADR]]{{\]}}
 
 // armv7k-LABEL: __T04main10use_globalSiyF:
-// armv7k:        movw r0, :lower16:(__T04main6globalSiv-([[PIC_0:L.*]]+8))
-// armv7k:        movt r0, :upper16:(__T04main6globalSiv-([[PIC_0]]+8))
+// armv7k:         bl _swift_beginAccess
+// armv7k:        movw [[R_ADR:r.*]], :lower16:(__T04main6globalSiv-([[PIC_0:L.*]]+4))
+// armv7k:        movt [[R_ADR]], :upper16:(__T04main6globalSiv-([[PIC_0]]+4))
 // armv7k:      [[PIC_0]]:{{$}}
-// armv7k:        add r0, pc, r0
-// armv7k:        ldr r0, [r0]
+// armv7k:        add [[R_ADR]], pc
+// armv7k:        ldr [[R_ADR]], {{\[}}[[R_ADR]]{{\]}}
 
 // arm64-LABEL: __T04main10use_globalSiyF:
+// arm64:         bl _swift_beginAccess
 // arm64:         adrp [[REG1:x[0-9]+]], __T04main6globalSiv@PAGE
 // arm64:         add [[REG2:x[0-9]+]], [[REG1]], __T04main6globalSiv@PAGEOFF
 // arm64:         ldr {{x[0-9]+}}, {{\[}}[[REG2]]{{\]}}
diff --git a/test/IRGen/protocol_conformance_records_objc.swift b/test/IRGen/protocol_conformance_records_objc.swift
index 368064d..4d536bb 100644
--- a/test/IRGen/protocol_conformance_records_objc.swift
+++ b/test/IRGen/protocol_conformance_records_objc.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-module -o %t %S/Inputs/objc_protocols_Bas.swift
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -primary-file %s -emit-ir | %FileCheck %s
diff --git a/test/IRGen/protocol_resilience.sil b/test/IRGen/protocol_resilience.sil
index 2bf79b5..0ecdd10 100644
--- a/test/IRGen/protocol_resilience.sil
+++ b/test/IRGen/protocol_resilience.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_protocol.swiftmodule -module-name=resilient_protocol %S/../Inputs/resilient_protocol.swift
 // RUN: %target-swift-frontend -I %t -emit-ir -enable-resilience -assume-parsing-unqualified-ownership-sil %s | %FileCheck %s
 // RUN: %target-swift-frontend -I %t -emit-ir -enable-resilience -O -assume-parsing-unqualified-ownership-sil %s
diff --git a/test/IRGen/rdar15304329.swift b/test/IRGen/rdar15304329.swift
index b419bfc..93ca00d 100644
--- a/test/IRGen/rdar15304329.swift
+++ b/test/IRGen/rdar15304329.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/report_dead_method_call.swift b/test/IRGen/report_dead_method_call.swift
index 1f65efe..6150687 100644
--- a/test/IRGen/report_dead_method_call.swift
+++ b/test/IRGen/report_dead_method_call.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // We compile with -O (optimizations) and -disable-access-control (which
 // allows use to "call" methods that are removed by dead code elimination).
diff --git a/test/IRGen/sil_witness_tables.swift b/test/IRGen/sil_witness_tables.swift
index 42c6c1a..413712b 100644
--- a/test/IRGen/sil_witness_tables.swift
+++ b/test/IRGen/sil_witness_tables.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-module -o %t %S/sil_witness_tables_external_conformance.swift
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -I %t -primary-file %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/sil_witness_tables_external_witnesstable.swift b/test/IRGen/sil_witness_tables_external_witnesstable.swift
index df2bf91..3437d4f 100644
--- a/test/IRGen/sil_witness_tables_external_witnesstable.swift
+++ b/test/IRGen/sil_witness_tables_external_witnesstable.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-module %S/Inputs/sil_witness_tables_external_input.swift -o %t/Swift.swiftmodule -parse-stdlib -parse-as-library -module-name Swift -sil-serialize-all -module-link-name swiftCore
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -I %t -primary-file %s -emit-ir | %FileCheck %s
 
diff --git a/test/IRGen/struct_resilience.swift b/test/IRGen/struct_resilience.swift
index bf40f4f..dfb167d 100644
--- a/test/IRGen/struct_resilience.swift
+++ b/test/IRGen/struct_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_struct.swiftmodule -module-name=resilient_struct %S/../Inputs/resilient_struct.swift
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_enum.swiftmodule -module-name=resilient_enum -I %t %S/../Inputs/resilient_enum.swift
 // RUN: %target-swift-frontend -I %t -emit-ir -enable-resilience %s | %FileCheck %s
@@ -23,13 +23,13 @@
 // CHECK: [[VWT_ADDR:%.*]] = getelementptr inbounds i8**, i8*** [[METADATA_ADDR]], [[INT]] -1
 // CHECK: [[VWT:%.*]] = load i8**, i8*** [[VWT_ADDR]]
 
-// CHECK: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 17
+// CHECK: [[WITNESS_ADDR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 11
 // CHECK: [[WITNESS:%.*]] = load i8*, i8** [[WITNESS_ADDR]]
 // CHECK: [[WITNESS_FOR_SIZE:%.*]] = ptrtoint i8* [[WITNESS]]
 // CHECK: [[ALLOCA:%.*]] = alloca i8, {{.*}} [[WITNESS_FOR_SIZE]], align 16
 // CHECK: [[STRUCT_ADDR:%.*]] = bitcast i8* [[ALLOCA]] to %swift.opaque*
 
-// CHECK: [[WITNESS_PTR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 6
+// CHECK: [[WITNESS_PTR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 2
 // CHECK: [[WITNESS:%.*]] = load i8*, i8** [[WITNESS_PTR]]
 // CHECK: [[initializeWithCopy:%.*]] = bitcast i8* [[WITNESS]]
 // CHECK: [[STRUCT_LOC:%.*]] = call %swift.opaque* [[initializeWithCopy]](%swift.opaque* [[STRUCT_ADDR]], %swift.opaque* %1, %swift.type* [[METADATA]])
@@ -37,7 +37,7 @@
 // CHECK: [[FN:%.*]] = bitcast i8* %2 to void (%swift.opaque*, %swift.opaque*, %swift.refcounted*)*
 // CHECK: call swiftcc void [[FN]](%swift.opaque* noalias nocapture sret %0, %swift.opaque* noalias nocapture [[STRUCT_ADDR]], %swift.refcounted* swiftself %3)
 
-// CHECK: [[WITNESS_PTR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 4
+// CHECK: [[WITNESS_PTR:%.*]] = getelementptr inbounds i8*, i8** [[VWT]], i32 1
 // CHECK: [[WITNESS:%.*]] = load i8*, i8** [[WITNESS_PTR]]
 // CHECK: [[destroy:%.*]] = bitcast i8* [[WITNESS]] to void (%swift.opaque*, %swift.type*)*
 // CHECK: call void [[destroy]](%swift.opaque* %1, %swift.type* [[METADATA]])
diff --git a/test/IRGen/super.sil b/test/IRGen/super.sil
index 7c3f648..9202160 100644
--- a/test/IRGen/super.sil
+++ b/test/IRGen/super.sil
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-module -enable-resilience -I %t -module-name resilient_struct -o %t %S/../Inputs/resilient_struct.swift
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-module -enable-resilience -I %t -module-name resilient_class -o %t %S/../Inputs/resilient_class.swift
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -enable-resilience -parse-sil -parse-as-library -emit-ir -I %t %s | %FileCheck %s
diff --git a/test/IRGen/type_layout.swift b/test/IRGen/type_layout.swift
index 7c6241b..c0230a8 100644
--- a/test/IRGen/type_layout.swift
+++ b/test/IRGen/type_layout.swift
@@ -23,14 +23,14 @@
   // CHECK:       [[T0:%.*]] = bitcast %swift.type* %T to i8***
   // CHECK:       [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], {{i32|i64}} -1
   // CHECK:       [[T_VALUE_WITNESSES:%.*]] = load i8**, i8*** [[T1]]
-  // CHECK:       [[T_LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[T_VALUE_WITNESSES]], i32 17
+  // CHECK:       [[T_LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[T_VALUE_WITNESSES]], i32 11
   // CHECK:       store i8** [[T_LAYOUT]]
   var z: T
   // -- native class, use standard NativeObject value witness
-  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0BoWV, i32 17)
+  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0BoWV, i32 11)
   var a: C
   // -- Single-element struct, shares layout of its field (Builtin.Int64)
-  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0Bi64_WV, i32 17)
+  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0Bi64_WV, i32 11)
   var c: SSing
   // -- Multi-element structs use open-coded layouts
   // CHECK:    store i8** getelementptr inbounds ([3 x i8*], [3 x i8*]* @type_layout_16_8_0_pod, i32 0, i32 0)
@@ -42,13 +42,13 @@
   // CHECK-32:    store i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @type_layout_8_4_[[REF_XI]]_bt, i32 0, i32 0)
   var f: SMult3
   // -- Single-case enum, shares layout of its field (Builtin.Int64)
-  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0Bi64_WV, i32 17)
+  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0Bi64_WV, i32 11)
   var g: ESing
   // -- Multi-case enum, open-coded layout
   // CHECK:    store i8** getelementptr inbounds ([3 x i8*], [3 x i8*]* @type_layout_9_8_0_pod, i32 0, i32 0)
   var h: EMult
   // -- Single-element generic struct, shares layout of its field (T)
-  // CHECK:       [[T_LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[T_VALUE_WITNESSES]], i32 17
+  // CHECK:       [[T_LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[T_VALUE_WITNESSES]], i32 11
   // CHECK:       store i8** [[T_LAYOUT]]
   var i: GSing<T>
   // -- Multi-element generic struct, need to derive from metadata
@@ -56,10 +56,10 @@
   // CHECK:       [[T0:%.*]] = bitcast %swift.type* [[METADATA]] to i8***
   // CHECK:       [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], {{i32|i64}} -1
   // CHECK:       [[VALUE_WITNESSES:%.*]] = load i8**, i8*** [[T1]]
-  // CHECK:       [[LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[VALUE_WITNESSES]], i32 17
+  // CHECK:       [[LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[VALUE_WITNESSES]], i32 11
   // CHECK:       store i8** [[LAYOUT]]
   var j: GMult<T>
   // -- Common layout, reuse common value witness table layout
-  // CHECK:       store i8** getelementptr (i8*, i8** @_T0Bi32_WV, i32 17)
+  // CHECK:       store i8** getelementptr (i8*, i8** @_T0Bi32_WV, i32 11)
   var k: CommonLayout
 }
diff --git a/test/IRGen/type_layout_objc.swift b/test/IRGen/type_layout_objc.swift
index 240a08c..ec7e2c3 100644
--- a/test/IRGen/type_layout_objc.swift
+++ b/test/IRGen/type_layout_objc.swift
@@ -27,17 +27,17 @@
   // CHECK:       [[T0:%.*]] = bitcast %swift.type* %T to i8***
   // CHECK:       [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], {{i32|i64}} -1
   // CHECK:       [[T_VALUE_WITNESSES:%.*]] = load i8**, i8*** [[T1]]
-  // CHECK:       [[T_LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[T_VALUE_WITNESSES]], i32 17
+  // CHECK:       [[T_LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[T_VALUE_WITNESSES]], i32 11
   // CHECK:       store i8** [[T_LAYOUT]]
   var z: T
   // -- native class, use standard NativeObject value witness
-  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0BoWV, i32 17)
+  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0BoWV, i32 11)
   var a: C
   // -- ObjC class, use standard UnknownObject value witness
-  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0BOWV, i32 17)
+  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0BOWV, i32 11)
   var b: O
   // -- Single-element struct, shares layout of its field (Builtin.Int64)
-  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0Bi64_WV, i32 17)
+  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0Bi64_WV, i32 11)
   var c: SSing
   // -- Multi-element structs use open-coded layouts
   // CHECK:    store i8** getelementptr inbounds ([3 x i8*], [3 x i8*]* @type_layout_16_8_0_pod, i32 0, i32 0)
@@ -49,13 +49,13 @@
   // CHECK-32:    store i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @type_layout_8_4_1000_bt, i32 0, i32 0)
   var f: SMult3
   // -- Single-case enum, shares layout of its field (Builtin.Int64)
-  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0Bi64_WV, i32 17)
+  // CHECK:       store i8** getelementptr inbounds (i8*, i8** @_T0Bi64_WV, i32 11)
   var g: ESing
   // -- Multi-case enum, open-coded layout
   // CHECK:    store i8** getelementptr inbounds ([3 x i8*], [3 x i8*]* @type_layout_9_8_0_pod, i32 0, i32 0)
   var h: EMult
   // -- Single-element generic struct, shares layout of its field (T)
-  // CHECK:       [[T_LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[T_VALUE_WITNESSES]], i32 17
+  // CHECK:       [[T_LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[T_VALUE_WITNESSES]], i32 11
   // CHECK:       store i8** [[T_LAYOUT]]
   var i: GSing<T>
   // -- Multi-element generic struct, need to derive from metadata
@@ -63,10 +63,10 @@
   // CHECK:       [[T0:%.*]] = bitcast %swift.type* [[METADATA]] to i8***
   // CHECK:       [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]], {{i32|i64}} -1
   // CHECK:       [[VALUE_WITNESSES:%.*]] = load i8**, i8*** [[T1]]
-  // CHECK:       [[LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[VALUE_WITNESSES]], i32 17
+  // CHECK:       [[LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[VALUE_WITNESSES]], i32 11
   // CHECK:       store i8** [[LAYOUT]]
   var j: GMult<T>
   // -- Common layout, reuse common value witness table layout
-  // CHECK:       store i8** getelementptr (i8*, i8** @_T0Bi32_WV, i32 17)
+  // CHECK:       store i8** getelementptr (i8*, i8** @_T0Bi32_WV, i32 11)
   var k: CommonLayout
 }
diff --git a/test/IRGen/type_layout_reference_storage.swift b/test/IRGen/type_layout_reference_storage.swift
index d8198a0f..b2a550a 100644
--- a/test/IRGen/type_layout_reference_storage.swift
+++ b/test/IRGen/type_layout_reference_storage.swift
@@ -10,23 +10,23 @@
   var z: T
 
   // -- Known-Swift-refcounted type
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoXoWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoXoWV, i32 11)
   unowned(safe)   var cs:  C
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 11)
   unowned(unsafe) var cu:  C
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoSgXwWV, i32 11)
   weak            var cwo: C?
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoSgXwWV, i32 11)
   weak            var cwi: C!
 
   // -- Known-Swift-refcounted archetype
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoXoWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoXoWV, i32 11)
   unowned(safe)   var nc:  Native
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 11)
   unowned(unsafe) var nu:  Native
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoSgXwWV, i32 11)
   weak            var nwo: Native?
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoSgXwWV, i32 11)
   weak            var nwi: Native!
 
   // -- Open-code layout for protocol types with witness tables.
@@ -72,22 +72,22 @@
   weak            var pqcwi: (P & Q & C)!
 
   // -- Unknown-refcounted existential without witness tables.
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0[[UNKNOWN:B[Oo]]]XoWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0[[UNKNOWN:B[Oo]]]XoWV, i32 11)
   unowned(safe)   var aos:  AnyObject
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 11)
   unowned(unsafe) var aou:  AnyObject
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0[[UNKNOWN]]SgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0[[UNKNOWN]]SgXwWV, i32 11)
   weak            var aowo: AnyObject?
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0[[UNKNOWN]]SgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0[[UNKNOWN]]SgXwWV, i32 11)
   weak            var aowi: AnyObject!
 
   // -- Unknown-refcounted archetype
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0[[UNKNOWN:B[Oo]]]XoWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0[[UNKNOWN:B[Oo]]]XoWV, i32 11)
   unowned(safe)   var us:  Unknown
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 11)
   unowned(unsafe) var uu:  Unknown
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0[[UNKNOWN]]SgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0[[UNKNOWN]]SgXwWV, i32 11)
   weak            var uwo: Unknown?
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0[[UNKNOWN]]SgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0[[UNKNOWN]]SgXwWV, i32 11)
   weak            var uwi: Unknown!
 }
diff --git a/test/IRGen/type_layout_reference_storage_objc.swift b/test/IRGen/type_layout_reference_storage_objc.swift
index 65fc876..f235ab9 100644
--- a/test/IRGen/type_layout_reference_storage_objc.swift
+++ b/test/IRGen/type_layout_reference_storage_objc.swift
@@ -15,52 +15,52 @@
   var z: T
 
   // -- ObjC-refcounted class
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOXoWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOXoWV, i32 11)
   unowned(safe)   var cs:  C
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 11)
   unowned(unsafe) var cu:  C
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 11)
   weak            var cwo: C?
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 11)
   weak            var cwi: C!
 
   // -- ObjC-refcounted archetype
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOXoWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOXoWV, i32 11)
   unowned(safe)   var os:  ObjC
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 11)
   unowned(unsafe) var ou:  ObjC
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 11)
   weak            var owo: ObjC?
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 11)
   weak            var owi: ObjC!
 
   // -- Pure ObjC protocols are unknown-refcounted
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOXoWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOXoWV, i32 11)
   unowned(safe)   var ps:  P
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 11)
   unowned(unsafe) var pu:  P
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 11)
   weak            var pwo: P?
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 11)
   weak            var pwi: P!
 
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOXoWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOXoWV, i32 11)
   unowned(safe)   var pqs:  P & Q
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 11)
   unowned(unsafe) var pqu:  P & Q
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 11)
   weak            var pqwo: (P & Q)?
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BOSgXwWV, i32 11)
   weak            var pqwi: (P & Q)!
 
   // -- Composition with ObjC protocol and native class is native-refcounted
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoXoWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoXoWV, i32 11)
   unowned(safe)   var pncs:  (P & NativeClass)
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BomWV, i32 11)
   unowned(unsafe) var pncu:  (P & NativeClass)
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoSgXwWV, i32 11)
   weak            var pncwo: (P & NativeClass)?
-  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoSgXwWV, i32 17)
+  // CHECK: store i8** getelementptr inbounds (i8*, i8** @_T0BoSgXwWV, i32 11)
   weak            var pncwi: (P & NativeClass)!
 
   // -- Open-code layouts when there are witness tables.
diff --git a/test/IRGen/unowned.sil b/test/IRGen/unowned.sil
index 65a21b5..274b744 100644
--- a/test/IRGen/unowned.sil
+++ b/test/IRGen/unowned.sil
@@ -45,17 +45,8 @@
 
 // Value witnesses for A:
 
-//   destroyBuffer
-// CHECK:    define linkonce_odr hidden void @_T07unowned1AVwXX([[BUFFER:\[24 x i8\]]]* [[ARG:%.*]], [[TYPE]]*
-// CHECK:      [[T0:%.*]] = bitcast [[BUFFER]]* [[ARG]] to [[A]]*
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[A]], [[A]]* [[T0]], i32 0, i32 0
-// CHECK-NEXT: [[T1C:%.*]] = bitcast %swift.unowned* [[T1]] to [[C]]*
-// CHECK-NEXT: [[T2:%.*]] = load [[C]]*, [[C]]** [[T1C]], align 8
-// CHECK-NEXT: call void bitcast (void ([[REF]]*)* @swift_rt_swift_unownedRelease to void ([[C]]*)*)([[C]]* [[T2]])
-// CHECK-NEXT: ret void
-
 //   initializeBufferWithCopyOfBuffer
-// CHECK:    define linkonce_odr hidden [[OPAQUE]]* @_T07unowned1AVwCP([[BUFFER]]* [[DESTBUF:%.*]], [[BUFFER]]* [[SRCBUF:%.*]], [[TYPE]]*
+// CHECK:    define linkonce_odr hidden [[OPAQUE]]* @_T07unowned1AVwCP([[BUFFER:\[24 x i8\]]]* [[DESTBUF:%.*]], [[BUFFER]]* [[SRCBUF:%.*]], [[TYPE]]*
 // CHECK:      [[DEST:%.*]] = bitcast [[BUFFER]]* [[DESTBUF]] to [[A]]*
 // CHECK-NEXT: [[SRC:%.*]] = bitcast [[BUFFER]]* [[SRCBUF]] to [[A]]*
 // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[DEST]], i32 0, i32 0
@@ -77,20 +68,6 @@
 // CHECK-NEXT: call void bitcast (void ([[REF]]*)* @swift_rt_swift_unownedRelease to void ([[C]]*)*)([[C]]* [[T2]])
 // CHECK-NEXT: ret void
 
-//   initializeBufferWithCopy
-// CHECK:    define linkonce_odr hidden [[OPAQUE]]* @_T07unowned1AVwCp([[BUFFER]]* [[DESTBUF:%.*]], [[OPAQUE]]* [[SRC_OPQ:%.*]], [[TYPE]]*
-// CHECK:      [[SRC:%.*]] = bitcast [[OPAQUE]]* [[SRC_OPQ]] to [[A]]*
-// CHECK-NEXT: [[DEST:%.*]] = bitcast [[BUFFER]]* [[DESTBUF]] to [[A]]*
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[DEST]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[A]], [[A]]* [[SRC]], i32 0, i32 0
-// CHECK-NEXT: [[T1C:%.*]] = bitcast %swift.unowned* [[T1]] to [[C]]*
-// CHECK-NEXT: [[T2:%.*]] = load [[C]]*, [[C]]** [[T1C]], align 8
-// CHECK-NEXT: call void bitcast (void ([[REF]]*)* @swift_rt_swift_unownedRetain to void ([[C]]*)*)([[C]]* [[T2]])
-// CHECK-NEXT: [[T0C:%.*]] = bitcast %swift.unowned* [[T0]] to [[C]]*
-// CHECK-NEXT: store [[C]]* [[T2]], [[C]]** [[T0C]], align 8
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[A]]* [[DEST]] to [[OPAQUE]]*
-// CHECK-NEXT: ret [[OPAQUE]]* [[T0]]
-
 //   initializeWithCopy
 // CHECK:    define linkonce_odr hidden [[OPAQUE]]* @_T07unowned1AVwcp([[OPAQUE]]* [[DEST_OPQ:%.*]], [[OPAQUE]]* [[SRC_OPQ:%.*]], [[TYPE]]*
 // CHECK:      [[DEST:%.*]] = bitcast [[OPAQUE]]* [[DEST_OPQ]] to [[A]]*
diff --git a/test/IRGen/unowned_objc.sil b/test/IRGen/unowned_objc.sil
index 2abf376..f521a94 100644
--- a/test/IRGen/unowned_objc.sil
+++ b/test/IRGen/unowned_objc.sil
@@ -148,17 +148,8 @@
 
 // Value witnesses for A:
 
-//   destroyBuffer
-// CHECK:    define linkonce_odr hidden void @_T012unowned_objc1AVwXX([[BUFFER:\[24 x i8\]]]* [[ARG:%.*]], [[TYPE]]*
-// CHECK:      [[T0:%.*]] = bitcast [[BUFFER]]* [[ARG]] to [[A]]*
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[A]], [[A]]* [[T0]], i32 0, i32 0
-// CHECK-NEXT: [[T1C:%.*]] = bitcast %swift.unowned* [[T1]] to [[C]]*
-// CHECK-NEXT: [[T2:%.*]] = load [[C]]*, [[C]]** [[T1C]], align 8
-// CHECK-NEXT: call void bitcast (void ([[REF]]*)* @swift_rt_swift_unownedRelease to void ([[C]]*)*)([[C]]* [[T2]])
-// CHECK-NEXT: ret void
-
 //   initializeBufferWithCopyOfBuffer
-// CHECK:    define linkonce_odr hidden [[OPAQUE]]* @_T012unowned_objc1AVwCP([[BUFFER]]* [[DESTBUF:%.*]], [[BUFFER]]* [[SRCBUF:%.*]], [[TYPE]]*
+// CHECK:    define linkonce_odr hidden [[OPAQUE]]* @_T012unowned_objc1AVwCP([[BUFFER:\[24 x i8\]]]* [[DESTBUF:%.*]], [[BUFFER]]* [[SRCBUF:%.*]], [[TYPE]]*
 // CHECK:      [[DEST:%.*]] = bitcast [[BUFFER]]* [[DESTBUF]] to [[A]]*
 // CHECK-NEXT: [[SRC:%.*]] = bitcast [[BUFFER]]* [[SRCBUF]] to [[A]]*
 // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[DEST]], i32 0, i32 0
@@ -180,20 +171,6 @@
 // CHECK-NEXT: call void bitcast (void ([[REF]]*)* @swift_rt_swift_unownedRelease to void ([[C]]*)*)([[C]]* [[T2]])
 // CHECK-NEXT: ret void
 
-//   initializeBufferWithCopy
-// CHECK:    define linkonce_odr hidden [[OPAQUE]]* @_T012unowned_objc1AVwCp([[BUFFER]]* [[DESTBUF:%.*]], [[OPAQUE]]* [[SRC_OPQ:%.*]], [[TYPE]]*
-// CHECK:      [[SRC:%.*]] = bitcast [[OPAQUE]]* [[SRC_OPQ]] to [[A]]*
-// CHECK-NEXT: [[DEST:%.*]] = bitcast [[BUFFER]]* [[DESTBUF]] to [[A]]*
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[DEST]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[A]], [[A]]* [[SRC]], i32 0, i32 0
-// CHECK-NEXT: [[T1C:%.*]] = bitcast %swift.unowned* [[T1]] to [[C]]*
-// CHECK-NEXT: [[T2:%.*]] = load [[C]]*, [[C]]** [[T1C]], align 8
-// CHECK-NEXT: call void bitcast (void ([[REF]]*)* @swift_rt_swift_unownedRetain to void ([[C]]*)*)([[C]]* [[T2]])
-// CHECK-NEXT: [[T0C:%.*]] = bitcast %swift.unowned* [[T0]] to [[C]]*
-// CHECK-NEXT: store [[C]]* [[T2]], [[C]]** [[T0C]], align 8
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[A]]* [[DEST]] to [[OPAQUE]]*
-// CHECK-NEXT: ret [[OPAQUE]]* [[T0]]
-
 //   initializeWithCopy
 // CHECK:    define linkonce_odr hidden [[OPAQUE]]* @_T012unowned_objc1AVwcp([[OPAQUE]]* [[DEST_OPQ:%.*]], [[OPAQUE]]* [[SRC_OPQ:%.*]], [[TYPE]]*
 // CHECK:      [[DEST:%.*]] = bitcast [[OPAQUE]]* [[DEST_OPQ]] to [[A]]*
diff --git a/test/IRGen/vtable_symbol_linkage.swift b/test/IRGen/vtable_symbol_linkage.swift
index f841fa3..9547b4f 100644
--- a/test/IRGen/vtable_symbol_linkage.swift
+++ b/test/IRGen/vtable_symbol_linkage.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %S/Inputs/vtable_symbol_linkage_base.swift -emit-module -emit-module-path=%t/BaseModule.swiftmodule -emit-library -module-name BaseModule -o %t/BaseModule.%target-dylib-extension
 // RUN: %target-build-swift -I %t %s %t/BaseModule.%target-dylib-extension -o %t/a.out
 
diff --git a/test/IRGen/weak.sil b/test/IRGen/weak.sil
index 69c79fe..8eae972 100644
--- a/test/IRGen/weak.sil
+++ b/test/IRGen/weak.sil
@@ -103,16 +103,8 @@
 
 // Value witnesses for A:
 
-//   destroyBuffer
-//     The value is stored out of line so that the buffer is bitwise-takable.
-// CHECK:    define linkonce_odr hidden void @_T04weak1AVwXX([[BUFFER:\[24 x i8\]]]* [[ARG:%.*]], [[TYPE]]*
-// CHECK:      [[T0:%.*]] = bitcast [[BUFFER]]* [[ARG]] to [[A]]*
-// CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [[A]], [[A]]* [[T0]], i32 0, i32 0
-// CHECK-NEXT: call void @swift_weakDestroy([[WEAK]]* [[T2]])
-// CHECK-NEXT: ret void
-
 //   initializeBufferWithCopyOfBuffer
-// CHECK:    define linkonce_odr hidden [[OPAQUE]]* @_T04weak1AVwCP([[BUFFER]]* [[DESTBUF:%.*]], [[BUFFER]]* [[SRCBUF:%.*]], [[TYPE]]*
+// CHECK:    define linkonce_odr hidden [[OPAQUE]]* @_T04weak1AVwCP([[BUFFER:\[24 x i8\]]]* [[DESTBUF:%.*]], [[BUFFER]]* [[SRCBUF:%.*]], [[TYPE]]*
 // CHECK:      [[DEST:%.*]] = bitcast [[BUFFER]]* [[DESTBUF]] to [[A]]*
 // CHECK-NEXT: [[SRC:%.*]] = bitcast [[BUFFER]]* [[SRCBUF]] to [[A]]*
 // CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[DEST]], i32 0, i32 0
@@ -128,16 +120,6 @@
 // CHECK-NEXT: call void @swift_weakDestroy([[WEAK]]* [[T1]])
 // CHECK-NEXT: ret void
 
-//   initializeBufferWithCopy
-// CHECK:    define linkonce_odr hidden [[OPAQUE]]* @_T04weak1AVwCp([[BUFFER]]* [[DESTBUF:%.*]], [[OPAQUE]]* [[SRC_OPQ:%.*]], [[TYPE]]*
-// CHECK:      [[SRC:%.*]] = bitcast [[OPAQUE]]* [[SRC_OPQ]] to [[A]]*
-// CHECK-NEXT: [[DEST:%.*]] = bitcast [[BUFFER]]* [[DESTBUF]] to [[A]]*
-// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[DEST]], i32 0, i32 0
-// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[A]], [[A]]* [[SRC]], i32 0, i32 0
-// CHECK-NEXT: call void @swift_weakCopyInit([[WEAK]]* [[T0]], [[WEAK]]* [[T1]])
-// CHECK-NEXT: [[T0:%.*]] = bitcast [[A]]* [[DEST]] to [[OPAQUE]]*
-// CHECK-NEXT: ret [[OPAQUE]]* [[T0]]
-
 //   initializeWithCopy
 // CHECK:    define linkonce_odr hidden [[OPAQUE]]* @_T04weak1AVwcp([[OPAQUE]]* [[DEST_OPQ:%.*]], [[OPAQUE]]* [[SRC_OPQ:%.*]], [[TYPE]]*
 // CHECK:      [[DEST:%.*]] = bitcast [[OPAQUE]]* [[DEST_OPQ]] to [[A]]*
diff --git a/test/IRGen/weak_import.swift b/test/IRGen/weak_import.swift
index 6caa3c1..a4732ca 100644
--- a/test/IRGen/weak_import.swift
+++ b/test/IRGen/weak_import.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-irgen-test-overlays
 //
 // Specify explicit target triples for the deployment target to test weak
diff --git a/test/IRGen/zero_size_types.swift b/test/IRGen/zero_size_types.swift
index 0363d30..58855f7 100644
--- a/test/IRGen/zero_size_types.swift
+++ b/test/IRGen/zero_size_types.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -Xllvm -sil-disable-pass="Generic Function Specialization" %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Inputs/clang-importer-sdk/usr/include/CoreFoundation.h b/test/Inputs/clang-importer-sdk/usr/include/CoreFoundation.h
index f628500..3f96927 100644
--- a/test/Inputs/clang-importer-sdk/usr/include/CoreFoundation.h
+++ b/test/Inputs/clang-importer-sdk/usr/include/CoreFoundation.h
@@ -14,6 +14,10 @@
 typedef struct __CFTree *CFTreeRef;
 typedef const struct __attribute__((objc_bridge(CFURL))) __CFURL * CFURLRef;
 
+typedef struct __attribute__((objc_bridge(NSDictionary))) __CFDictionary const *CFDictionaryRef;
+typedef struct __attribute__((objc_bridge(NSArray))) __CFArray const *CFArrayRef;
+typedef struct __attribute__((objc_bridge(NSSet))) __CFSet const *CFSetRef;
+
 typedef CFTypeRef CFAliasForTypeRef;
 
 
diff --git a/test/InterfaceHash/added_function.swift b/test/InterfaceHash/added_function.swift
index ca29fe6..ea91b52 100644
--- a/test/InterfaceHash/added_function.swift
+++ b/test/InterfaceHash/added_function.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/added_method.swift b/test/InterfaceHash/added_method.swift
index e5cfb8b..fa35d4c 100644
--- a/test/InterfaceHash/added_method.swift
+++ b/test/InterfaceHash/added_method.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/added_private_class_private_property.swift b/test/InterfaceHash/added_private_class_private_property.swift
index e5effca..6a710b8 100644
--- a/test/InterfaceHash/added_private_class_private_property.swift
+++ b/test/InterfaceHash/added_private_class_private_property.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/added_private_class_property.swift b/test/InterfaceHash/added_private_class_property.swift
index b422721..c9a9002 100644
--- a/test/InterfaceHash/added_private_class_property.swift
+++ b/test/InterfaceHash/added_private_class_property.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/added_private_enum_private_property.swift b/test/InterfaceHash/added_private_enum_private_property.swift
index a94d15d..40dc265 100644
--- a/test/InterfaceHash/added_private_enum_private_property.swift
+++ b/test/InterfaceHash/added_private_enum_private_property.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/added_private_enum_property.swift b/test/InterfaceHash/added_private_enum_property.swift
index 02890f6..bb51b81 100644
--- a/test/InterfaceHash/added_private_enum_property.swift
+++ b/test/InterfaceHash/added_private_enum_property.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/added_private_method.swift b/test/InterfaceHash/added_private_method.swift
index d3ac4af..e153ada 100644
--- a/test/InterfaceHash/added_private_method.swift
+++ b/test/InterfaceHash/added_private_method.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/added_private_method_value_types.swift b/test/InterfaceHash/added_private_method_value_types.swift
index bf52d62..b6bc2e4 100644
--- a/test/InterfaceHash/added_private_method_value_types.swift
+++ b/test/InterfaceHash/added_private_method_value_types.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/added_private_protocol_method.swift b/test/InterfaceHash/added_private_protocol_method.swift
index eb389e5..66ac2ca 100644
--- a/test/InterfaceHash/added_private_protocol_method.swift
+++ b/test/InterfaceHash/added_private_protocol_method.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/added_private_protocol_property.swift b/test/InterfaceHash/added_private_protocol_property.swift
index 3f385da..23820c7 100644
--- a/test/InterfaceHash/added_private_protocol_property.swift
+++ b/test/InterfaceHash/added_private_protocol_property.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/added_private_struct_private_property.swift b/test/InterfaceHash/added_private_struct_private_property.swift
index 77df73a..09ef6aa 100644
--- a/test/InterfaceHash/added_private_struct_private_property.swift
+++ b/test/InterfaceHash/added_private_struct_private_property.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/added_private_struct_property.swift b/test/InterfaceHash/added_private_struct_property.swift
index 27e0afe..454adf4 100644
--- a/test/InterfaceHash/added_private_struct_property.swift
+++ b/test/InterfaceHash/added_private_struct_property.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/changed_private_var_type.swift b/test/InterfaceHash/changed_private_var_type.swift
index 5efe9df..102889f 100644
--- a/test/InterfaceHash/changed_private_var_type.swift
+++ b/test/InterfaceHash/changed_private_var_type.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/changed_var_name.swift b/test/InterfaceHash/changed_var_name.swift
index 92b96b6..30b39ee 100644
--- a/test/InterfaceHash/changed_var_name.swift
+++ b/test/InterfaceHash/changed_var_name.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/changed_var_type.swift b/test/InterfaceHash/changed_var_type.swift
index 0c9c316..8990c7c 100644
--- a/test/InterfaceHash/changed_var_type.swift
+++ b/test/InterfaceHash/changed_var_type.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/edited_function_body.swift b/test/InterfaceHash/edited_function_body.swift
index 45a3e6f..5401580 100644
--- a/test/InterfaceHash/edited_function_body.swift
+++ b/test/InterfaceHash/edited_function_body.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/edited_method_body.swift b/test/InterfaceHash/edited_method_body.swift
index cb21a94..a4ff8f0 100644
--- a/test/InterfaceHash/edited_method_body.swift
+++ b/test/InterfaceHash/edited_method_body.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/InterfaceHash/edited_property_getter.swift b/test/InterfaceHash/edited_property_getter.swift
index d49b0b0..0a94e24 100644
--- a/test/InterfaceHash/edited_property_getter.swift
+++ b/test/InterfaceHash/edited_property_getter.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -dump-interface-hash %t/a.swift 2> %t/a.hash
 // RUN: %target-swift-frontend -dump-interface-hash %t/b.swift 2> %t/b.hash
diff --git a/test/Interpreter/Inputs/ObjCClasses/ObjCClasses.h b/test/Interpreter/Inputs/ObjCClasses/ObjCClasses.h
index dfee11d..324ef03 100644
--- a/test/Interpreter/Inputs/ObjCClasses/ObjCClasses.h
+++ b/test/Interpreter/Inputs/ObjCClasses/ObjCClasses.h
@@ -14,6 +14,12 @@
 @property NSInteger t;
 @end
 
+@interface HasHiddenIvars2 : NSObject
+@property id x;
+@property id y;
+@property id z;
+@end
+
 @interface TestingNSError : NSObject
 + (BOOL)throwNilError:(NSError**)error;
 + (nullable void *)maybeThrow:(BOOL)shouldThrow error:(NSError **)error;
diff --git a/test/Interpreter/Inputs/ObjCClasses/ObjCClasses.m b/test/Interpreter/Inputs/ObjCClasses/ObjCClasses.m
index a2f714a..49b1eae 100644
--- a/test/Interpreter/Inputs/ObjCClasses/ObjCClasses.m
+++ b/test/Interpreter/Inputs/ObjCClasses/ObjCClasses.m
@@ -10,6 +10,12 @@
 @synthesize t;
 @end
 
+@implementation HasHiddenIvars2
+@synthesize x;
+@synthesize y;
+@synthesize z;
+@end
+
 @implementation TestingNSError
 + (BOOL)throwNilError:(NSError **)error {
   return 0;
diff --git a/test/Interpreter/SDK/Foundation_NSLog.swift b/test/Interpreter/SDK/Foundation_NSLog.swift
index d6e1b30..919f2ac 100644
--- a/test/Interpreter/SDK/Foundation_NSLog.swift
+++ b/test/Interpreter/SDK/Foundation_NSLog.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: echo 'void testNSLog();' > %t/NSLogIsWorking.h
 // RUN: echo '@import Foundation; void testNSLog() { NSLog(@"working"); }' | %target-clang -fobjc-arc -fmodules -x objective-c - -c -o %t/NSLogIsWorking.o
diff --git a/test/Interpreter/SDK/Foundation_bridge.swift b/test/Interpreter/SDK/Foundation_bridge.swift
index 2c3a59b..6812ed5 100644
--- a/test/Interpreter/SDK/Foundation_bridge.swift
+++ b/test/Interpreter/SDK/Foundation_bridge.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -import-objc-header %S/Inputs/Foundation_bridge.h -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/SDK/Inputs/check_class_for_archiving.h b/test/Interpreter/SDK/Inputs/check_class_for_archiving.h
new file mode 100644
index 0000000..5d78e36
--- /dev/null
+++ b/test/Interpreter/SDK/Inputs/check_class_for_archiving.h
@@ -0,0 +1,7 @@
+#import <Foundation/Foundation.h>
+
+@interface NSKeyedUnarchiver (SwiftAdditions)
++ (int)_swift_checkClassAndWarnForKeyedArchiving:(Class)cls operation:(int)operation
+    NS_SWIFT_NAME(_swift_checkClassAndWarnForKeyedArchiving(_:operation:));
+@end
+
diff --git a/test/Interpreter/SDK/OS_objects.swift b/test/Interpreter/SDK/OS_objects.swift
index cf4af93..cc54bfd 100644
--- a/test/Interpreter/SDK/OS_objects.swift
+++ b/test/Interpreter/SDK/OS_objects.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift %t/main.swift -I %S/Inputs/custom-modules/ -o %t/OS_objects -Xfrontend -disable-access-control
diff --git a/test/Interpreter/SDK/UIApplicationMain.swift b/test/Interpreter/SDK/UIApplicationMain.swift
index 10e73c2..acb34ee 100644
--- a/test/Interpreter/SDK/UIApplicationMain.swift
+++ b/test/Interpreter/SDK/UIApplicationMain.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/main -parse-as-library
 
 // We aren't yet able to run tests that require a UI context, so just try
diff --git a/test/Interpreter/SDK/archive_attributes.swift b/test/Interpreter/SDK/archive_attributes.swift
index 9d906e1..6e8c74d 100644
--- a/test/Interpreter/SDK/archive_attributes.swift
+++ b/test/Interpreter/SDK/archive_attributes.swift
@@ -1,8 +1,8 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -module-name=test -DENCODE -o %t/encode
 // RUN: %target-build-swift %s -module-name=test -o %t/decode
 // RUN: %target-run %t/encode %t/test.arc
-// RUN: %FileCheck -check-prefix=CHECK-ARCHIVE %s < %t/test.arc
+// RUN: plutil -p %t/test.arc | %FileCheck -check-prefix=CHECK-ARCHIVE %s
 // RUN: %target-run %t/decode %t/test.arc | %FileCheck %s
 
 // REQUIRES: executable_test
@@ -14,8 +14,8 @@
 import Foundation
 
 struct ABC {
-  // CHECK-ARCHIVE-DAG: nested_class_coding
-  @NSKeyedArchiverClassName("nested_class_coding")
+  // CHECK-ARCHIVE-DAG: "$classname" => "nested_class_coding"
+  @objc(nested_class_coding)
   class NestedClass : NSObject, NSCoding {
     var i : Int
 
@@ -33,8 +33,8 @@
   }
 }
 
-// CHECK-ARCHIVE-DAG: private_class_coding
-@NSKeyedArchiverClassName("private_class_coding")
+// CHECK-ARCHIVE-DAG: "$classname" => "private_class_coding"
+@objc(private_class_coding)
 private class PrivateClass : NSObject, NSCoding {
   var pi : Int
 
@@ -51,7 +51,6 @@
   }
 }
 
-@NSKeyedArchiverEncodeNonGenericSubclassesOnly
 class GenericClass<T> : NSObject, NSCoding {
   var gi : T? = nil
 
@@ -65,7 +64,7 @@
   }
 }
 
-// CHECK-ARCHIVE-DAG: test.IntClass
+// CHECK-ARCHIVE-DAG: "$classname" => "test.IntClass"
 class IntClass : GenericClass<Int> {
 
   init(ii: Int) {
@@ -83,8 +82,8 @@
   }
 }
 
-// CHECK-ARCHIVE-DAG: double_class_coding
-@NSKeyedArchiverClassName("double_class_coding")
+// CHECK-ARCHIVE-DAG: "$classname" => "double_class_coding"
+@objc(double_class_coding)
 class DoubleClass : GenericClass<Double> {
 
   init(dd: Double) {
@@ -102,8 +101,8 @@
   }
 }
 
-// CHECK-ARCHIVE-DAG: top_level_coding
-@NSKeyedArchiverClassName("top_level_coding")
+// CHECK-ARCHIVE-DAG: "$classname" => "top_level_coding"
+@objc(top_level_coding)
 class TopLevel : NSObject, NSCoding {
   var tli : Int
 
diff --git a/test/Interpreter/SDK/archive_compatibility.swift b/test/Interpreter/SDK/archive_compatibility.swift
index 19875d2..6706487 100644
--- a/test/Interpreter/SDK/archive_compatibility.swift
+++ b/test/Interpreter/SDK/archive_compatibility.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -module-name=test -o %t/a.out
 // RUN: %target-run %t/a.out %S/Inputs/test.arc | %FileCheck %s
 
diff --git a/test/Interpreter/SDK/archiving_generic_swift_class.swift b/test/Interpreter/SDK/archiving_generic_swift_class.swift
index 1a612a3..b862e60 100644
--- a/test/Interpreter/SDK/archiving_generic_swift_class.swift
+++ b/test/Interpreter/SDK/archiving_generic_swift_class.swift
@@ -6,7 +6,6 @@
 
 import Foundation
 
-@NSKeyedArchiverEncodeNonGenericSubclassesOnly
 final class Foo<T: NSCoding>: NSObject, NSCoding {
   var one, two: T
 
diff --git a/test/Interpreter/SDK/autolinking.swift b/test/Interpreter/SDK/autolinking.swift
index 5dcbee6..c8cbaa8 100644
--- a/test/Interpreter/SDK/autolinking.swift
+++ b/test/Interpreter/SDK/autolinking.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: echo "int global() { return 42; }" | %clang -dynamiclib -o %t/libLinkMe.dylib -x c -
 // RUN: %target-swift-frontend -emit-module -parse-stdlib -o %t -module-name LinkMe -module-link-name LinkMe %S/../../Inputs/empty.swift
 
diff --git a/test/Interpreter/SDK/c_pointers.swift b/test/Interpreter/SDK/c_pointers.swift
index 1c562ff..f7f3657 100644
--- a/test/Interpreter/SDK/c_pointers.swift
+++ b/test/Interpreter/SDK/c_pointers.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/SDK/check_class_for_archiving.swift b/test/Interpreter/SDK/check_class_for_archiving.swift
new file mode 100644
index 0000000..fb52c1d
--- /dev/null
+++ b/test/Interpreter/SDK/check_class_for_archiving.swift
@@ -0,0 +1,60 @@
+// RUN: %empty-directory(%t)
+// RUN: %target-build-swift %s -module-name=_Test -import-objc-header %S/Inputs/check_class_for_archiving.h -o %t/a.out
+// RUN: %target-run %t/a.out | %FileCheck %s
+
+// REQUIRES: executable_test
+// REQUIRES: objc_interop
+
+import Foundation
+
+class SwiftClass {}
+
+class ObjcClass : NSObject {}
+
+private class PrivateClass : NSObject {}
+
+@objc(named_class)
+private class NamedClass1 : NSObject {}
+
+@objc(_T3nix11NamedClass2C)
+private class NamedClass2 : NSObject {}
+
+class GenericClass<T> : NSObject {}
+
+class DerivedClass : GenericClass<Int> {}
+
+@objc(_T3nix20DerivedClassWithNameC)
+private class DerivedClassWithName : GenericClass<Int> {}
+
+struct ABC {
+  class InnerClass : NSObject {}
+}
+
+struct DEF<T> {
+  class InnerClass : NSObject {}
+}
+
+let op: Int32 = 0 // archiving
+
+// CHECK: SwiftClass: 0
+print("SwiftClass: \(NSKeyedUnarchiver._swift_checkClassAndWarnForKeyedArchiving(SwiftClass.self, operation: op))")
+// CHECK: ObjcClass: 0
+print("ObjcClass: \(NSKeyedUnarchiver._swift_checkClassAndWarnForKeyedArchiving(ObjcClass.self, operation: op))")
+// CHECK: PrivateClass: 2
+print("PrivateClass: \(NSKeyedUnarchiver._swift_checkClassAndWarnForKeyedArchiving(PrivateClass.self, operation: op))")
+// CHECK: NamedClass1: 0
+print("NamedClass1: \(NSKeyedUnarchiver._swift_checkClassAndWarnForKeyedArchiving(NamedClass1.self, operation: op))")
+// CHECK: NamedClass2: 0
+print("NamedClass2: \(NSKeyedUnarchiver._swift_checkClassAndWarnForKeyedArchiving(NamedClass2.self, operation: op))")
+// CHECK: GenericClass: 1
+print("GenericClass: \(NSKeyedUnarchiver._swift_checkClassAndWarnForKeyedArchiving(GenericClass<Int>.self, operation: op))")
+// CHECK: DerivedClass: 0
+print("DerivedClass: \(NSKeyedUnarchiver._swift_checkClassAndWarnForKeyedArchiving(DerivedClass.self, operation: op))")
+// CHECK: DerivedClassWithName: 0
+print("DerivedClassWithName: \(NSKeyedUnarchiver._swift_checkClassAndWarnForKeyedArchiving(DerivedClass.self, operation: op))")
+// CHECK: InnerClass: 2
+print("InnerClass: \(NSKeyedUnarchiver._swift_checkClassAndWarnForKeyedArchiving(ABC.InnerClass.self, operation: op))")
+// CHECK: InnerClass2: 1
+print("InnerClass2: \(NSKeyedUnarchiver._swift_checkClassAndWarnForKeyedArchiving(DEF<Int>.InnerClass.self, operation: op))")
+// CHECK: NSKeyedUnarchiver: 0
+print("NSKeyedUnarchiver: \(NSKeyedUnarchiver._swift_checkClassAndWarnForKeyedArchiving(NSKeyedUnarchiver.self, operation: op))")
diff --git a/test/Interpreter/SDK/class_as_object.swift b/test/Interpreter/SDK/class_as_object.swift
index f239b2a..c4b3d7f 100644
--- a/test/Interpreter/SDK/class_as_object.swift
+++ b/test/Interpreter/SDK/class_as_object.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/SDK/errors.swift b/test/Interpreter/SDK/errors.swift
index 98a7950..9eec090 100644
--- a/test/Interpreter/SDK/errors.swift
+++ b/test/Interpreter/SDK/errors.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -import-objc-header %S/Inputs/errors.h -o %t/main
 // RUN: %target-run %t/main
 
diff --git a/test/Interpreter/SDK/libc.swift b/test/Interpreter/SDK/libc.swift
index ee2412d..f6f2c16 100644
--- a/test/Interpreter/SDK/libc.swift
+++ b/test/Interpreter/SDK/libc.swift
@@ -1,7 +1,7 @@
 /* magic */
 // Do not edit the line above.
 
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-run-simple-swift %s %t | %FileCheck %s
 
 // REQUIRES: executable_test
diff --git a/test/Interpreter/SDK/missing_imports_repl.swift b/test/Interpreter/SDK/missing_imports_repl.swift
index 295f42a..aa6e0ab 100644
--- a/test/Interpreter/SDK/missing_imports_repl.swift
+++ b/test/Interpreter/SDK/missing_imports_repl.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: touch %t/Corrupted_Module.swiftmodule
 // RUN: not %target-repl-run-simple-swift -I %t 2> %t/stderr.txt | %FileCheck %s
 // RUN: %FileCheck -check-prefix CHECK-ERROR %s < %t/stderr.txt
diff --git a/test/Interpreter/SDK/multi-file-imported-enum.swift b/test/Interpreter/SDK/multi-file-imported-enum.swift
index 6c6744c..81b2bb7 100644
--- a/test/Interpreter/SDK/multi-file-imported-enum.swift
+++ b/test/Interpreter/SDK/multi-file-imported-enum.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -module-name test -whole-module-optimization %s %S/Inputs/multi-file-imported-enum/main.swift -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/SDK/objc_bridge.swift b/test/Interpreter/SDK/objc_bridge.swift
index 2540c9d..2a9e6ee 100644
--- a/test/Interpreter/SDK/objc_bridge.swift
+++ b/test/Interpreter/SDK/objc_bridge.swift
@@ -1,7 +1,7 @@
 // Test Objective-C bridging for a non-Foundation type that is
 // otherwise unknown to the compiler.
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // Build the Appliances module
 // RUN: %target-clang -fobjc-arc -I %S/../../Inputs/ObjCBridging %S/../../Inputs/ObjCBridging/Appliances.m -c -o %t/AppliancesObjC.o
diff --git a/test/Interpreter/SDK/objc_factory_method.swift b/test/Interpreter/SDK/objc_factory_method.swift
index 800f91f..6db4b8c 100644
--- a/test/Interpreter/SDK/objc_factory_method.swift
+++ b/test/Interpreter/SDK/objc_factory_method.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -module-name FactoryTest %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/SDK/objc_mangling.swift b/test/Interpreter/SDK/objc_mangling.swift
index d585d6f..fcc54a1 100644
--- a/test/Interpreter/SDK/objc_mangling.swift
+++ b/test/Interpreter/SDK/objc_mangling.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -module-name MangleTest %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/SDK/objc_subclass.swift b/test/Interpreter/SDK/objc_subclass.swift
index 4aa7aed..dffad40 100644
--- a/test/Interpreter/SDK/objc_subclass.swift
+++ b/test/Interpreter/SDK/objc_subclass.swift
@@ -18,6 +18,9 @@
   required init?(coder aDecoder: NSCoder) {
     super.init(coder: aDecoder)
   }
+  required init(itemProviderData data: Data, typeIdentifier: String) throws {
+    fatalError("don't call this initializer")
+  }
 
   override var length: Int {
     return len
diff --git a/test/Interpreter/SDK/object_literals.swift b/test/Interpreter/SDK/object_literals.swift
index 8f52f95..9c5f7db 100644
--- a/test/Interpreter/SDK/object_literals.swift
+++ b/test/Interpreter/SDK/object_literals.swift
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && mkdir -p %t/Test.app/Contents/MacOS
+// RUN: %empty-directory(%t)
+// RUN: %empty-directory(%t/Test.app/Contents/MacOS)
 // RUN: cp -r %S/Inputs/object_literals-Resources %t/Test.app/Contents/Resources
 // RUN: %target-build-swift %s -o %t/Test.app/Contents/MacOS/main
 // RUN: %target-run %t/Test.app/Contents/MacOS/main
diff --git a/test/Interpreter/SDK/weak_objc_interop.swift b/test/Interpreter/SDK/weak_objc_interop.swift
index f2598ab..19288d9 100644
--- a/test/Interpreter/SDK/weak_objc_interop.swift
+++ b/test/Interpreter/SDK/weak_objc_interop.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: cp %s %t/main.swift
 // RUN: %target-clang -fobjc-arc %S/Inputs/ObjCWeak/ObjCWeak.m -c -o %t/ObjCWeak.o
diff --git a/test/Interpreter/availability_weak_linking.swift b/test/Interpreter/availability_weak_linking.swift
index 35a7cd8..fd99f1b 100644
--- a/test/Interpreter/availability_weak_linking.swift
+++ b/test/Interpreter/availability_weak_linking.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp -R %S/Inputs/FakeUnavailableObjCFramework.framework %t
 // RUN: %target-clang -dynamiclib %S/Inputs/FakeUnavailableObjCFramework.m -fmodules -F %t -framework Foundation -o %t/FakeUnavailableObjCFramework.framework/FakeUnavailableObjCFramework
 
diff --git a/test/Interpreter/builtin.swift b/test/Interpreter/builtin.swift
index 514b30c..d3ed063 100644
--- a/test/Interpreter/builtin.swift
+++ b/test/Interpreter/builtin.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -parse-stdlib -Xfrontend -disable-access-control -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/builtin_bridge_object.swift b/test/Interpreter/builtin_bridge_object.swift
index 9c55b5b..b314c4b 100644
--- a/test/Interpreter/builtin_bridge_object.swift
+++ b/test/Interpreter/builtin_bridge_object.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -parse-stdlib %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/c_bitfields.swift b/test/Interpreter/c_bitfields.swift
index 4294663..85cb5e5 100644
--- a/test/Interpreter/c_bitfields.swift
+++ b/test/Interpreter/c_bitfields.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -I %S/../Inputs/clang-importer-sdk/platform/any/usr/include %s -o %t/a.out
 // RUN: %target-run %t/a.out
 // REQUIRES: executable_test
diff --git a/test/Interpreter/c_unions.swift b/test/Interpreter/c_unions.swift
index b039caf..c50193f 100644
--- a/test/Interpreter/c_unions.swift
+++ b/test/Interpreter/c_unions.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -I %S/../Inputs/clang-importer-sdk/platform/any/usr/include %s -o %t/a.out
 // RUN: %target-run %t/a.out
 // REQUIRES: executable_test
diff --git a/test/Interpreter/class_resilience.swift b/test/Interpreter/class_resilience.swift
index e0561bc..e437cdb 100644
--- a/test/Interpreter/class_resilience.swift
+++ b/test/Interpreter/class_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-build-swift -emit-library -Xfrontend -enable-resilience -c %S/../Inputs/resilient_struct.swift -o %t/resilient_struct.o
 // RUN: %target-build-swift -emit-module -Xfrontend -enable-resilience -c %S/../Inputs/resilient_struct.swift -o %t/resilient_struct.o
diff --git a/test/Interpreter/collection_casts.swift b/test/Interpreter/collection_casts.swift
index c8a3fc5..3940aab 100644
--- a/test/Interpreter/collection_casts.swift
+++ b/test/Interpreter/collection_casts.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/main
 // RUN: %target-build-swift %s -o %t/main-optimized
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/Interpreter/enum.swift b/test/Interpreter/enum.swift
index c6debb8..50c9eb8 100644
--- a/test/Interpreter/enum.swift
+++ b/test/Interpreter/enum.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/enum_resilience.swift b/test/Interpreter/enum_resilience.swift
index 10b823c..17841d3 100644
--- a/test/Interpreter/enum_resilience.swift
+++ b/test/Interpreter/enum_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-build-swift -emit-library -Xfrontend -enable-resilience -c %S/../Inputs/resilient_struct.swift -o %t/resilient_struct.o
 // RUN: %target-build-swift -emit-module -Xfrontend -enable-resilience -c %S/../Inputs/resilient_struct.swift -o %t/resilient_struct.o
diff --git a/test/Interpreter/errors_imported.swift b/test/Interpreter/errors_imported.swift
index 7595aec..918eb72 100644
--- a/test/Interpreter/errors_imported.swift
+++ b/test/Interpreter/errors_imported.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang -fobjc-arc %S/Inputs/ObjCClasses/ObjCClasses.m -c -o %t/ObjCClasses.o
 // RUN: %target-build-swift -I %S/Inputs/ObjCClasses/ %t/ObjCClasses.o %s -o %t/a.out
diff --git a/test/Interpreter/fractal.swift b/test/Interpreter/fractal.swift
index 59658af..72b06ee 100644
--- a/test/Interpreter/fractal.swift
+++ b/test/Interpreter/fractal.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-jit-run %s -I %S -enable-source-import | %FileCheck %s
 // REQUIRES: executable_test
 
diff --git a/test/Interpreter/generic_class.swift b/test/Interpreter/generic_class.swift
index ce6e8af..138a1b1 100644
--- a/test/Interpreter/generic_class.swift
+++ b/test/Interpreter/generic_class.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/generic_class_empty_field.swift b/test/Interpreter/generic_class_empty_field.swift
index 90f5624..978af64 100644
--- a/test/Interpreter/generic_class_empty_field.swift
+++ b/test/Interpreter/generic_class_empty_field.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/generic_objc_subclass.swift b/test/Interpreter/generic_objc_subclass.swift
index 9ade224..95b32ce 100644
--- a/test/Interpreter/generic_objc_subclass.swift
+++ b/test/Interpreter/generic_objc_subclass.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang -fobjc-arc %S/Inputs/ObjCClasses/ObjCClasses.m -c -o %t/ObjCClasses.o
 // RUN: %target-build-swift -I %S/Inputs/ObjCClasses/ -Xlinker %t/ObjCClasses.o %s -o %t/a.out
@@ -279,3 +278,23 @@
 // CHECK: Goodbye from ConcreteOverrideOfDynamicMethod with T = Int
 // CHECK: Goodbye from ConcreteOverrideOfDynamicMethod
 ConcreteOverrideOfDynamicMethod.funkyTown()
+
+class Foo {}
+class Bar {}
+class DependOnAlignOf<T> : HasHiddenIvars2 {
+  var first = Foo()
+  var second = Bar()
+  var third: T?
+}
+
+let ad = DependOnAlignOf<Double>()
+let ai = DependOnAlignOf<Int>()
+
+let fd = { (ad.x, ad.first, ad.second, ad.third) }
+let fi = { (ai.x, ai.first, ai.second, ai.third) }
+
+// CHECK: (nil, a.Foo, a.Bar, nil)
+print(fd())
+
+// CHECK: (nil, a.Foo, a.Bar, nil)
+print(fi())
diff --git a/test/Interpreter/generic_ref_counts.swift b/test/Interpreter/generic_ref_counts.swift
index ca88d4f..44e6307 100644
--- a/test/Interpreter/generic_ref_counts.swift
+++ b/test/Interpreter/generic_ref_counts.swift
@@ -6,47 +6,49 @@
 // Regression test for <rdar://problem/16119895>.
 
 struct Generic<T> {
-  typealias Storage = _HeapBufferStorage<Int,T>
+  typealias Storage = ManagedBuffer<Int,T>
 
   init() {
-    buffer = _HeapBuffer(Storage.self, 0, 0)
+    buffer = ManagedBufferPointer(
+      bufferClass: Storage.self, minimumCapacity: 0) { _,_ in 0 }
   }
 
-  mutating func isUniquelyReferenced() -> Bool {
-    return buffer.isUniquelyReferenced()
+  mutating func isUniqueReference() -> Bool {
+    return buffer.isUniqueReference()
   }
   
-  var buffer: _HeapBuffer<Int, T>
+  var buffer: ManagedBufferPointer<Int, T>
 }
 func g0() {
   var x = Generic<Int>()
   // CHECK: true
-  print(x.isUniquelyReferenced())
+  print(x.isUniqueReference())
   // CHECK-NEXT: true
-  print(x.buffer.isUniquelyReferenced())
+  print(x.buffer.isUniqueReference())
 }
 g0()
 
 
 struct NonGeneric {
   typealias T = Int
-  typealias Storage = _HeapBufferStorage<Int,T>
+  typealias Storage = ManagedBuffer<Int,T>
 
   init() {
-    buffer = _HeapBuffer(Storage.self, 0, 0)
+    buffer = ManagedBufferPointer(
+      bufferClass: Storage.self, minimumCapacity: 0) { _,_ in 0 }
   }
 
-  mutating func isUniquelyReferenced() -> Bool {
-    return buffer.isUniquelyReferenced()
+  mutating func isUniqueReference() -> Bool {
+    return buffer.isUniqueReference()
   }
   
-  var buffer: _HeapBuffer<Int, T>
+  var buffer: ManagedBufferPointer<Int, T>
 }
 func g1() {
   var x = NonGeneric()
   // CHECK-NEXT: true
-  print(x.isUniquelyReferenced())
+  print(x.isUniqueReference())
   // CHECK-NEXT: true
-  print(x.buffer.isUniquelyReferenced())
+  print(x.buffer.isUniqueReference())
 }
 g1()
diff --git a/test/Interpreter/generic_struct.swift b/test/Interpreter/generic_struct.swift
index d90af0d..dee0867 100644
--- a/test/Interpreter/generic_struct.swift
+++ b/test/Interpreter/generic_struct.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/global_resilience.swift b/test/Interpreter/global_resilience.swift
index 291cda0..847782d 100644
--- a/test/Interpreter/global_resilience.swift
+++ b/test/Interpreter/global_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -emit-library -I %t -Xfrontend -enable-resilience -c %S/../Inputs/resilient_global.swift -o %t/resilient_global.o
 // RUN: %target-build-swift -emit-module -I %t -Xfrontend -enable-resilience -c %S/../Inputs/resilient_global.swift -o %t/resilient_global.o
 // RUN: %target-build-swift -emit-library -I %t -Xfrontend -enable-resilience -c %S/../Inputs/resilient_struct.swift -o %t/resilient_struct.o
diff --git a/test/Interpreter/import_as_member.swift b/test/Interpreter/import_as_member.swift
index 7918522..2546b5b 100644
--- a/test/Interpreter/import_as_member.swift
+++ b/test/Interpreter/import_as_member.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %clang -isysroot %sdk %S/Inputs/ImportAsMember/IAMVec.c -c -o %t/IAMVec.o
 // RUN: %target-build-swift -I %S/Inputs/ImportAsMember/ -Xlinker %t/IAMVec.o %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
diff --git a/test/Interpreter/imported_objc_generics.swift b/test/Interpreter/imported_objc_generics.swift
index 50d8ae3..e2a50fc 100644
--- a/test/Interpreter/imported_objc_generics.swift
+++ b/test/Interpreter/imported_objc_generics.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang -fobjc-arc %S/Inputs/ObjCClasses/ObjCClasses.m -c -o %t/ObjCClasses.o
 // RUN: %target-build-swift -I %S/Inputs/ObjCClasses/ %t/ObjCClasses.o %s -o %t/a.out
diff --git a/test/Interpreter/imported_objc_generics_extension.swift b/test/Interpreter/imported_objc_generics_extension.swift
index 8ef4321..7bce570 100644
--- a/test/Interpreter/imported_objc_generics_extension.swift
+++ b/test/Interpreter/imported_objc_generics_extension.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang -fobjc-arc %S/Inputs/ObjCClasses/ObjCClasses.m -c -o %t/ObjCClasses.o
 // RUN: %target-build-swift -I %S/Inputs/ObjCClasses/ %t/ObjCClasses.o %s -o %t/a.out
diff --git a/test/Interpreter/interpret_load_framework.swift b/test/Interpreter/interpret_load_framework.swift
index d0df187..e03a074 100644
--- a/test/Interpreter/interpret_load_framework.swift
+++ b/test/Interpreter/interpret_load_framework.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp -R %S/Inputs/VerySmallObjCFramework.framework %t
 // RUN: %clang -dynamiclib %S/Inputs/VerySmallObjCFramework.m -fmodules -F %t -o %t/VerySmallObjCFramework.framework/VerySmallObjCFramework
 // RUN: %swift_driver -F %t %s | %FileCheck %s
diff --git a/test/Interpreter/nested_generics.swift b/test/Interpreter/nested_generics.swift
index 4c0f0e7..412fa54 100644
--- a/test/Interpreter/nested_generics.swift
+++ b/test/Interpreter/nested_generics.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/objc_bool.swift b/test/Interpreter/objc_bool.swift
index 7c36372..133d2b2 100644
--- a/test/Interpreter/objc_bool.swift
+++ b/test/Interpreter/objc_bool.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang -fobjc-arc %S/Inputs/ObjCClasses/ObjCClasses.m -c -o %t/ObjCClasses.o
 // RUN: %target-build-swift -I %S/Inputs/ObjCClasses/ -Xlinker %t/ObjCClasses.o %s -o %t/a.out
diff --git a/test/Interpreter/objc_class_properties.swift b/test/Interpreter/objc_class_properties.swift
index a880516..23ec4f0 100644
--- a/test/Interpreter/objc_class_properties.swift
+++ b/test/Interpreter/objc_class_properties.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %clang %target-cc-options -isysroot %sdk -fobjc-arc %S/Inputs/ObjCClasses/ObjCClasses.m -c -o %t/ObjCClasses.o
 // RUN: %target-build-swift -I %S/Inputs/ObjCClasses/ %t/ObjCClasses.o %s -o %t/a.out
diff --git a/test/Interpreter/objc_class_properties_runtime.swift b/test/Interpreter/objc_class_properties_runtime.swift
index 606aa4d..bbc4594 100644
--- a/test/Interpreter/objc_class_properties_runtime.swift
+++ b/test/Interpreter/objc_class_properties_runtime.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %clang -arch x86_64 -mmacosx-version-min=10.11 -isysroot %sdk -fobjc-arc %S/Inputs/ObjCClasses/ObjCClasses.m -c -o %t/ObjCClasses.o
 
diff --git a/test/Interpreter/objc_failable_initializers.swift b/test/Interpreter/objc_failable_initializers.swift
index 6ef2cd2..dff3894 100644
--- a/test/Interpreter/objc_failable_initializers.swift
+++ b/test/Interpreter/objc_failable_initializers.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang -fobjc-arc %S/Inputs/ObjCClasses/ObjCClasses.m -c -o %t/ObjCClasses.o
 // RUN: %target-build-swift -I %S/Inputs/ObjCClasses/ -Xlinker %t/ObjCClasses.o %s -o %t/a.out
diff --git a/test/Interpreter/objc_runtime_visible.swift b/test/Interpreter/objc_runtime_visible.swift
index 1900793..7ec2b1e 100644
--- a/test/Interpreter/objc_runtime_visible.swift
+++ b/test/Interpreter/objc_runtime_visible.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %clang %target-cc-options -isysroot %sdk -fobjc-arc %S/Inputs/objc_runtime_visible.m -fmodules -nodefaultlibs -lc -dynamiclib -o %t/libobjc_runtime_visible.dylib -install_name @executable_path/libobjc_runtime_visible.dylib
 // RUN: codesign -f -s - %t/libobjc_runtime_visible.dylib
diff --git a/test/Interpreter/objc_throwing_initializers.swift b/test/Interpreter/objc_throwing_initializers.swift
index 9b02c82..f14676b 100644
--- a/test/Interpreter/objc_throwing_initializers.swift
+++ b/test/Interpreter/objc_throwing_initializers.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang -fobjc-arc %S/Inputs/ObjCClasses/ObjCClasses.m -c -o %t/ObjCClasses.o
 // RUN: %target-build-swift -I %S/Inputs/ObjCClasses/ -Xlinker %t/ObjCClasses.o %s -o %t/a.out
diff --git a/test/Interpreter/pinning.swift b/test/Interpreter/pinning.swift
index fd4b1fc..142c6f1 100644
--- a/test/Interpreter/pinning.swift
+++ b/test/Interpreter/pinning.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -parse-stdlib %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Interpreter/protocol_resilience.swift b/test/Interpreter/protocol_resilience.swift
index 909d206..16b1d5c 100644
--- a/test/Interpreter/protocol_resilience.swift
+++ b/test/Interpreter/protocol_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -emit-library -Xfrontend -enable-resilience -c %S/../Inputs/resilient_protocol.swift -o %t/resilient_protocol.o
 // RUN: %target-build-swift -emit-module -Xfrontend -enable-resilience -c %S/../Inputs/resilient_protocol.swift -o %t/resilient_protocol.o
 // RUN: %target-build-swift %s -Xlinker %t/resilient_protocol.o -I %t -L %t -o %t/main
diff --git a/test/Interpreter/repl_17597453.swift b/test/Interpreter/repl_17597453.swift
index 0ff3ec0..077c65e 100644
--- a/test/Interpreter/repl_17597453.swift
+++ b/test/Interpreter/repl_17597453.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp -R %S/Inputs/VerySmallObjCFramework.framework %t
 // RUN: %clang -dynamiclib %S/Inputs/VerySmallObjCFramework.m -fmodules -F %t -o %t/VerySmallObjCFramework.framework/VerySmallObjCFramework
 // RUN: %target-repl-run-simple-swift -F %t | %FileCheck %s
diff --git a/test/Interpreter/repl_autolinking.swift b/test/Interpreter/repl_autolinking.swift
index 59978a8..dcde7d1 100644
--- a/test/Interpreter/repl_autolinking.swift
+++ b/test/Interpreter/repl_autolinking.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: sed -n -e '/MODULE_A_START$/,/MODULE_A_END$/ p' %s > %t/a.swift
 // RUN: sed -n -e '/MODULE_B_START$/,/MODULE_B_END$/ p' %s > %t/b.swift
 // RUN: sed -n -e '/REPL_START$/,/REPL_END$/ p' %s > %t/repl.swift
diff --git a/test/Interpreter/struct_resilience.swift b/test/Interpreter/struct_resilience.swift
index 50b90fb..ea01da5 100644
--- a/test/Interpreter/struct_resilience.swift
+++ b/test/Interpreter/struct_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -emit-library -Xfrontend -enable-resilience -c %S/../Inputs/resilient_struct.swift -o %t/resilient_struct.o
 // RUN: %target-build-swift -emit-module -Xfrontend -enable-resilience -c %S/../Inputs/resilient_struct.swift -o %t/resilient_struct.o
 // RUN: %target-build-swift %s -Xlinker %t/resilient_struct.o -I %t -L %t -o %t/main
diff --git a/test/Interpreter/testability.swift b/test/Interpreter/testability.swift
index ce9ed7a..8856834 100644
--- a/test/Interpreter/testability.swift
+++ b/test/Interpreter/testability.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -emit-library -c %S/Inputs/testability_helper.swift -enable-testing -force-single-frontend-invocation -o %t/testability_helper.o -emit-module
 
 // RUN: %target-build-swift %s -I %t -Xlinker %t/testability_helper.o -o %t/main
diff --git a/test/Interpreter/wildcard_dispatch_on_catch.swift b/test/Interpreter/wildcard_dispatch_on_catch.swift
index 8e389b9..7e7db6d 100644
--- a/test/Interpreter/wildcard_dispatch_on_catch.swift
+++ b/test/Interpreter/wildcard_dispatch_on_catch.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/Migrator/DoubleEditAPI.json b/test/Migrator/DoubleEditAPI.json
new file mode 100644
index 0000000..150214c
--- /dev/null
+++ b/test/Migrator/DoubleEditAPI.json
@@ -0,0 +1,31 @@
+[
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@SA@SomeItemSet",
+    "OldPrintedName": "SomeItemSet",
+    "NewPrintedName": "some",
+    "NewTypeName": "ItemSet"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "1",
+    "LeftUsr": "c:objc(pl)WillOverrideWithTypeChange(im)doThing:",
+    "LeftComment": "SomeItemSet",
+    "RightUsr": "",
+    "RightComment": "ItemSet.some",
+    "ModuleName": "bar"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "TypeRewritten",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)WillOverrideWithTypeChange(im)doThing:",
+    "LeftComment": "SomeItemSet",
+    "RightUsr": "",
+    "RightComment": "ItemSet.some",
+    "ModuleName": "bar"
+  }
+]
diff --git a/test/Migrator/API-function-hoist.json b/test/Migrator/Inputs/API-function-hoist.json
similarity index 100%
rename from test/Migrator/API-function-hoist.json
rename to test/Migrator/Inputs/API-function-hoist.json
diff --git a/test/Migrator/API.json b/test/Migrator/Inputs/API.json
similarity index 93%
rename from test/Migrator/API.json
rename to test/Migrator/Inputs/API.json
index 64d8858..0dc19ac 100644
--- a/test/Migrator/API.json
+++ b/test/Migrator/Inputs/API.json
@@ -31,6 +31,28 @@
   {
     "DiffItemKind": "CommonDiffItem",
     "NodeKind": "Function",
+    "NodeAnnotation": "WrapOptional",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PropertyUserInterface(cm)methodPlus",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "bar"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(cs)PropertyUserInterface(cm)methodPlus",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "newMethodPlus()",
+    "ModuleName": "bar"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
     "NodeAnnotation": "Rename",
     "ChildIndex": "0",
     "LeftUsr": "c:objc(cs)BarForwardDeclaredClass(im)barInstanceFunc1:anotherValue:anotherValue1:anotherValue2:",
@@ -86,6 +108,17 @@
   {
     "DiffItemKind": "CommonDiffItem",
     "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:@M@null@objc(cs)C(im)field2",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "",
+    "ModuleName": "bar"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
     "NodeAnnotation": "SetterToProperty",
     "ChildIndex": "0",
     "LeftUsr": "c:objc(cs)PropertyUserInterface(im)setField:",
diff --git a/test/Migrator/SpecialCaseAPI.json b/test/Migrator/Inputs/SpecialCaseAPI.json
similarity index 100%
rename from test/Migrator/SpecialCaseAPI.json
rename to test/Migrator/Inputs/SpecialCaseAPI.json
diff --git a/test/Migrator/Inputs/never_compiles_safely_exits_breaking_code.swift b/test/Migrator/Inputs/never_compiles_safely_exits_breaking_code.swift
index c9d25b8..901a0d0 100644
--- a/test/Migrator/Inputs/never_compiles_safely_exits_breaking_code.swift
+++ b/test/Migrator/Inputs/never_compiles_safely_exits_breaking_code.swift
@@ -1 +1 @@
-func foo(_ f: (Void) -> ()) {}
+func foo(_ f: (Int) -> ()) {}
diff --git a/test/Migrator/Inputs/no_duplicate_aarch64_use_tbi_ofm.json b/test/Migrator/Inputs/no_duplicate_aarch64_use_tbi_ofm.json
new file mode 100644
index 0000000..beb2ac2
--- /dev/null
+++ b/test/Migrator/Inputs/no_duplicate_aarch64_use_tbi_ofm.json
@@ -0,0 +1,7 @@
+{
+  ".\/no_duplicate_aarch64_use_tbi.swift": {
+    "object": ".\/no_duplicate_aarch64_use_tbi.o",
+    "swiftmodule": ".\/no_duplicate_aarch64_use_tbi.swiftmodule",
+    "remap": ".\/no_duplicate_aarch64_use_tbi.remap"
+  }
+}
diff --git a/test/Migrator/Inputs/objc_inference_cross_file_A.swift b/test/Migrator/Inputs/objc_inference_cross_file_A.swift
index 0435034..ed7e058 100644
--- a/test/Migrator/Inputs/objc_inference_cross_file_A.swift
+++ b/test/Migrator/Inputs/objc_inference_cross_file_A.swift
@@ -1,7 +1,7 @@
 import Foundation
 
 public class MyClass : NSObject {
-  @objc public func methodUsedInSelector() {}
-  @objc public var propertyUsedInKeyPath: Int { return 2 }
-  @objc dynamic var dynamicVarUsedInSelector: Int { return 2 }
+  public func methodUsedInSelector() {}
+  public var propertyUsedInKeyPath: Int { return 2 }
+  dynamic var dynamicVarUsedInSelector: Int { return 2 }
 }
diff --git a/test/Migrator/Inputs/qualified.json b/test/Migrator/Inputs/qualified.json
new file mode 100644
index 0000000..cda5d4c
--- /dev/null
+++ b/test/Migrator/Inputs/qualified.json
@@ -0,0 +1,26 @@
+[
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(cs)PropertyUserInterface(cm)fieldPlus",
+    "OldPrintedName": "fieldPlus",
+    "OldTypeName": "PropertyUserInterface",
+    "NewPrintedName": "newFieldPlus",
+    "NewTypeName": "NewPropertyUserInterface"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(cs)PropertyUserInterface(cm)methodPlus:",
+    "OldPrintedName": "methodPlus(_:)",
+    "OldTypeName": "PropertyUserInterface",
+    "NewPrintedName": "newMethodPlus(_:)",
+    "NewTypeName": "NewPropertyUserInterface"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@E@FooComparisonResult@FooOrderedSame",
+    "OldPrintedName": "FooOrderedSame",
+    "OldTypeName": "FooComparisonResult",
+    "NewPrintedName": "NewFooOrderedSame",
+    "NewTypeName": "NewFooComparisonResult"
+  }
+]
diff --git a/test/Migrator/always_remove_old_remap_file.swift b/test/Migrator/always_remove_old_remap_file.swift
new file mode 100644
index 0000000..2bf9cc7
--- /dev/null
+++ b/test/Migrator/always_remove_old_remap_file.swift
@@ -0,0 +1,13 @@
+// RUN: rm -rf %t && mkdir -p %t && cp %s %t/input.swift
+// RUN: %target-swift-frontend -c -update-code -primary-file %t/input.swift -emit-migrated-file-path %t/always_remove_old_remap_file.result -emit-remap-file-path %t/always_remove_old_remap_file.remap -o /dev/null
+// RUN: ls %t/always_remove_old_remap_file.remap
+
+// Simulate leaving behind code that can't build in Swift 4:
+// RUN: echo asdfads >> %t/input.swift
+
+// Migrate again. This should delete the old remap file.
+// RUN: not %target-swift-frontend -c -update-code -primary-file %t/input.swift -emit-migrated-file-path %t/always_remove_old_remap_file.result -emit-remap-file-path %t/always_remove_old_remap_file.remap -o /dev/null
+
+// RUN: not ls %t/always_remove_old_remap_file.remap
+
+func foo() {}
diff --git a/test/Migrator/api-special-cases.swift b/test/Migrator/api-special-cases.swift
index 6d001e1..4598401 100644
--- a/test/Migrator/api-special-cases.swift
+++ b/test/Migrator/api-special-cases.swift
@@ -1,8 +1,8 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t.mod && mkdir -p %t.mod
+// RUN: %empty-directory(%t.mod)
 // RUN: %target-swift-frontend -emit-module -o %t.mod/MyAppKit.swiftmodule %S/Inputs/MyAppKit.swift -module-name MyAppKit -parse-as-library
 // RUN: %target-swift-frontend -emit-module -o %t.mod/MySwift.swiftmodule %S/Inputs/MySwift.swift -module-name MySwift -parse-as-library
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -I %t.mod -emit-migrated-file-path %t/api-special-cases.swift.result -emit-remap-file-path %t/api-special-cases.swift.remap -o /dev/null -api-diff-data-file %S/SpecialCaseAPI.json
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -I %t.mod -emit-migrated-file-path %t/api-special-cases.swift.result -emit-remap-file-path %t/api-special-cases.swift.remap -o /dev/null -api-diff-data-file %S/Inputs/SpecialCaseAPI.json
 // RUN: diff -u %S/api-special-cases.swift.expected %t/api-special-cases.swift.result
 
 import MyAppKit
diff --git a/test/Migrator/api-special-cases.swift.expected b/test/Migrator/api-special-cases.swift.expected
index d4b155e..e37ccd8 100644
--- a/test/Migrator/api-special-cases.swift.expected
+++ b/test/Migrator/api-special-cases.swift.expected
@@ -1,8 +1,8 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t.mod && mkdir -p %t.mod
+// RUN: %empty-directory(%t.mod)
 // RUN: %target-swift-frontend -emit-module -o %t.mod/MyAppKit.swiftmodule %S/Inputs/MyAppKit.swift -module-name MyAppKit -parse-as-library
 // RUN: %target-swift-frontend -emit-module -o %t.mod/MySwift.swiftmodule %S/Inputs/MySwift.swift -module-name MySwift -parse-as-library
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -I %t.mod -emit-migrated-file-path %t/api-special-cases.swift.result -emit-remap-file-path %t/api-special-cases.swift.remap -o /dev/null -api-diff-data-file %S/SpecialCaseAPI.json
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -I %t.mod -emit-migrated-file-path %t/api-special-cases.swift.result -emit-remap-file-path %t/api-special-cases.swift.remap -o /dev/null -api-diff-data-file %S/Inputs/SpecialCaseAPI.json
 // RUN: diff -u %S/api-special-cases.swift.expected %t/api-special-cases.swift.result
 
 import MyAppKit
diff --git a/test/Migrator/appkit.swift b/test/Migrator/appkit.swift
new file mode 100644
index 0000000..c356856
--- /dev/null
+++ b/test/Migrator/appkit.swift
@@ -0,0 +1,82 @@
+// REQUIRES: OS=macosx
+// RUN: %target-swift-frontend -typecheck %s -swift-version 3
+// RUN: %target-swift-frontend -typecheck -update-code -primary-file %s -emit-migrated-file-path %t.result -swift-version 3 -disable-migrator-fixits
+// RUN: diff -u %s.expected %t.result
+
+import AppKit
+
+func a(_ outlineView: NSOutlineView) {
+  let cell: NSTableCellView = outlineView.make(withIdentifier: "HeaderCell", owner: outlineView) as! NSTableCellView
+}
+
+NSApplicationLoad()
+NSBeep()
+
+NSRectFill(NSRect.zero)
+NSRectClip(NSRect.zero)
+NSFrameRect(NSRect.zero)
+
+// NSRect.zero.fill(using: NSCompositingOperation.clear)
+NSRectFillUsingOperation(NSRect.zero, NSCompositingOperation.clear)
+
+// NSRect.zero.frame(withWidth: 0.0)
+NSFrameRectWithWidth(NSRect.zero, 0.0)
+
+// NSRect.zero.frame(withWidth: 0.0, using: NSCompositingOperation.clear)
+NSFrameRectWithWidthUsingOperation(NSRect.zero, 0.0, NSCompositingOperation.clear)
+
+let isTrue = true
+
+// (isTrue ? NSRect.zero : NSRect.zero).frame(withWidth: 0.0)
+NSFrameRectWithWidth(isTrue ? NSRect.zero : NSRect.zero, 0.0)
+
+var rekts = [NSRect.zero]
+var kolors = [NSColor.red]
+var grays = [CGFloat(0)]
+
+// rekts.fill()
+NSRectFillList(&rekts, 1)
+
+// rekts.fill(using: NSCompositingOperation.clear)
+NSRectFillListUsingOperation(rekts, 1, NSCompositingOperation.clear)
+
+// rekts.clip()
+NSRectClipList(&rekts, 1)
+
+// TODO: zip2(rekts, kolors).fill()
+// NSRectFillListWithColors(&rekts, &kolors, 1)
+
+// TODO: zip2(rekts, kolors).fill(using: NSCompositingOperation.clear)
+// NSRectFillListWithColorsUsingOperation(&rekts, &kolors, 1, NSCompositingOperation.clear)
+
+// TODO: zip2(rekts, grays).fill()
+// NSRectFillListWithGrays(&rekts, &grays, 1)
+
+// TODO: NSAnimationEffect.poof.show(centeredAt: NSPoint.zero, size: NSSize.zero)
+// NSShowAnimationEffect(NSAnimationEffect.poof, NSPoint.zero, NSSize.zero, nil, nil, nil)
+
+// _ = NSWindow.Depth.availableDepths
+_ = NSAvailableWindowDepths()
+
+// TODO: _ = NSWindow.Depth.bestDepth("", 24, 0, false)
+// _ = NSBestDepth("", 24, 0, false, nil)
+
+var cacheSize: GLint = 0
+
+// cacheSize = NSOpenGLGOFormatCacheSize.globalValue
+NSOpenGLGetOption(NSOpenGLGOFormatCacheSize, &cacheSize)
+
+// NSOpenGLGOFormatCacheSize.globalValue = 5
+NSOpenGLSetOption(NSOpenGLGOFormatCacheSize, 5)
+
+var major = GLint(0)
+var minor = GLint(0)
+
+// TODO: (major, minor) = NSOpenGLContext.openGLVersion
+// NSOpenGLGetVersion(&major, &minor)
+
+class MyDocument : NSDocument {
+  override class func autosavesInPlace() -> Bool {
+    return false
+  }
+}
diff --git a/test/Migrator/appkit.swift.expected b/test/Migrator/appkit.swift.expected
new file mode 100644
index 0000000..47bdf27
--- /dev/null
+++ b/test/Migrator/appkit.swift.expected
@@ -0,0 +1,82 @@
+// REQUIRES: OS=macosx
+// RUN: %target-swift-frontend -typecheck %s -swift-version 3
+// RUN: %target-swift-frontend -typecheck -update-code -primary-file %s -emit-migrated-file-path %t.result -swift-version 3 -disable-migrator-fixits
+// RUN: diff -u %s.expected %t.result
+
+import AppKit
+
+func a(_ outlineView: NSOutlineView) {
+  let cell: NSTableCellView = outlineView.makeView(withIdentifier: "HeaderCell", owner: outlineView) as! NSTableCellView
+}
+
+NSApplication.load()
+NSSound.beep()
+
+NSRect.zero.fill()
+NSRect.zero.clip
+NSRect.zero.frame()
+
+// NSRect.zero.fill(using: NSCompositingOperation.clear)
+NSRect.zero.fill(using: NSCompositingOperation.clear)
+
+// NSRect.zero.frame(withWidth: 0.0)
+NSRect.zero.frame(withWidth: 0.0)
+
+// NSRect.zero.frame(withWidth: 0.0, using: NSCompositingOperation.clear)
+NSRect.zero.frame(withWidth: 0.0, using: NSCompositingOperation.clear)
+
+let isTrue = true
+
+// (isTrue ? NSRect.zero : NSRect.zero).frame(withWidth: 0.0)
+(isTrue ? NSRect.zero : NSRect.zero).frame(withWidth: 0.0)
+
+var rekts = [NSRect.zero]
+var kolors = [NSColor.red]
+var grays = [CGFloat(0)]
+
+// rekts.fill()
+rekts.fill()
+
+// rekts.fill(using: NSCompositingOperation.clear)
+rekts.fill(using: NSCompositingOperation.clear)
+
+// rekts.clip()
+rekts.clip()
+
+// TODO: zip2(rekts, kolors).fill()
+// NSRectFillListWithColors(&rekts, &kolors, 1)
+
+// TODO: zip2(rekts, kolors).fill(using: NSCompositingOperation.clear)
+// NSRectFillListWithColorsUsingOperation(&rekts, &kolors, 1, NSCompositingOperation.clear)
+
+// TODO: zip2(rekts, grays).fill()
+// NSRectFillListWithGrays(&rekts, &grays, 1)
+
+// TODO: NSAnimationEffect.poof.show(centeredAt: NSPoint.zero, size: NSSize.zero)
+// NSShowAnimationEffect(NSAnimationEffect.poof, NSPoint.zero, NSSize.zero, nil, nil, nil)
+
+// _ = NSWindow.Depth.availableDepths
+_ = NSWindow.Depth.availableDepths
+
+// TODO: _ = NSWindow.Depth.bestDepth("", 24, 0, false)
+// _ = NSBestDepth("", 24, 0, false, nil)
+
+var cacheSize: GLint = 0
+
+// cacheSize = NSOpenGLGOFormatCacheSize.globalValue
+cacheSize = NSOpenGLGOFormatCacheSize.globalValue
+
+// NSOpenGLGOFormatCacheSize.globalValue = 5
+NSOpenGLGOFormatCacheSize.globalValue = 5
+
+var major = GLint(0)
+var minor = GLint(0)
+
+// TODO: (major, minor) = NSOpenGLContext.openGLVersion
+// NSOpenGLGetVersion(&major, &minor)
+
+class MyDocument : NSDocument {
+  override class var autosavesInPlace: Bool {
+    return false
+  }
+}
diff --git a/test/Migrator/complete_objc_inference.swift b/test/Migrator/complete_objc_inference.swift
index a3e6fbf..0a6bf3d 100644
--- a/test/Migrator/complete_objc_inference.swift
+++ b/test/Migrator/complete_objc_inference.swift
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
 // RUN: %target-swift-frontend -typecheck -swift-version 3 -enable-swift3-objc-inference %s
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -primary-file %S/Inputs/objc_inference.swift -emit-migrated-file-path %t/complete_objc_inference.swift.result -emit-remap-file-path %t/complete_objc_inference.swift.remap -migrate-keep-objc-visibility -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -primary-file %S/Inputs/objc_inference.swift -emit-migrated-file-path %t/complete_objc_inference.swift.result -emit-remap-file-path %t/complete_objc_inference.swift.remap -migrate-keep-objc-visibility -o /dev/null
 // RUN: diff -u %S/complete_objc_inference.swift.expected %t/complete_objc_inference.swift.result 
 // RUN: %target-swift-frontend -typecheck -swift-version 4 -enable-swift3-objc-inference %t/complete_objc_inference.swift.result
diff --git a/test/Migrator/conservative_objc_inference.swift b/test/Migrator/conservative_objc_inference.swift
index ba67a78..b393e1e 100644
--- a/test/Migrator/conservative_objc_inference.swift
+++ b/test/Migrator/conservative_objc_inference.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -migrate-keep-objc-visibility -primary-file %S/Inputs/conservative_objc_inference.swift -emit-migrated-file-path %t/migrated_conservative_objc_inference.swift -emit-remap-file-path %t/migrated_conservative_objc_inference.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -migrate-keep-objc-visibility -primary-file %S/Inputs/conservative_objc_inference.swift -emit-migrated-file-path %t/migrated_conservative_objc_inference.swift -emit-remap-file-path %t/migrated_conservative_objc_inference.swift.remap -o /dev/null
 // RUN: %FileCheck %s < %t/migrated_conservative_objc_inference.swift
 // REQUIRES: objc_interop
 
diff --git a/test/Migrator/double_fixit_ok.swift b/test/Migrator/double_fixit_ok.swift
new file mode 100644
index 0000000..52bf0c4
--- /dev/null
+++ b/test/Migrator/double_fixit_ok.swift
@@ -0,0 +1,29 @@
+// RUN: %target-swift-frontend -typecheck %s -swift-version 3
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -typecheck -update-code -primary-file %s -emit-migrated-file-path %t/double_fixit_ok.result -swift-version 3
+// RUN: diff -u %s.expected %t/double_fixit_ok.result
+// RUN: %target-swift-frontend -typecheck %s.expected -swift-version 4
+
+@available(swift, obsoleted: 4,  renamed: "Thing.constant___renamed")
+let ThingConstantGotRenamed = 1
+
+@available(swift, obsoleted: 4,  renamed: "Thing.constant_renamed")
+let ThingConstantWasRenamed = 1
+
+struct Thing {
+  static let constant___renamed = 1
+  static let constant_renamed = 1
+  func foo(_ c: Int) {}
+}
+
+class MyClass {
+  func foo() {
+    let _: Thing = {
+      let t = Thing()
+      t.foo(ThingConstantGotRenamed)
+      t.foo(ThingConstantWasRenamed)
+      return t
+    }()
+  }
+}
+
+
diff --git a/test/Migrator/double_fixit_ok.swift.expected b/test/Migrator/double_fixit_ok.swift.expected
new file mode 100644
index 0000000..0eee597
--- /dev/null
+++ b/test/Migrator/double_fixit_ok.swift.expected
@@ -0,0 +1,29 @@
+// RUN: %target-swift-frontend -typecheck %s -swift-version 3
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -typecheck -update-code -primary-file %s -emit-migrated-file-path %t/double_fixit_ok.result -swift-version 3
+// RUN: diff -u %s.expected %t/double_fixit_ok.result
+// RUN: %target-swift-frontend -typecheck %s.expected -swift-version 4
+
+@available(swift, obsoleted: 4,  renamed: "Thing.constant___renamed")
+let ThingConstantGotRenamed = 1
+
+@available(swift, obsoleted: 4,  renamed: "Thing.constant_renamed")
+let ThingConstantWasRenamed = 1
+
+struct Thing {
+  static let constant___renamed = 1
+  static let constant_renamed = 1
+  func foo(_ c: Int) {}
+}
+
+class MyClass {
+  func foo() {
+    let _: Thing = {
+      let t = Thing()
+      t.foo(Thing.constant___renamed)
+      t.foo(Thing.constant_renamed)
+      return t
+    }()
+  }
+}
+
+
diff --git a/test/Migrator/function-hoist.swift b/test/Migrator/function-hoist.swift
index 3396990..f4c36c9 100644
--- a/test/Migrator/function-hoist.swift
+++ b/test/Migrator/function-hoist.swift
@@ -1,7 +1,7 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t.mod && mkdir -p %t.mod
+// RUN: %empty-directory(%t.mod)
 // RUN: %target-swift-frontend -emit-module -o %t.mod/Cities.swiftmodule %S/Inputs/Cities.swift -module-name Cities -parse-as-library
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -disable-migrator-fixits -I %t.mod -primary-file %s -api-diff-data-file %S/API-function-hoist.json -emit-migrated-file-path %t/function-hoist.swift.result -emit-remap-file-path %t/function-hoist.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -disable-migrator-fixits -I %t.mod -primary-file %s -api-diff-data-file %S/Inputs/API-function-hoist.json -emit-migrated-file-path %t/function-hoist.swift.result -emit-remap-file-path %t/function-hoist.swift.remap -o /dev/null
 // RUN: diff -u %S/function-hoist.swift.expected %t/function-hoist.swift.result
 
 import Cities
diff --git a/test/Migrator/function-hoist.swift.expected b/test/Migrator/function-hoist.swift.expected
index 2f857e3..05abc3e 100644
--- a/test/Migrator/function-hoist.swift.expected
+++ b/test/Migrator/function-hoist.swift.expected
@@ -1,7 +1,7 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t.mod && mkdir -p %t.mod
+// RUN: %empty-directory(%t.mod)
 // RUN: %target-swift-frontend -emit-module -o %t.mod/Cities.swiftmodule %S/Inputs/Cities.swift -module-name Cities -parse-as-library
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -disable-migrator-fixits -I %t.mod -primary-file %s -api-diff-data-file %S/API-function-hoist.json -emit-migrated-file-path %t/function-hoist.swift.result -emit-remap-file-path %t/function-hoist.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -disable-migrator-fixits -I %t.mod -primary-file %s -api-diff-data-file %S/Inputs/API-function-hoist.json -emit-migrated-file-path %t/function-hoist.swift.result -emit-remap-file-path %t/function-hoist.swift.remap -o /dev/null
 // RUN: diff -u %S/function-hoist.swift.expected %t/function-hoist.swift.result
 
 import Cities
diff --git a/test/Migrator/ignore_type_placeholder.swift b/test/Migrator/ignore_type_placeholder.swift
index c50d9ff..6f63481 100644
--- a/test/Migrator/ignore_type_placeholder.swift
+++ b/test/Migrator/ignore_type_placeholder.swift
@@ -1,3 +1,3 @@
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -primary-file %S/Inputs/ignore_type_placeholder.swift -emit-migrated-file-path %t/ignore_type_placeholder.swift.result -emit-remap-file-path %t/ignore_type_placeholder.swift.remap
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -primary-file %S/Inputs/ignore_type_placeholder.swift -emit-migrated-file-path %t/ignore_type_placeholder.swift.result -emit-remap-file-path %t/ignore_type_placeholder.swift.remap
 // RUN: %FileCheck %s < %t/ignore_type_placeholder.swift.result
 // CHECK-NOT: f(<#Void#>)
diff --git a/test/Migrator/invalid_sourceloc.swift b/test/Migrator/invalid_sourceloc.swift
index 72518a6..fdcf47f 100644
--- a/test/Migrator/invalid_sourceloc.swift
+++ b/test/Migrator/invalid_sourceloc.swift
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t && not %swift -c -update-code -primary-file %s -emit-migrated-file-path %t/api-special-cases.swift.result -emit-remap-file-path %t/api-special-cases.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && not %swift -c -update-code -primary-file %s -emit-migrated-file-path %t/api-special-cases.swift.result -emit-remap-file-path %t/api-special-cases.swift.remap -o /dev/null
 
 // A failed import due to a missing -sdk frontend argument produces a
 // diagnostic with an invalid sourceloc.
diff --git a/test/Migrator/member.swift b/test/Migrator/member.swift
index 29085f3..1b4bccd 100644
--- a/test/Migrator/member.swift
+++ b/test/Migrator/member.swift
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/API.json -emit-migrated-file-path %t/member.swift.result -emit-remap-file-path %t/member.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/member.swift.result -emit-remap-file-path %t/member.swift.remap -o /dev/null
 // RUN: diff -u %S/member.swift.expected %t/member.swift.result
 
 import Bar
diff --git a/test/Migrator/member.swift.expected b/test/Migrator/member.swift.expected
index c7db8a1..d9e8c3c 100644
--- a/test/Migrator/member.swift.expected
+++ b/test/Migrator/member.swift.expected
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/API.json -emit-migrated-file-path %t/member.swift.result -emit-remap-file-path %t/member.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/member.swift.result -emit-remap-file-path %t/member.swift.remap -o /dev/null
 // RUN: diff -u %S/member.swift.expected %t/member.swift.result
 
 import Bar
diff --git a/test/Migrator/minimal_objc_inference.swift b/test/Migrator/minimal_objc_inference.swift
index a4c7099..249b93a 100644
--- a/test/Migrator/minimal_objc_inference.swift
+++ b/test/Migrator/minimal_objc_inference.swift
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
 // RUN: %target-swift-frontend -typecheck -swift-version 3 %s
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -primary-file %S/Inputs/objc_inference.swift -emit-migrated-file-path %t/minimal_objc_inference.swift.result -emit-remap-file-path %t/minimal_objc_inference.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -primary-file %S/Inputs/objc_inference.swift -emit-migrated-file-path %t/minimal_objc_inference.swift.result -emit-remap-file-path %t/minimal_objc_inference.swift.remap -o /dev/null
 // RUN: diff -u %S/minimal_objc_inference.swift.expected %t/minimal_objc_inference.swift.result
 // RUN: %target-swift-frontend -typecheck -swift-version 4 %t/minimal_objc_inference.swift.result
diff --git a/test/Migrator/mock-sdk/Bar.framework/Headers/Bar.h b/test/Migrator/mock-sdk/Bar.framework/Headers/Bar.h
index a2ced33..e327f43 100644
--- a/test/Migrator/mock-sdk/Bar.framework/Headers/Bar.h
+++ b/test/Migrator/mock-sdk/Bar.framework/Headers/Bar.h
@@ -11,7 +11,7 @@
 int barGlobalFuncOldName(int a);
 
 @interface BarForwardDeclaredClass
-- (id)initWithOldLabel0:(int)frame;
+- (id _Nonnull)initWithOldLabel0:(int)frame;
 - (void) barInstanceFunc0;
 - (void) barInstanceFunc1:(int)info anotherValue:(int)info1 anotherValue1:(int)info2 anotherValue2:(int)info3;
 - (void) barInstanceFunc2:(int)info toRemove:(int)info1 toRemove1:(int)info2 toRemove2:(int)info3;
@@ -23,7 +23,11 @@
 
 @interface PropertyUserInterface
 - (int) field;
+- (int * _Nullable) field2;
 - (void) setField:(int)info;
++ (int) fieldPlus;
++ (void) methodPlus:(int)info;
++ (void) methodPlus;
 @end
 
 #define BAR_MACRO_1 0
@@ -34,3 +38,16 @@
 } SomeItemSet;
 
 typedef SomeItemSet SomeEnvironment;
+
+@protocol WillOverrideWithTypeChange
+- (SomeItemSet)doThing:(SomeItemSet)thing;
+@end
+
+#define CF_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
+#define NS_ENUM(_type, _name) CF_ENUM(_type, _name)
+
+typedef NS_ENUM(long, FooComparisonResult) {
+  FooOrderedAscending = -1L,
+  FooOrderedSame,
+  FooOrderedDescending
+};
diff --git a/test/Migrator/no_double_edit_ast_pass.swift b/test/Migrator/no_double_edit_ast_pass.swift
new file mode 100644
index 0000000..c38a453
--- /dev/null
+++ b/test/Migrator/no_double_edit_ast_pass.swift
@@ -0,0 +1,14 @@
+// REQUIRES: OS=macosx
+// REQUIRES: objc_interop
+// RUN: %target-swift-frontend -typecheck %s -F %S/mock-sdk -swift-version 3
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -F %S/mock-sdk -api-diff-data-file %S/DoubleEditAPI.json -update-code -primary-file %s -emit-migrated-file-path %t/no_double_edit_ast_pass.result -swift-version 3 -o /dev/null
+// RUN: diff -u %s.expected %t/no_double_edit_ast_pass.result
+
+import Bar
+
+class Derived : WillOverrideWithTypeChange {
+  func doThing(_ thing: SomeItemSet) -> SomeItemSet {
+    return SomeItemSet()
+  }
+}
+
diff --git a/test/Migrator/no_double_edit_ast_pass.swift.expected b/test/Migrator/no_double_edit_ast_pass.swift.expected
new file mode 100644
index 0000000..813f22f
--- /dev/null
+++ b/test/Migrator/no_double_edit_ast_pass.swift.expected
@@ -0,0 +1,14 @@
+// REQUIRES: OS=macosx
+// REQUIRES: objc_interop
+// RUN: %target-swift-frontend -typecheck %s -F %S/mock-sdk -swift-version 3
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -F %S/mock-sdk -api-diff-data-file %S/DoubleEditAPI.json -update-code -primary-file %s -emit-migrated-file-path %t/no_double_edit_ast_pass.result -swift-version 3 -o /dev/null
+// RUN: diff -u %s.expected %t/no_double_edit_ast_pass.result
+
+import Bar
+
+class Derived : WillOverrideWithTypeChange {
+  func doThing(_ thing: ItemSet.some) -> ItemSet.some {
+    return SomeItemSet()
+  }
+}
+
diff --git a/test/Migrator/no_duplicate_aarch64_use_tbi.swift b/test/Migrator/no_duplicate_aarch64_use_tbi.swift
new file mode 100644
index 0000000..75b4708
--- /dev/null
+++ b/test/Migrator/no_duplicate_aarch64_use_tbi.swift
@@ -0,0 +1,15 @@
+// REQUIRES: OS=ios
+// REQUIRES: CPU=arm64
+// RUN: %target-swift-frontend -typecheck %s -swift-version 3
+// RUN: rm -rf %t && mkdir -p %t && cd %t && %swiftc_driver -c -update-code -target arm64-apple-ios10.3 -output-file-map %S/Inputs/no_duplicate_aarch64_use_tbi_ofm.json -swift-version 3 %s -v
+// RUN: cd %t && %swiftc_driver -c -update-code -target arm64-apple-ios10.3 -output-file-map %S/Inputs/no_duplicate_aarch64_use_tbi_ofm.json -swift-version 3 %s -### > %t/driver_actions.txt
+// RUN: %FileCheck --check-prefix=CHECK-REMAP %s < %t/no_duplicate_aarch64_use_tbi.remap
+// RUN: %FileCheck --check-prefix=CHECK-ACTIONS %s < %t/driver_actions.txt
+
+public func foo(_ f: (Void) -> ()) {}
+
+// CHECK-REMAP: "offset": 671,
+// CHECK-REMAP: "remove": 5,
+// CHECK-REMAP: "text": "("
+
+// CHECK-ACTIONS: -Xllvm -aarch64-use-tbi
diff --git a/test/Migrator/no_extraneous_argument_labels.swift b/test/Migrator/no_extraneous_argument_labels.swift
new file mode 100644
index 0000000..c4a9ce3
--- /dev/null
+++ b/test/Migrator/no_extraneous_argument_labels.swift
@@ -0,0 +1,12 @@
+// RUN: %target-swift-frontend -typecheck %s -swift-version 3
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -primary-file %s -emit-migrated-file-path %t/no_extraneous_argument_labels.result -swift-version 3 -o /dev/null
+// RUN: diff -u %s.expected %t/no_extraneous_argument_labels.result
+// RUN: %target-swift-frontend -typecheck %s.expected -swift-version 4
+
+func foo(_ oc: [String]) {
+  var args: [String] = []
+  let dictionary: [String: String] = [:]
+  args.append(contentsOf: oc.map { orderedColumn in
+    dictionary.first { (column, value) in true }!.value
+  })
+}
diff --git a/test/Migrator/no_extraneous_argument_labels.swift.expected b/test/Migrator/no_extraneous_argument_labels.swift.expected
new file mode 100644
index 0000000..0fdaed3
--- /dev/null
+++ b/test/Migrator/no_extraneous_argument_labels.swift.expected
@@ -0,0 +1,12 @@
+// RUN: %target-swift-frontend -typecheck %s -swift-version 3
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -primary-file %s -emit-migrated-file-path %t/no_extraneous_argument_labels.result -swift-version 3 -o /dev/null
+// RUN: diff -u %s.expected %t/no_extraneous_argument_labels.result
+// RUN: %target-swift-frontend -typecheck %s.expected -swift-version 4
+
+func foo(_ oc: [String]) {
+  var args: [String] = []
+  let dictionary: [String: String] = [:]
+  args.append(contentsOf: oc.map { orderedColumn in
+    dictionary.first { let (column, value) = $0; return true }!.value
+  })
+}
diff --git a/test/Migrator/no_var_to_let.swift b/test/Migrator/no_var_to_let.swift
index 796702f..b8ad154 100644
--- a/test/Migrator/no_var_to_let.swift
+++ b/test/Migrator/no_var_to_let.swift
@@ -1,5 +1,5 @@
 // RUN: %target-swift-frontend -typecheck %s -swift-version 3
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/no_var_to_let.swift.result -swift-version 3 -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/no_var_to_let.swift.result -swift-version 3 -o /dev/null
 // RUN: diff -u %s %t/no_var_to_let.swift.result
 // RUN: %target-swift-frontend -typecheck %s -swift-version 4
 
diff --git a/test/Migrator/nsopengl_openglversion.swift b/test/Migrator/nsopengl_openglversion.swift
new file mode 100644
index 0000000..7d7eaf4
--- /dev/null
+++ b/test/Migrator/nsopengl_openglversion.swift
@@ -0,0 +1,13 @@
+// REQUIRES: objc_interop
+// REQUIRES: OS=macosx
+// RUN: %target-swift-frontend -typecheck -swift-version 3 %s
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -disable-migrator-fixits -primary-file %s -emit-migrated-file-path %t/nsopengl_openglversion.swift.result -o %t/nsopengl_openglversion.swift.remap -o /dev/null
+// RUN: diff -u %S/nsopengl_openglversion.swift.expected %t/nsopengl_openglversion.swift.result
+// RUN: %target-swift-frontend -typecheck -swift-version 4 %t/nsopengl_openglversion.swift.result
+
+import AppKit
+
+var major = GLint(0)
+var minor = GLint(0)
+
+NSOpenGLGetVersion(&major, &minor)
diff --git a/test/Migrator/nsopengl_openglversion.swift.expected b/test/Migrator/nsopengl_openglversion.swift.expected
new file mode 100644
index 0000000..0d77048
--- /dev/null
+++ b/test/Migrator/nsopengl_openglversion.swift.expected
@@ -0,0 +1,13 @@
+// REQUIRES: objc_interop
+// REQUIRES: OS=macosx
+// RUN: %target-swift-frontend -typecheck -swift-version 3 %s
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -disable-migrator-fixits -primary-file %s -emit-migrated-file-path %t/nsopengl_openglversion.swift.result -o %t/nsopengl_openglversion.swift.remap -o /dev/null
+// RUN: diff -u %S/nsopengl_openglversion.swift.expected %t/nsopengl_openglversion.swift.result
+// RUN: %target-swift-frontend -typecheck -swift-version 4 %t/nsopengl_openglversion.swift.result
+
+import AppKit
+
+var major = GLint(0)
+var minor = GLint(0)
+
+(major, minor) = NSOpenGLContext.openGLVersion
diff --git a/test/Migrator/null_migration.swift b/test/Migrator/null_migration.swift
index c266292..d283fb3 100644
--- a/test/Migrator/null_migration.swift
+++ b/test/Migrator/null_migration.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/migrated_null_migration.swift -emit-remap-file-path %t/null_migration.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/migrated_null_migration.swift -emit-remap-file-path %t/null_migration.remap -o /dev/null
 // RUN: diff -u %s %t/migrated_null_migration.swift
 
 // This file tests that, if all migration passes are no-op,
diff --git a/test/Migrator/objc_inference_cross_file.swift b/test/Migrator/objc_inference_cross_file.swift
index 9a351ab..8128bc9 100644
--- a/test/Migrator/objc_inference_cross_file.swift
+++ b/test/Migrator/objc_inference_cross_file.swift
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
 // RUN: %target-swift-frontend -typecheck -swift-version 3 -primary-file %S/Inputs/objc_inference_cross_file_A.swift %S/Inputs/objc_inference_cross_file_B.swift
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %S/Inputs/objc_inference_cross_file_A.swift %S/Inputs/objc_inference_cross_file_B.swift -emit-migrated-file-path %t/objc_inference_cross_file.swift.result -migrate-keep-objc-visibility -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %S/Inputs/objc_inference_cross_file_A.swift %S/Inputs/objc_inference_cross_file_B.swift -emit-migrated-file-path %t/objc_inference_cross_file.swift.result -migrate-keep-objc-visibility -o /dev/null
 // RUN: diff -u %S/objc_inference_cross_file.swift.expected %t/objc_inference_cross_file.swift.result
 // RUN: %target-swift-frontend -typecheck -swift-version 4 -primary-file %t/objc_inference_cross_file.swift.result %S/Inputs/objc_inference_cross_file_B.swift
diff --git a/test/Migrator/pre_fixit_pass.swift b/test/Migrator/pre_fixit_pass.swift
index fe7367c..2b9927f 100644
--- a/test/Migrator/pre_fixit_pass.swift
+++ b/test/Migrator/pre_fixit_pass.swift
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t && not %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/API.json -emit-migrated-file-path %t/pre_fixit_pass.swift.result -o /dev/null
+// RUN: %empty-directory(%t) && not %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/pre_fixit_pass.swift.result -o /dev/null
 // RUN: diff -u %S/pre_fixit_pass.swift.expected %t/pre_fixit_pass.swift.result
 
 import Bar
diff --git a/test/Migrator/pre_fixit_pass.swift.expected b/test/Migrator/pre_fixit_pass.swift.expected
index f0dcb37..5fb0bd9 100644
--- a/test/Migrator/pre_fixit_pass.swift.expected
+++ b/test/Migrator/pre_fixit_pass.swift.expected
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t && not %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/API.json -emit-migrated-file-path %t/pre_fixit_pass.swift.result -o /dev/null
+// RUN: %empty-directory(%t) && not %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/pre_fixit_pass.swift.result -o /dev/null
 // RUN: diff -u %S/pre_fixit_pass.swift.expected %t/pre_fixit_pass.swift.result
 
 import Bar
diff --git a/test/Migrator/pre_fixit_pass_still_failed.swift b/test/Migrator/pre_fixit_pass_still_failed.swift
index ac6ddf3..85ce132 100644
--- a/test/Migrator/pre_fixit_pass_still_failed.swift
+++ b/test/Migrator/pre_fixit_pass_still_failed.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t && not %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/pre_fixit_pass.swift.result -o /dev/null
+// RUN: %empty-directory(%t) && not %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/pre_fixit_pass.swift.result -o /dev/null
 
 // We shouldn't be able to successfully use the pre-fix-it passes to
 // fix this file before migration because there is a use of an
diff --git a/test/Migrator/prefix_typeof_expr.swift b/test/Migrator/prefix_typeof_expr.swift
index 04fb485..9fe2da9 100644
--- a/test/Migrator/prefix_typeof_expr.swift
+++ b/test/Migrator/prefix_typeof_expr.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/prefix_typeof_expr.swift.result -emit-remap-file-path %t/prefix_typeof_expr.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/prefix_typeof_expr.swift.result -emit-remap-file-path %t/prefix_typeof_expr.swift.remap -o /dev/null
 // RUN: diff -u %S/prefix_typeof_expr.swift.expected %t/prefix_typeof_expr.swift.result
 
 class HasTypeVar {
diff --git a/test/Migrator/prefix_typeof_expr.swift.expected b/test/Migrator/prefix_typeof_expr.swift.expected
index ad489f4..738ad84 100644
--- a/test/Migrator/prefix_typeof_expr.swift.expected
+++ b/test/Migrator/prefix_typeof_expr.swift.expected
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/prefix_typeof_expr.swift.result -emit-remap-file-path %t/prefix_typeof_expr.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/prefix_typeof_expr.swift.result -emit-remap-file-path %t/prefix_typeof_expr.swift.remap -o /dev/null
 // RUN: diff -u %S/prefix_typeof_expr.swift.expected %t/prefix_typeof_expr.swift.result
 
 class HasTypeVar {
diff --git a/test/Migrator/prefix_typeof_expr_unneeded.swift b/test/Migrator/prefix_typeof_expr_unneeded.swift
index e47906d..8e07746 100644
--- a/test/Migrator/prefix_typeof_expr_unneeded.swift
+++ b/test/Migrator/prefix_typeof_expr_unneeded.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -typecheck -update-code -primary-file %s -emit-migrated-file-path %t.result
+// RUN: %empty-directory(%t) && %target-swift-frontend -typecheck -update-code -primary-file %s -emit-migrated-file-path %t.result
 // RUN: diff -u %s.expected %t.result
 // RUN: %target-swift-frontend -typecheck %t.result -swift-version 4
 
diff --git a/test/Migrator/prefix_typeof_expr_unneeded.swift.expected b/test/Migrator/prefix_typeof_expr_unneeded.swift.expected
index 318fc03..27a2a5c 100644
--- a/test/Migrator/prefix_typeof_expr_unneeded.swift.expected
+++ b/test/Migrator/prefix_typeof_expr_unneeded.swift.expected
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -typecheck -update-code -primary-file %s -emit-migrated-file-path %t.result
+// RUN: %empty-directory(%t) && %target-swift-frontend -typecheck -update-code -primary-file %s -emit-migrated-file-path %t.result
 // RUN: diff -u %s.expected %t.result
 // RUN: %target-swift-frontend -typecheck %t.result -swift-version 4
 
diff --git a/test/Migrator/property.swift b/test/Migrator/property.swift
index 5e35b89..c7d4095 100644
--- a/test/Migrator/property.swift
+++ b/test/Migrator/property.swift
@@ -1,5 +1,6 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/API.json -emit-migrated-file-path %t/property.swift.result -disable-migrator-fixits -o /dev/null
+// RUN: %empty-directory(%t)
+// RUN: %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/property.swift.result -disable-migrator-fixits -o /dev/null
 // RUN: diff -u %S/property.swift.expected %t/property.swift.result
 
 import Bar
@@ -11,4 +12,5 @@
 
 class C: PropertyUserInterface {
   public override func field() -> Int32 { return 1 }
+  public override func field2() -> UnsafeMutablePointer<Int32>? { return nil }
 }
diff --git a/test/Migrator/property.swift.expected b/test/Migrator/property.swift.expected
index 09981d1..7b0943a 100644
--- a/test/Migrator/property.swift.expected
+++ b/test/Migrator/property.swift.expected
@@ -1,5 +1,6 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/API.json -emit-migrated-file-path %t/property.swift.result -disable-migrator-fixits -o /dev/null
+// RUN: %empty-directory(%t)
+// RUN: %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/property.swift.result -disable-migrator-fixits -o /dev/null
 // RUN: diff -u %S/property.swift.expected %t/property.swift.result
 
 import Bar
@@ -11,4 +12,5 @@
 
 class C: PropertyUserInterface {
   public override var field: Int32 { return 1 }
+  public override var field2: UnsafeMutablePointer<Int32>? { return nil }
 }
diff --git a/test/Migrator/qualified-replacement.swift b/test/Migrator/qualified-replacement.swift
new file mode 100644
index 0000000..41a8f1f
--- /dev/null
+++ b/test/Migrator/qualified-replacement.swift
@@ -0,0 +1,11 @@
+// REQUIRES: objc_interop
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/qualified.json -emit-migrated-file-path %t/qualified-replacement.swift.result -emit-remap-file-path %t/qualified-replacement.swift.remap -o /dev/null
+// RUN: diff -u %S/qualified-replacement.swift.expected %t/qualified-replacement.swift.result
+
+import Bar
+func foo() {
+  _ = PropertyUserInterface.fieldPlus
+  PropertyUserInterface.methodPlus(1)
+  _ = FooComparisonResult.orderedSame
+  let _ : FooComparisonResult = .orderedSame
+}
diff --git a/test/Migrator/qualified-replacement.swift.expected b/test/Migrator/qualified-replacement.swift.expected
new file mode 100644
index 0000000..3c1bc94
--- /dev/null
+++ b/test/Migrator/qualified-replacement.swift.expected
@@ -0,0 +1,11 @@
+// REQUIRES: objc_interop
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/qualified.json -emit-migrated-file-path %t/qualified-replacement.swift.result -emit-remap-file-path %t/qualified-replacement.swift.remap -o /dev/null
+// RUN: diff -u %S/qualified-replacement.swift.expected %t/qualified-replacement.swift.result
+
+import Bar
+func foo() {
+  _ = NewPropertyUserInterface.newFieldPlus
+  NewPropertyUserInterface.newMethodPlus(1)
+  _ = NewFooComparisonResult.NewFooOrderedSame
+  let _ : FooComparisonResult = NewFooComparisonResult.NewFooOrderedSame
+}
diff --git a/test/Migrator/rdar31892850.swift b/test/Migrator/rdar31892850.swift
new file mode 100644
index 0000000..c4e340a
--- /dev/null
+++ b/test/Migrator/rdar31892850.swift
@@ -0,0 +1,25 @@
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -typecheck -primary-file %s -module-cache-path %t/mcp -emit-remap-file-path %t/edits.remap
+// RUN: %FileCheck %s -input-file=%t/edits.remap
+
+enum SomeStringEnum : String {
+  case val = ""
+}
+
+#if swift(>=4)
+func foo() {
+  let e : SomeStringEnum = "aa"
+}
+#endif
+
+// CHECK:[
+// CHECK:  {
+// CHECK:    "file": "{{.*}}rdar31892850.swift",
+// CHECK:    "offset": 305,
+// CHECK:    "text": "SomeStringEnum(rawValue: "
+// CHECK:  },
+// CHECK:  {
+// CHECK:    "file": "{{.*}}rdar31892850.swift",
+// CHECK:    "offset": 309,
+// CHECK:    "text": ")!"
+// CHECK:  }
+// CHECK:]
diff --git a/test/Migrator/rename-func-decl.swift b/test/Migrator/rename-func-decl.swift
index f422848..5d4c25a 100644
--- a/test/Migrator/rename-func-decl.swift
+++ b/test/Migrator/rename-func-decl.swift
@@ -1,7 +1,7 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t.mod && mkdir -p %t.mod
+// RUN: %empty-directory(%t.mod)
 // RUN: %target-swift-frontend -emit-module -o %t.mod/Cities.swiftmodule %S/Inputs/Cities.swift -module-name Cities -parse-as-library
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -disable-migrator-fixits -primary-file %s  -I %t.mod -api-diff-data-file %S/API.json -emit-migrated-file-path %t/rename-func-decl.swift.result -o %t/rename-func-decl.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -disable-migrator-fixits -primary-file %s  -I %t.mod -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/rename-func-decl.swift.result -o %t/rename-func-decl.swift.remap -o /dev/null
 // RUN: diff -u %S/rename-func-decl.swift.expected %t/rename-func-decl.swift.result
 
 import Cities
diff --git a/test/Migrator/rename-func-decl.swift.expected b/test/Migrator/rename-func-decl.swift.expected
index 877d0ca..0b42bc8 100644
--- a/test/Migrator/rename-func-decl.swift.expected
+++ b/test/Migrator/rename-func-decl.swift.expected
@@ -1,7 +1,7 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t.mod && mkdir -p %t.mod
+// RUN: %empty-directory(%t.mod)
 // RUN: %target-swift-frontend -emit-module -o %t.mod/Cities.swiftmodule %S/Inputs/Cities.swift -module-name Cities -parse-as-library
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -disable-migrator-fixits -primary-file %s  -I %t.mod -api-diff-data-file %S/API.json -emit-migrated-file-path %t/rename-func-decl.swift.result -o %t/rename-func-decl.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -disable-migrator-fixits -primary-file %s  -I %t.mod -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/rename-func-decl.swift.result -o %t/rename-func-decl.swift.remap -o /dev/null
 // RUN: diff -u %S/rename-func-decl.swift.expected %t/rename-func-decl.swift.result
 
 import Cities
diff --git a/test/Migrator/rename-init.swift b/test/Migrator/rename-init.swift
index 7baabcd..858d04e 100644
--- a/test/Migrator/rename-init.swift
+++ b/test/Migrator/rename-init.swift
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/API.json -emit-migrated-file-path %t/rename-init.swift.result -disable-migrator-fixits -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/rename-init.swift.result -disable-migrator-fixits -o /dev/null
 // RUN: diff -u %S/rename-init.swift.expected %t/rename-init.swift.result
 
 import Bar
diff --git a/test/Migrator/rename-init.swift.expected b/test/Migrator/rename-init.swift.expected
index 73d3ca9..6ea5e7f 100644
--- a/test/Migrator/rename-init.swift.expected
+++ b/test/Migrator/rename-init.swift.expected
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/API.json -emit-migrated-file-path %t/rename-init.swift.result -disable-migrator-fixits -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/rename-init.swift.result -disable-migrator-fixits -o /dev/null
 // RUN: diff -u %S/rename-init.swift.expected %t/rename-init.swift.result
 
 import Bar
diff --git a/test/Migrator/rename.swift b/test/Migrator/rename.swift
index 5089922..a2056c3 100644
--- a/test/Migrator/rename.swift
+++ b/test/Migrator/rename.swift
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/API.json -emit-migrated-file-path %t/rename.swift.result -emit-remap-file-path %t/rename.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/rename.swift.result -emit-remap-file-path %t/rename.swift.remap -o /dev/null
 // RUN: diff -u %S/rename.swift.expected %t/rename.swift.result
 
 import Bar
@@ -16,6 +16,7 @@
   b.barInstanceFunc1(0, anotherValue: 1, anotherValue1: 2, anotherValue2: 3)
   barGlobalFuncOldName(2)
   _ = barGlobalVariableOldEnumElement
+  _ = PropertyUserInterface.methodPlus()
 }
 
 func foo1(_ b: BarForwardDeclaredClass) {
diff --git a/test/Migrator/rename.swift.expected b/test/Migrator/rename.swift.expected
index a97ba0a..7503e37 100644
--- a/test/Migrator/rename.swift.expected
+++ b/test/Migrator/rename.swift.expected
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/API.json -emit-migrated-file-path %t/rename.swift.result -emit-remap-file-path %t/rename.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/rename.swift.result -emit-remap-file-path %t/rename.swift.remap -o /dev/null
 // RUN: diff -u %S/rename.swift.expected %t/rename.swift.result
 
 import Bar
@@ -16,6 +16,7 @@
   b.barNewInstanceFunc1(newlabel1: 0, newlabel2: 1, newlabel3: 2, newlabel4: 3)
   barGlobalFuncNewName(newlabel: 2)
   _ = NewEnum.enumElement
+  _ = PropertyUserInterface.newMethodPlus()
 }
 
 func foo1(_ b: BarForwardDeclaredClass) {
diff --git a/test/Migrator/static-abs-swift-abs-float80.swift b/test/Migrator/static-abs-swift-abs-float80.swift
new file mode 100644
index 0000000..80b7ef6
--- /dev/null
+++ b/test/Migrator/static-abs-swift-abs-float80.swift
@@ -0,0 +1,8 @@
+// REQUIRES: objc_interop
+// REQUIRES: CPU=x86_64
+// RUN: %target-swift-frontend -typecheck -swift-version 3 %s
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/static-abs-swift-abs-float80.swift.result -emit-remap-file-path %t/static-abs-swift-abs-float80.swift.remap -o /dev/null
+// RUN: diff -u %S/static-abs-swift-abs-float80.swift.expected %t/static-abs-swift-abs-float80.swift.result
+// RUN: %target-swift-frontend -typecheck -swift-version 4 %t/static-abs-swift-abs-float80.swift.result
+
+_ = Float80.abs(0)
diff --git a/test/Migrator/static-abs-swift-abs-float80.swift.expected b/test/Migrator/static-abs-swift-abs-float80.swift.expected
new file mode 100644
index 0000000..d651a71
--- /dev/null
+++ b/test/Migrator/static-abs-swift-abs-float80.swift.expected
@@ -0,0 +1,8 @@
+// REQUIRES: objc_interop
+// REQUIRES: CPU=x86_64
+// RUN: %target-swift-frontend -typecheck -swift-version 3 %s
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/static-abs-swift-abs-float80.swift.result -emit-remap-file-path %t/static-abs-swift-abs-float80.swift.remap -o /dev/null
+// RUN: diff -u %S/static-abs-swift-abs-float80.swift.expected %t/static-abs-swift-abs-float80.swift.result
+// RUN: %target-swift-frontend -typecheck -swift-version 4 %t/static-abs-swift-abs-float80.swift.result
+
+_ = Swift.abs(0)
diff --git a/test/Migrator/static-abs-swift-abs.swift b/test/Migrator/static-abs-swift-abs.swift
new file mode 100644
index 0000000..7fcccb6
--- /dev/null
+++ b/test/Migrator/static-abs-swift-abs.swift
@@ -0,0 +1,11 @@
+// REQUIRES: objc_interop
+// RUN: %target-swift-frontend -typecheck -swift-version 3 %s
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/static-abs-swift-abs.swift.result -emit-remap-file-path %t/static-abs-swift-abs.swift.remap -o /dev/null
+// RUN: diff -u %S/static-abs-swift-abs.swift.expected %t/static-abs-swift-abs.swift.result
+// RUN: %target-swift-frontend -typecheck -swift-version 4 %t/static-abs-swift-abs.swift.result
+
+import CoreGraphics
+
+_ = CGFloat.abs(0)
+_ = Float.abs(0)
+_ = Double.abs(0)
diff --git a/test/Migrator/static-abs-swift-abs.swift.expected b/test/Migrator/static-abs-swift-abs.swift.expected
new file mode 100644
index 0000000..07af582
--- /dev/null
+++ b/test/Migrator/static-abs-swift-abs.swift.expected
@@ -0,0 +1,11 @@
+// REQUIRES: objc_interop
+// RUN: %target-swift-frontend -typecheck -swift-version 3 %s
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/static-abs-swift-abs.swift.result -emit-remap-file-path %t/static-abs-swift-abs.swift.remap -o /dev/null
+// RUN: diff -u %S/static-abs-swift-abs.swift.expected %t/static-abs-swift-abs.swift.result
+// RUN: %target-swift-frontend -typecheck -swift-version 4 %t/static-abs-swift-abs.swift.result
+
+import CoreGraphics
+
+_ = Swift.abs(0)
+_ = Swift.abs(0)
+_ = Swift.abs(0)
diff --git a/test/Migrator/string_to_substring_conversion.swift b/test/Migrator/string_to_substring_conversion.swift
index 69b1294..8f3c235 100644
--- a/test/Migrator/string_to_substring_conversion.swift
+++ b/test/Migrator/string_to_substring_conversion.swift
@@ -1,3 +1,3 @@
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %S/Inputs/string_to_substring_conversion.swift -emit-migrated-file-path %t/string_to_substring_conversion.swift.result -swift-version 4
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %S/Inputs/string_to_substring_conversion.swift -emit-migrated-file-path %t/string_to_substring_conversion.swift.result -swift-version 4
 // RUN: diff -u %S/string_conversion.swift.expected %t/string_to_substring_conversion.swift.result
 // XFAIL: *
diff --git a/test/Migrator/substring_to_string_conversion.swift b/test/Migrator/substring_to_string_conversion.swift
index 9d6a52f..774d1b3 100644
--- a/test/Migrator/substring_to_string_conversion.swift
+++ b/test/Migrator/substring_to_string_conversion.swift
@@ -1,3 +1,3 @@
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %S/Inputs/substring_to_string_conversion.swift -emit-migrated-file-path %t/substring_to_string_conversion.swift.result -swift-version 4
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %S/Inputs/substring_to_string_conversion.swift -emit-migrated-file-path %t/substring_to_string_conversion.swift.result -swift-version 4
 // RUN: diff -u %S/substring_to_string_conversion.swift.expected %t/substring_to_string_conversion.swift.result
 // XFAIL: *
diff --git a/test/Migrator/to_int_max.swift b/test/Migrator/to_int_max.swift
new file mode 100644
index 0000000..2680803
--- /dev/null
+++ b/test/Migrator/to_int_max.swift
@@ -0,0 +1,37 @@
+// REQUIRES: objc_interop
+// RUN: %target-swift-frontend -typecheck -swift-version 3 %s
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/to_int_max.result -emit-remap-file-path %t/to_int_max.remap -o /dev/null
+// RUN: diff -u %S/to_int_max.swift.expected %t/to_int_max.result
+// RUN: %target-swift-frontend -typecheck -swift-version 4 %t/to_int_max.result
+
+let u: UInt = 0
+let u8: UInt8 = 0
+let u16: UInt16 = 0
+let u32: UInt32 = 0
+let u64: UInt64 = 0
+
+let i: Int = 0
+let i8: Int8 = 0
+let i16: Int16 = 0
+let i32: Int32 = 0
+let i64: Int64 = 0
+
+_ = u.toUIntMax()
+_ = u8.toUIntMax()
+_ = u16.toUIntMax()
+_ = u32.toUIntMax()
+_ = u64.toUIntMax()
+
+_ = i.toIntMax()
+_ = i8.toIntMax()
+_ = i16.toIntMax()
+_ = i32.toIntMax()
+_ = i64.toIntMax()
+
+func foo<T: UnsignedInteger>(x: T) {
+  _ = x.toUIntMax()
+}
+
+func foo<T: SignedInteger>(x: T) {
+  _ = x.toIntMax()
+}
diff --git a/test/Migrator/to_int_max.swift.expected b/test/Migrator/to_int_max.swift.expected
new file mode 100644
index 0000000..7ab919b
--- /dev/null
+++ b/test/Migrator/to_int_max.swift.expected
@@ -0,0 +1,37 @@
+// REQUIRES: objc_interop
+// RUN: %target-swift-frontend -typecheck -swift-version 3 %s
+// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/to_int_max.result -emit-remap-file-path %t/to_int_max.remap -o /dev/null
+// RUN: diff -u %S/to_int_max.swift.expected %t/to_int_max.result
+// RUN: %target-swift-frontend -typecheck -swift-version 4 %t/to_int_max.result
+
+let u: UInt = 0
+let u8: UInt8 = 0
+let u16: UInt16 = 0
+let u32: UInt32 = 0
+let u64: UInt64 = 0
+
+let i: Int = 0
+let i8: Int8 = 0
+let i16: Int16 = 0
+let i32: Int32 = 0
+let i64: Int64 = 0
+
+_ = UInt64(u)
+_ = UInt64(u8)
+_ = UInt64(u16)
+_ = UInt64(u32)
+_ = UInt64(u64)
+
+_ = Int64(i)
+_ = Int64(i8)
+_ = Int64(i16)
+_ = Int64(i32)
+_ = Int64(i64)
+
+func foo<T: UnsignedInteger>(x: T) {
+  _ = UInt64(x)
+}
+
+func foo<T: SignedInteger>(x: T) {
+  _ = Int64(x)
+}
diff --git a/test/Migrator/tuple-arguments.swift b/test/Migrator/tuple-arguments.swift
index 040d94f..2f9e2a1 100644
--- a/test/Migrator/tuple-arguments.swift
+++ b/test/Migrator/tuple-arguments.swift
@@ -29,6 +29,15 @@
 test6({ (x:Int, y:Int) in })
 test6({ (_, _) ->() in })
 
+func test8(_: ((Int, Int)) -> Int) {}
+test8 { (_, _) -> Int in 2 }
+test8 { (x, y) in x }
+
+func isEven(_ x: Int) -> Bool { return x % 2 == 0 }
+let items = Array(zip(0..<10, 0..<10))
+_ = items.filter { (_, x) in isEven(x) }
+_ = items.filter { _ in true }
+
 func toString(indexes: Int?...) -> String {
   let _ = indexes.enumerated().flatMap({ (i: Int, index: Int?) -> String? in
     let _: Int = i
@@ -47,3 +56,6 @@
     dictionary.forEach { updateValue($1, forKey: $0) }
   }
 }
+
+let dictionary: [String: String] = [:]
+_ = dictionary.first { (column, value) in true }!.value
diff --git a/test/Migrator/tuple-arguments.swift.expected b/test/Migrator/tuple-arguments.swift.expected
index 40868d1..f4ae4e1 100644
--- a/test/Migrator/tuple-arguments.swift.expected
+++ b/test/Migrator/tuple-arguments.swift.expected
@@ -26,11 +26,20 @@
 test7({ let (x,y,z) = $0; })
 test6({ let (x, y) = $0; })
 test6({ let (_, _) = $0; })
-test6({ (__val:(Int, Int)) in let (x,y) = __val;  })
-test6({ (__val:(Int, Int)) ->() in let (_,_) = __val;  })
+test6({ (__val:(Int, Int)) in let (x,y) = __val; })
+test6({ (__val:(Int, Int)) ->() in let (_,_) = __val; })
+
+func test8(_: ((Int, Int)) -> Int) {}
+test8 { (__val:(Int, Int)) -> Int in let (_,_) = __val; return 2 }
+test8 { let (x, y) = $0; return x }
+
+func isEven(_ x: Int) -> Bool { return x % 2 == 0 }
+let items = Array(zip(0..<10, 0..<10))
+_ = items.filter { let (_, x) = $0; return isEven(x) }
+_ = items.filter { _ in true }
 
 func toString(indexes: Int?...) -> String {
-  let _ = indexes.enumerated().flatMap({ (__val:(Int, Int?)) -> String? in let (i,index) = __val; 
+  let _ = indexes.enumerated().flatMap({ (__val:(Int, Int?)) -> String? in let (i,index) = __val;
     let _: Int = i
     if index != nil {}
     return ""
@@ -47,3 +56,6 @@
     dictionary.forEach { updateValue($0.1, forKey: $0.0) }
   }
 }
+
+let dictionary: [String: String] = [:]
+_ = dictionary.first { let (column, value) = $0; return true }!.value
diff --git a/test/Migrator/wrap_optional.swift b/test/Migrator/wrap_optional.swift
index 29ff1f5..2569609 100644
--- a/test/Migrator/wrap_optional.swift
+++ b/test/Migrator/wrap_optional.swift
@@ -1,7 +1,7 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t.mod && mkdir -p %t.mod
+// RUN: %empty-directory(%t.mod)
 // RUN: %target-swift-frontend -emit-module -o %t.mod/Cities.swiftmodule %S/Inputs/Cities.swift -module-name Cities -parse-as-library
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -disable-migrator-fixits -primary-file %s  -I %t.mod -api-diff-data-file %S/API.json -emit-migrated-file-path %t/wrap_optional.swift.result -o %t/wrap_optional.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -disable-migrator-fixits -primary-file %s  -I %t.mod -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/wrap_optional.swift.result -o %t/wrap_optional.swift.remap -o /dev/null
 // RUN: diff -u %S/wrap_optional.swift.expected %t/wrap_optional.swift.result
 
 import Cities
diff --git a/test/Migrator/wrap_optional.swift.expected b/test/Migrator/wrap_optional.swift.expected
index 8d685f6..3957b62 100644
--- a/test/Migrator/wrap_optional.swift.expected
+++ b/test/Migrator/wrap_optional.swift.expected
@@ -1,7 +1,7 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t.mod && mkdir -p %t.mod
+// RUN: %empty-directory(%t.mod)
 // RUN: %target-swift-frontend -emit-module -o %t.mod/Cities.swiftmodule %S/Inputs/Cities.swift -module-name Cities -parse-as-library
-// RUN: rm -rf %t && mkdir -p %t && %target-swift-frontend -c -update-code -disable-migrator-fixits -primary-file %s  -I %t.mod -api-diff-data-file %S/API.json -emit-migrated-file-path %t/wrap_optional.swift.result -o %t/wrap_optional.swift.remap -o /dev/null
+// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -disable-migrator-fixits -primary-file %s  -I %t.mod -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/wrap_optional.swift.result -o %t/wrap_optional.swift.remap -o /dev/null
 // RUN: diff -u %S/wrap_optional.swift.expected %t/wrap_optional.swift.result
 
 import Cities
diff --git a/test/Misc/expression_too_complex_3.swift b/test/Misc/expression_too_complex_3.swift
new file mode 100644
index 0000000..feda127
--- /dev/null
+++ b/test/Misc/expression_too_complex_3.swift
@@ -0,0 +1,76 @@
+// RUN: %target-typecheck-verify-swift
+// REQUIRES OS=macosx
+
+// REQUIRES: rdar32796272
+
+// This should NOT produce an expression too complex error.
+var radar32680856 = [
+  Int32(bitPattern: 0x00), Int32(bitPattern: 0x01), Int32(bitPattern: 0x02), Int32(bitPattern: 0x03), Int32(bitPattern: 0x04), Int32(bitPattern: 0x05), Int32(bitPattern: 0x06), Int32(bitPattern: 0x07), Int32(bitPattern: 0x08), Int32(bitPattern: 0x09), Int32(bitPattern: 0x0A), Int32(bitPattern: 0x0B), Int32(bitPattern: 0x0C), Int32(bitPattern: 0x0D), Int32(bitPattern: 0x0E), Int32(bitPattern: 0x0F),
+  Int32(bitPattern: 0x10), Int32(bitPattern: 0x11), Int32(bitPattern: 0x12), Int32(bitPattern: 0x13), Int32(bitPattern: 0x14), Int32(bitPattern: 0x15), Int32(bitPattern: 0x16), Int32(bitPattern: 0x17), Int32(bitPattern: 0x18), Int32(bitPattern: 0x19), Int32(bitPattern: 0x1A), Int32(bitPattern: 0x1B), Int32(bitPattern: 0x1C), Int32(bitPattern: 0x1D), Int32(bitPattern: 0x1E), Int32(bitPattern: 0x1F),
+  Int32(bitPattern: 0x20), Int32(bitPattern: 0x21), Int32(bitPattern: 0x22), Int32(bitPattern: 0x23), Int32(bitPattern: 0x24), Int32(bitPattern: 0x25), Int32(bitPattern: 0x26), Int32(bitPattern: 0x27), Int32(bitPattern: 0x28), Int32(bitPattern: 0x29), Int32(bitPattern: 0x2A), Int32(bitPattern: 0x2B), Int32(bitPattern: 0x2C), Int32(bitPattern: 0x2D), Int32(bitPattern: 0x2E), Int32(bitPattern: 0x2F),
+  Int32(bitPattern: 0x30), Int32(bitPattern: 0x31), Int32(bitPattern: 0x32), Int32(bitPattern: 0x33), Int32(bitPattern: 0x34), Int32(bitPattern: 0x35), Int32(bitPattern: 0x36), Int32(bitPattern: 0x37), Int32(bitPattern: 0x38), Int32(bitPattern: 0x39), Int32(bitPattern: 0x3A), Int32(bitPattern: 0x3B), Int32(bitPattern: 0x3C), Int32(bitPattern: 0x3D), Int32(bitPattern: 0x3E), Int32(bitPattern: 0x3F),
+  Int32(bitPattern: 0x40), Int32(bitPattern: 0x41), Int32(bitPattern: 0x42), Int32(bitPattern: 0x43), Int32(bitPattern: 0x44), Int32(bitPattern: 0x45), Int32(bitPattern: 0x46), Int32(bitPattern: 0x47), Int32(bitPattern: 0x48), Int32(bitPattern: 0x49), Int32(bitPattern: 0x4A), Int32(bitPattern: 0x4B), Int32(bitPattern: 0x4C), Int32(bitPattern: 0x4D), Int32(bitPattern: 0x4E), Int32(bitPattern: 0x4F),
+  Int32(bitPattern: 0x50), Int32(bitPattern: 0x51), Int32(bitPattern: 0x52), Int32(bitPattern: 0x53), Int32(bitPattern: 0x54), Int32(bitPattern: 0x55), Int32(bitPattern: 0x56), Int32(bitPattern: 0x57), Int32(bitPattern: 0x58), Int32(bitPattern: 0x59), Int32(bitPattern: 0x5A), Int32(bitPattern: 0x5B), Int32(bitPattern: 0x5C), Int32(bitPattern: 0x5D), Int32(bitPattern: 0x5E), Int32(bitPattern: 0x5F),
+  Int32(bitPattern: 0x60), Int32(bitPattern: 0x61), Int32(bitPattern: 0x62), Int32(bitPattern: 0x63), Int32(bitPattern: 0x64), Int32(bitPattern: 0x65), Int32(bitPattern: 0x66), Int32(bitPattern: 0x67), Int32(bitPattern: 0x68), Int32(bitPattern: 0x69), Int32(bitPattern: 0x6A), Int32(bitPattern: 0x6B), Int32(bitPattern: 0x6C), Int32(bitPattern: 0x6D), Int32(bitPattern: 0x6E), Int32(bitPattern: 0x6F),
+  Int32(bitPattern: 0x70), Int32(bitPattern: 0x71), Int32(bitPattern: 0x72), Int32(bitPattern: 0x73), Int32(bitPattern: 0x74), Int32(bitPattern: 0x75), Int32(bitPattern: 0x76), Int32(bitPattern: 0x77), Int32(bitPattern: 0x78), Int32(bitPattern: 0x79), Int32(bitPattern: 0x7A), Int32(bitPattern: 0x7B), Int32(bitPattern: 0x7C), Int32(bitPattern: 0x7D), Int32(bitPattern: 0x7E), Int32(bitPattern: 0x7F),
+  Int32(bitPattern: 0x80), Int32(bitPattern: 0x81), Int32(bitPattern: 0x82), Int32(bitPattern: 0x83), Int32(bitPattern: 0x84), Int32(bitPattern: 0x85), Int32(bitPattern: 0x86), Int32(bitPattern: 0x87), Int32(bitPattern: 0x88), Int32(bitPattern: 0x89), Int32(bitPattern: 0x8A), Int32(bitPattern: 0x8B), Int32(bitPattern: 0x8C), Int32(bitPattern: 0x8D), Int32(bitPattern: 0x8E), Int32(bitPattern: 0x8F),
+  Int32(bitPattern: 0x90), Int32(bitPattern: 0x91), Int32(bitPattern: 0x92), Int32(bitPattern: 0x93), Int32(bitPattern: 0x94), Int32(bitPattern: 0x95), Int32(bitPattern: 0x96), Int32(bitPattern: 0x97), Int32(bitPattern: 0x98), Int32(bitPattern: 0x99), Int32(bitPattern: 0x9A), Int32(bitPattern: 0x9B), Int32(bitPattern: 0x9C), Int32(bitPattern: 0x9D), Int32(bitPattern: 0x9E), Int32(bitPattern: 0x9F),
+  Int32(bitPattern: 0xA0), Int32(bitPattern: 0xA1), Int32(bitPattern: 0xA2), Int32(bitPattern: 0xA3), Int32(bitPattern: 0xA4), Int32(bitPattern: 0xA5), Int32(bitPattern: 0xA6), Int32(bitPattern: 0xA7), Int32(bitPattern: 0xA8), Int32(bitPattern: 0xA9), Int32(bitPattern: 0xAA), Int32(bitPattern: 0xAB), Int32(bitPattern: 0xAC), Int32(bitPattern: 0xAD), Int32(bitPattern: 0xAE), Int32(bitPattern: 0xAF),
+  Int32(bitPattern: 0xB0), Int32(bitPattern: 0xB1), Int32(bitPattern: 0xB2), Int32(bitPattern: 0xB3), Int32(bitPattern: 0xB4), Int32(bitPattern: 0xB5), Int32(bitPattern: 0xB6), Int32(bitPattern: 0xB7), Int32(bitPattern: 0xB8), Int32(bitPattern: 0xB9), Int32(bitPattern: 0xBA), Int32(bitPattern: 0xBB), Int32(bitPattern: 0xBC), Int32(bitPattern: 0xBD), Int32(bitPattern: 0xBE), Int32(bitPattern: 0xBF),
+  Int32(bitPattern: 0xC0), Int32(bitPattern: 0xC1), Int32(bitPattern: 0xC2), Int32(bitPattern: 0xC3), Int32(bitPattern: 0xC4), Int32(bitPattern: 0xC5), Int32(bitPattern: 0xC6), Int32(bitPattern: 0xC7), Int32(bitPattern: 0xC8), Int32(bitPattern: 0xC9), Int32(bitPattern: 0xCA), Int32(bitPattern: 0xCB), Int32(bitPattern: 0xCC), Int32(bitPattern: 0xCD), Int32(bitPattern: 0xCE), Int32(bitPattern: 0xCF),
+  Int32(bitPattern: 0xD0), Int32(bitPattern: 0xD1), Int32(bitPattern: 0xD2), Int32(bitPattern: 0xD3), Int32(bitPattern: 0xD4), Int32(bitPattern: 0xD5), Int32(bitPattern: 0xD6), Int32(bitPattern: 0xD7), Int32(bitPattern: 0xD8), Int32(bitPattern: 0xD9), Int32(bitPattern: 0xDA), Int32(bitPattern: 0xDB), Int32(bitPattern: 0xDC), Int32(bitPattern: 0xDD), Int32(bitPattern: 0xDE), Int32(bitPattern: 0xDF),
+  Int32(bitPattern: 0xE0), Int32(bitPattern: 0xE1), Int32(bitPattern: 0xE2), Int32(bitPattern: 0xE3), Int32(bitPattern: 0xE4), Int32(bitPattern: 0xE5), Int32(bitPattern: 0xE6), Int32(bitPattern: 0xE7), Int32(bitPattern: 0xE8), Int32(bitPattern: 0xE9), Int32(bitPattern: 0xEA), Int32(bitPattern: 0xEB), Int32(bitPattern: 0xEC), Int32(bitPattern: 0xED), Int32(bitPattern: 0xEE), Int32(bitPattern: 0xEF),
+  Int32(bitPattern: 0xF0), Int32(bitPattern: 0xF1), Int32(bitPattern: 0xF2), Int32(bitPattern: 0xF3), Int32(bitPattern: 0xF4), Int32(bitPattern: 0xF5), Int32(bitPattern: 0xF6), Int32(bitPattern: 0xF7), Int32(bitPattern: 0xF8), Int32(bitPattern: 0xF9), Int32(bitPattern: 0xFA), Int32(bitPattern: 0xFB), Int32(bitPattern: 0xFC), Int32(bitPattern: 0xFD), Int32(bitPattern: 0xFE), Int32(bitPattern: 0xFF),
+
+  Int32(bitPattern: 0x00), Int32(bitPattern: 0x01), Int32(bitPattern: 0x02), Int32(bitPattern: 0x03), Int32(bitPattern: 0x04), Int32(bitPattern: 0x05), Int32(bitPattern: 0x06), Int32(bitPattern: 0x07), Int32(bitPattern: 0x08), Int32(bitPattern: 0x09), Int32(bitPattern: 0x0A), Int32(bitPattern: 0x0B), Int32(bitPattern: 0x0C), Int32(bitPattern: 0x0D), Int32(bitPattern: 0x0E), Int32(bitPattern: 0x0F),
+  Int32(bitPattern: 0x10), Int32(bitPattern: 0x11), Int32(bitPattern: 0x12), Int32(bitPattern: 0x13), Int32(bitPattern: 0x14), Int32(bitPattern: 0x15), Int32(bitPattern: 0x16), Int32(bitPattern: 0x17), Int32(bitPattern: 0x18), Int32(bitPattern: 0x19), Int32(bitPattern: 0x1A), Int32(bitPattern: 0x1B), Int32(bitPattern: 0x1C), Int32(bitPattern: 0x1D), Int32(bitPattern: 0x1E), Int32(bitPattern: 0x1F),
+  Int32(bitPattern: 0x20), Int32(bitPattern: 0x21), Int32(bitPattern: 0x22), Int32(bitPattern: 0x23), Int32(bitPattern: 0x24), Int32(bitPattern: 0x25), Int32(bitPattern: 0x26), Int32(bitPattern: 0x27), Int32(bitPattern: 0x28), Int32(bitPattern: 0x29), Int32(bitPattern: 0x2A), Int32(bitPattern: 0x2B), Int32(bitPattern: 0x2C), Int32(bitPattern: 0x2D), Int32(bitPattern: 0x2E), Int32(bitPattern: 0x2F),
+  Int32(bitPattern: 0x30), Int32(bitPattern: 0x31), Int32(bitPattern: 0x32), Int32(bitPattern: 0x33), Int32(bitPattern: 0x34), Int32(bitPattern: 0x35), Int32(bitPattern: 0x36), Int32(bitPattern: 0x37), Int32(bitPattern: 0x38), Int32(bitPattern: 0x39), Int32(bitPattern: 0x3A), Int32(bitPattern: 0x3B), Int32(bitPattern: 0x3C), Int32(bitPattern: 0x3D), Int32(bitPattern: 0x3E), Int32(bitPattern: 0x3F),
+  Int32(bitPattern: 0x40), Int32(bitPattern: 0x41), Int32(bitPattern: 0x42), Int32(bitPattern: 0x43), Int32(bitPattern: 0x44), Int32(bitPattern: 0x45), Int32(bitPattern: 0x46), Int32(bitPattern: 0x47), Int32(bitPattern: 0x48), Int32(bitPattern: 0x49), Int32(bitPattern: 0x4A), Int32(bitPattern: 0x4B), Int32(bitPattern: 0x4C), Int32(bitPattern: 0x4D), Int32(bitPattern: 0x4E), Int32(bitPattern: 0x4F),
+  Int32(bitPattern: 0x50), Int32(bitPattern: 0x51), Int32(bitPattern: 0x52), Int32(bitPattern: 0x53), Int32(bitPattern: 0x54), Int32(bitPattern: 0x55), Int32(bitPattern: 0x56), Int32(bitPattern: 0x57), Int32(bitPattern: 0x58), Int32(bitPattern: 0x59), Int32(bitPattern: 0x5A), Int32(bitPattern: 0x5B), Int32(bitPattern: 0x5C), Int32(bitPattern: 0x5D), Int32(bitPattern: 0x5E), Int32(bitPattern: 0x5F),
+  Int32(bitPattern: 0x60), Int32(bitPattern: 0x61), Int32(bitPattern: 0x62), Int32(bitPattern: 0x63), Int32(bitPattern: 0x64), Int32(bitPattern: 0x65), Int32(bitPattern: 0x66), Int32(bitPattern: 0x67), Int32(bitPattern: 0x68), Int32(bitPattern: 0x69), Int32(bitPattern: 0x6A), Int32(bitPattern: 0x6B), Int32(bitPattern: 0x6C), Int32(bitPattern: 0x6D), Int32(bitPattern: 0x6E), Int32(bitPattern: 0x6F),
+  Int32(bitPattern: 0x70), Int32(bitPattern: 0x71), Int32(bitPattern: 0x72), Int32(bitPattern: 0x73), Int32(bitPattern: 0x74), Int32(bitPattern: 0x75), Int32(bitPattern: 0x76), Int32(bitPattern: 0x77), Int32(bitPattern: 0x78), Int32(bitPattern: 0x79), Int32(bitPattern: 0x7A), Int32(bitPattern: 0x7B), Int32(bitPattern: 0x7C), Int32(bitPattern: 0x7D), Int32(bitPattern: 0x7E), Int32(bitPattern: 0x7F),
+  Int32(bitPattern: 0x80), Int32(bitPattern: 0x81), Int32(bitPattern: 0x82), Int32(bitPattern: 0x83), Int32(bitPattern: 0x84), Int32(bitPattern: 0x85), Int32(bitPattern: 0x86), Int32(bitPattern: 0x87), Int32(bitPattern: 0x88), Int32(bitPattern: 0x89), Int32(bitPattern: 0x8A), Int32(bitPattern: 0x8B), Int32(bitPattern: 0x8C), Int32(bitPattern: 0x8D), Int32(bitPattern: 0x8E), Int32(bitPattern: 0x8F),
+  Int32(bitPattern: 0x90), Int32(bitPattern: 0x91), Int32(bitPattern: 0x92), Int32(bitPattern: 0x93), Int32(bitPattern: 0x94), Int32(bitPattern: 0x95), Int32(bitPattern: 0x96), Int32(bitPattern: 0x97), Int32(bitPattern: 0x98), Int32(bitPattern: 0x99), Int32(bitPattern: 0x9A), Int32(bitPattern: 0x9B), Int32(bitPattern: 0x9C), Int32(bitPattern: 0x9D), Int32(bitPattern: 0x9E), Int32(bitPattern: 0x9F),
+  Int32(bitPattern: 0xA0), Int32(bitPattern: 0xA1), Int32(bitPattern: 0xA2), Int32(bitPattern: 0xA3), Int32(bitPattern: 0xA4), Int32(bitPattern: 0xA5), Int32(bitPattern: 0xA6), Int32(bitPattern: 0xA7), Int32(bitPattern: 0xA8), Int32(bitPattern: 0xA9), Int32(bitPattern: 0xAA), Int32(bitPattern: 0xAB), Int32(bitPattern: 0xAC), Int32(bitPattern: 0xAD), Int32(bitPattern: 0xAE), Int32(bitPattern: 0xAF),
+  Int32(bitPattern: 0xB0), Int32(bitPattern: 0xB1), Int32(bitPattern: 0xB2), Int32(bitPattern: 0xB3), Int32(bitPattern: 0xB4), Int32(bitPattern: 0xB5), Int32(bitPattern: 0xB6), Int32(bitPattern: 0xB7), Int32(bitPattern: 0xB8), Int32(bitPattern: 0xB9), Int32(bitPattern: 0xBA), Int32(bitPattern: 0xBB), Int32(bitPattern: 0xBC), Int32(bitPattern: 0xBD), Int32(bitPattern: 0xBE), Int32(bitPattern: 0xBF),
+  Int32(bitPattern: 0xC0), Int32(bitPattern: 0xC1), Int32(bitPattern: 0xC2), Int32(bitPattern: 0xC3), Int32(bitPattern: 0xC4), Int32(bitPattern: 0xC5), Int32(bitPattern: 0xC6), Int32(bitPattern: 0xC7), Int32(bitPattern: 0xC8), Int32(bitPattern: 0xC9), Int32(bitPattern: 0xCA), Int32(bitPattern: 0xCB), Int32(bitPattern: 0xCC), Int32(bitPattern: 0xCD), Int32(bitPattern: 0xCE), Int32(bitPattern: 0xCF),
+  Int32(bitPattern: 0xD0), Int32(bitPattern: 0xD1), Int32(bitPattern: 0xD2), Int32(bitPattern: 0xD3), Int32(bitPattern: 0xD4), Int32(bitPattern: 0xD5), Int32(bitPattern: 0xD6), Int32(bitPattern: 0xD7), Int32(bitPattern: 0xD8), Int32(bitPattern: 0xD9), Int32(bitPattern: 0xDA), Int32(bitPattern: 0xDB), Int32(bitPattern: 0xDC), Int32(bitPattern: 0xDD), Int32(bitPattern: 0xDE), Int32(bitPattern: 0xDF),
+  Int32(bitPattern: 0xE0), Int32(bitPattern: 0xE1), Int32(bitPattern: 0xE2), Int32(bitPattern: 0xE3), Int32(bitPattern: 0xE4), Int32(bitPattern: 0xE5), Int32(bitPattern: 0xE6), Int32(bitPattern: 0xE7), Int32(bitPattern: 0xE8), Int32(bitPattern: 0xE9), Int32(bitPattern: 0xEA), Int32(bitPattern: 0xEB), Int32(bitPattern: 0xEC), Int32(bitPattern: 0xED), Int32(bitPattern: 0xEE), Int32(bitPattern: 0xEF),
+  Int32(bitPattern: 0xF0), Int32(bitPattern: 0xF1), Int32(bitPattern: 0xF2), Int32(bitPattern: 0xF3), Int32(bitPattern: 0xF4), Int32(bitPattern: 0xF5), Int32(bitPattern: 0xF6), Int32(bitPattern: 0xF7), Int32(bitPattern: 0xF8), Int32(bitPattern: 0xF9), Int32(bitPattern: 0xFA), Int32(bitPattern: 0xFB), Int32(bitPattern: 0xFC), Int32(bitPattern: 0xFD), Int32(bitPattern: 0xFE), Int32(bitPattern: 0xFF),
+
+  Int32(bitPattern: 0x00), Int32(bitPattern: 0x01), Int32(bitPattern: 0x02), Int32(bitPattern: 0x03), Int32(bitPattern: 0x04), Int32(bitPattern: 0x05), Int32(bitPattern: 0x06), Int32(bitPattern: 0x07), Int32(bitPattern: 0x08), Int32(bitPattern: 0x09), Int32(bitPattern: 0x0A), Int32(bitPattern: 0x0B), Int32(bitPattern: 0x0C), Int32(bitPattern: 0x0D), Int32(bitPattern: 0x0E), Int32(bitPattern: 0x0F),
+  Int32(bitPattern: 0x10), Int32(bitPattern: 0x11), Int32(bitPattern: 0x12), Int32(bitPattern: 0x13), Int32(bitPattern: 0x14), Int32(bitPattern: 0x15), Int32(bitPattern: 0x16), Int32(bitPattern: 0x17), Int32(bitPattern: 0x18), Int32(bitPattern: 0x19), Int32(bitPattern: 0x1A), Int32(bitPattern: 0x1B), Int32(bitPattern: 0x1C), Int32(bitPattern: 0x1D), Int32(bitPattern: 0x1E), Int32(bitPattern: 0x1F),
+  Int32(bitPattern: 0x20), Int32(bitPattern: 0x21), Int32(bitPattern: 0x22), Int32(bitPattern: 0x23), Int32(bitPattern: 0x24), Int32(bitPattern: 0x25), Int32(bitPattern: 0x26), Int32(bitPattern: 0x27), Int32(bitPattern: 0x28), Int32(bitPattern: 0x29), Int32(bitPattern: 0x2A), Int32(bitPattern: 0x2B), Int32(bitPattern: 0x2C), Int32(bitPattern: 0x2D), Int32(bitPattern: 0x2E), Int32(bitPattern: 0x2F),
+  Int32(bitPattern: 0x30), Int32(bitPattern: 0x31), Int32(bitPattern: 0x32), Int32(bitPattern: 0x33), Int32(bitPattern: 0x34), Int32(bitPattern: 0x35), Int32(bitPattern: 0x36), Int32(bitPattern: 0x37), Int32(bitPattern: 0x38), Int32(bitPattern: 0x39), Int32(bitPattern: 0x3A), Int32(bitPattern: 0x3B), Int32(bitPattern: 0x3C), Int32(bitPattern: 0x3D), Int32(bitPattern: 0x3E), Int32(bitPattern: 0x3F),
+  Int32(bitPattern: 0x40), Int32(bitPattern: 0x41), Int32(bitPattern: 0x42), Int32(bitPattern: 0x43), Int32(bitPattern: 0x44), Int32(bitPattern: 0x45), Int32(bitPattern: 0x46), Int32(bitPattern: 0x47), Int32(bitPattern: 0x48), Int32(bitPattern: 0x49), Int32(bitPattern: 0x4A), Int32(bitPattern: 0x4B), Int32(bitPattern: 0x4C), Int32(bitPattern: 0x4D), Int32(bitPattern: 0x4E), Int32(bitPattern: 0x4F),
+  Int32(bitPattern: 0x50), Int32(bitPattern: 0x51), Int32(bitPattern: 0x52), Int32(bitPattern: 0x53), Int32(bitPattern: 0x54), Int32(bitPattern: 0x55), Int32(bitPattern: 0x56), Int32(bitPattern: 0x57), Int32(bitPattern: 0x58), Int32(bitPattern: 0x59), Int32(bitPattern: 0x5A), Int32(bitPattern: 0x5B), Int32(bitPattern: 0x5C), Int32(bitPattern: 0x5D), Int32(bitPattern: 0x5E), Int32(bitPattern: 0x5F),
+  Int32(bitPattern: 0x60), Int32(bitPattern: 0x61), Int32(bitPattern: 0x62), Int32(bitPattern: 0x63), Int32(bitPattern: 0x64), Int32(bitPattern: 0x65), Int32(bitPattern: 0x66), Int32(bitPattern: 0x67), Int32(bitPattern: 0x68), Int32(bitPattern: 0x69), Int32(bitPattern: 0x6A), Int32(bitPattern: 0x6B), Int32(bitPattern: 0x6C), Int32(bitPattern: 0x6D), Int32(bitPattern: 0x6E), Int32(bitPattern: 0x6F),
+  Int32(bitPattern: 0x70), Int32(bitPattern: 0x71), Int32(bitPattern: 0x72), Int32(bitPattern: 0x73), Int32(bitPattern: 0x74), Int32(bitPattern: 0x75), Int32(bitPattern: 0x76), Int32(bitPattern: 0x77), Int32(bitPattern: 0x78), Int32(bitPattern: 0x79), Int32(bitPattern: 0x7A), Int32(bitPattern: 0x7B), Int32(bitPattern: 0x7C), Int32(bitPattern: 0x7D), Int32(bitPattern: 0x7E), Int32(bitPattern: 0x7F),
+  Int32(bitPattern: 0x80), Int32(bitPattern: 0x81), Int32(bitPattern: 0x82), Int32(bitPattern: 0x83), Int32(bitPattern: 0x84), Int32(bitPattern: 0x85), Int32(bitPattern: 0x86), Int32(bitPattern: 0x87), Int32(bitPattern: 0x88), Int32(bitPattern: 0x89), Int32(bitPattern: 0x8A), Int32(bitPattern: 0x8B), Int32(bitPattern: 0x8C), Int32(bitPattern: 0x8D), Int32(bitPattern: 0x8E), Int32(bitPattern: 0x8F),
+  Int32(bitPattern: 0x90), Int32(bitPattern: 0x91), Int32(bitPattern: 0x92), Int32(bitPattern: 0x93), Int32(bitPattern: 0x94), Int32(bitPattern: 0x95), Int32(bitPattern: 0x96), Int32(bitPattern: 0x97), Int32(bitPattern: 0x98), Int32(bitPattern: 0x99), Int32(bitPattern: 0x9A), Int32(bitPattern: 0x9B), Int32(bitPattern: 0x9C), Int32(bitPattern: 0x9D), Int32(bitPattern: 0x9E), Int32(bitPattern: 0x9F),
+  Int32(bitPattern: 0xA0), Int32(bitPattern: 0xA1), Int32(bitPattern: 0xA2), Int32(bitPattern: 0xA3), Int32(bitPattern: 0xA4), Int32(bitPattern: 0xA5), Int32(bitPattern: 0xA6), Int32(bitPattern: 0xA7), Int32(bitPattern: 0xA8), Int32(bitPattern: 0xA9), Int32(bitPattern: 0xAA), Int32(bitPattern: 0xAB), Int32(bitPattern: 0xAC), Int32(bitPattern: 0xAD), Int32(bitPattern: 0xAE), Int32(bitPattern: 0xAF),
+  Int32(bitPattern: 0xB0), Int32(bitPattern: 0xB1), Int32(bitPattern: 0xB2), Int32(bitPattern: 0xB3), Int32(bitPattern: 0xB4), Int32(bitPattern: 0xB5), Int32(bitPattern: 0xB6), Int32(bitPattern: 0xB7), Int32(bitPattern: 0xB8), Int32(bitPattern: 0xB9), Int32(bitPattern: 0xBA), Int32(bitPattern: 0xBB), Int32(bitPattern: 0xBC), Int32(bitPattern: 0xBD), Int32(bitPattern: 0xBE), Int32(bitPattern: 0xBF),
+  Int32(bitPattern: 0xC0), Int32(bitPattern: 0xC1), Int32(bitPattern: 0xC2), Int32(bitPattern: 0xC3), Int32(bitPattern: 0xC4), Int32(bitPattern: 0xC5), Int32(bitPattern: 0xC6), Int32(bitPattern: 0xC7), Int32(bitPattern: 0xC8), Int32(bitPattern: 0xC9), Int32(bitPattern: 0xCA), Int32(bitPattern: 0xCB), Int32(bitPattern: 0xCC), Int32(bitPattern: 0xCD), Int32(bitPattern: 0xCE), Int32(bitPattern: 0xCF),
+  Int32(bitPattern: 0xD0), Int32(bitPattern: 0xD1), Int32(bitPattern: 0xD2), Int32(bitPattern: 0xD3), Int32(bitPattern: 0xD4), Int32(bitPattern: 0xD5), Int32(bitPattern: 0xD6), Int32(bitPattern: 0xD7), Int32(bitPattern: 0xD8), Int32(bitPattern: 0xD9), Int32(bitPattern: 0xDA), Int32(bitPattern: 0xDB), Int32(bitPattern: 0xDC), Int32(bitPattern: 0xDD), Int32(bitPattern: 0xDE), Int32(bitPattern: 0xDF),
+  Int32(bitPattern: 0xE0), Int32(bitPattern: 0xE1), Int32(bitPattern: 0xE2), Int32(bitPattern: 0xE3), Int32(bitPattern: 0xE4), Int32(bitPattern: 0xE5), Int32(bitPattern: 0xE6), Int32(bitPattern: 0xE7), Int32(bitPattern: 0xE8), Int32(bitPattern: 0xE9), Int32(bitPattern: 0xEA), Int32(bitPattern: 0xEB), Int32(bitPattern: 0xEC), Int32(bitPattern: 0xED), Int32(bitPattern: 0xEE), Int32(bitPattern: 0xEF),
+  Int32(bitPattern: 0xF0), Int32(bitPattern: 0xF1), Int32(bitPattern: 0xF2), Int32(bitPattern: 0xF3), Int32(bitPattern: 0xF4), Int32(bitPattern: 0xF5), Int32(bitPattern: 0xF6), Int32(bitPattern: 0xF7), Int32(bitPattern: 0xF8), Int32(bitPattern: 0xF9), Int32(bitPattern: 0xFA), Int32(bitPattern: 0xFB), Int32(bitPattern: 0xFC), Int32(bitPattern: 0xFD), Int32(bitPattern: 0xFE), Int32(bitPattern: 0xFF),
+
+  Int32(bitPattern: 0x00), Int32(bitPattern: 0x01), Int32(bitPattern: 0x02), Int32(bitPattern: 0x03), Int32(bitPattern: 0x04), Int32(bitPattern: 0x05), Int32(bitPattern: 0x06), Int32(bitPattern: 0x07), Int32(bitPattern: 0x08), Int32(bitPattern: 0x09), Int32(bitPattern: 0x0A), Int32(bitPattern: 0x0B), Int32(bitPattern: 0x0C), Int32(bitPattern: 0x0D), Int32(bitPattern: 0x0E), Int32(bitPattern: 0x0F),
+  Int32(bitPattern: 0x10), Int32(bitPattern: 0x11), Int32(bitPattern: 0x12), Int32(bitPattern: 0x13), Int32(bitPattern: 0x14), Int32(bitPattern: 0x15), Int32(bitPattern: 0x16), Int32(bitPattern: 0x17), Int32(bitPattern: 0x18), Int32(bitPattern: 0x19), Int32(bitPattern: 0x1A), Int32(bitPattern: 0x1B), Int32(bitPattern: 0x1C), Int32(bitPattern: 0x1D), Int32(bitPattern: 0x1E), Int32(bitPattern: 0x1F),
+  Int32(bitPattern: 0x20), Int32(bitPattern: 0x21), Int32(bitPattern: 0x22), Int32(bitPattern: 0x23), Int32(bitPattern: 0x24), Int32(bitPattern: 0x25), Int32(bitPattern: 0x26), Int32(bitPattern: 0x27), Int32(bitPattern: 0x28), Int32(bitPattern: 0x29), Int32(bitPattern: 0x2A), Int32(bitPattern: 0x2B), Int32(bitPattern: 0x2C), Int32(bitPattern: 0x2D), Int32(bitPattern: 0x2E), Int32(bitPattern: 0x2F),
+  Int32(bitPattern: 0x30), Int32(bitPattern: 0x31), Int32(bitPattern: 0x32), Int32(bitPattern: 0x33), Int32(bitPattern: 0x34), Int32(bitPattern: 0x35), Int32(bitPattern: 0x36), Int32(bitPattern: 0x37), Int32(bitPattern: 0x38), Int32(bitPattern: 0x39), Int32(bitPattern: 0x3A), Int32(bitPattern: 0x3B), Int32(bitPattern: 0x3C), Int32(bitPattern: 0x3D), Int32(bitPattern: 0x3E), Int32(bitPattern: 0x3F),
+  Int32(bitPattern: 0x40), Int32(bitPattern: 0x41), Int32(bitPattern: 0x42), Int32(bitPattern: 0x43), Int32(bitPattern: 0x44), Int32(bitPattern: 0x45), Int32(bitPattern: 0x46), Int32(bitPattern: 0x47), Int32(bitPattern: 0x48), Int32(bitPattern: 0x49), Int32(bitPattern: 0x4A), Int32(bitPattern: 0x4B), Int32(bitPattern: 0x4C), Int32(bitPattern: 0x4D), Int32(bitPattern: 0x4E), Int32(bitPattern: 0x4F),
+  Int32(bitPattern: 0x50), Int32(bitPattern: 0x51), Int32(bitPattern: 0x52), Int32(bitPattern: 0x53), Int32(bitPattern: 0x54), Int32(bitPattern: 0x55), Int32(bitPattern: 0x56), Int32(bitPattern: 0x57), Int32(bitPattern: 0x58), Int32(bitPattern: 0x59), Int32(bitPattern: 0x5A), Int32(bitPattern: 0x5B), Int32(bitPattern: 0x5C), Int32(bitPattern: 0x5D), Int32(bitPattern: 0x5E), Int32(bitPattern: 0x5F),
+  Int32(bitPattern: 0x60), Int32(bitPattern: 0x61), Int32(bitPattern: 0x62), Int32(bitPattern: 0x63), Int32(bitPattern: 0x64), Int32(bitPattern: 0x65), Int32(bitPattern: 0x66), Int32(bitPattern: 0x67), Int32(bitPattern: 0x68), Int32(bitPattern: 0x69), Int32(bitPattern: 0x6A), Int32(bitPattern: 0x6B), Int32(bitPattern: 0x6C), Int32(bitPattern: 0x6D), Int32(bitPattern: 0x6E), Int32(bitPattern: 0x6F),
+  Int32(bitPattern: 0x70), Int32(bitPattern: 0x71), Int32(bitPattern: 0x72), Int32(bitPattern: 0x73), Int32(bitPattern: 0x74), Int32(bitPattern: 0x75), Int32(bitPattern: 0x76), Int32(bitPattern: 0x77), Int32(bitPattern: 0x78), Int32(bitPattern: 0x79), Int32(bitPattern: 0x7A), Int32(bitPattern: 0x7B), Int32(bitPattern: 0x7C), Int32(bitPattern: 0x7D), Int32(bitPattern: 0x7E), Int32(bitPattern: 0x7F),
+  Int32(bitPattern: 0x80), Int32(bitPattern: 0x81), Int32(bitPattern: 0x82), Int32(bitPattern: 0x83), Int32(bitPattern: 0x84), Int32(bitPattern: 0x85), Int32(bitPattern: 0x86), Int32(bitPattern: 0x87), Int32(bitPattern: 0x88), Int32(bitPattern: 0x89), Int32(bitPattern: 0x8A), Int32(bitPattern: 0x8B), Int32(bitPattern: 0x8C), Int32(bitPattern: 0x8D), Int32(bitPattern: 0x8E), Int32(bitPattern: 0x8F),
+  Int32(bitPattern: 0x90), Int32(bitPattern: 0x91), Int32(bitPattern: 0x92), Int32(bitPattern: 0x93), Int32(bitPattern: 0x94), Int32(bitPattern: 0x95), Int32(bitPattern: 0x96), Int32(bitPattern: 0x97), Int32(bitPattern: 0x98), Int32(bitPattern: 0x99), Int32(bitPattern: 0x9A), Int32(bitPattern: 0x9B), Int32(bitPattern: 0x9C), Int32(bitPattern: 0x9D), Int32(bitPattern: 0x9E), Int32(bitPattern: 0x9F),
+  Int32(bitPattern: 0xA0), Int32(bitPattern: 0xA1), Int32(bitPattern: 0xA2), Int32(bitPattern: 0xA3), Int32(bitPattern: 0xA4), Int32(bitPattern: 0xA5), Int32(bitPattern: 0xA6), Int32(bitPattern: 0xA7), Int32(bitPattern: 0xA8), Int32(bitPattern: 0xA9), Int32(bitPattern: 0xAA), Int32(bitPattern: 0xAB), Int32(bitPattern: 0xAC), Int32(bitPattern: 0xAD), Int32(bitPattern: 0xAE), Int32(bitPattern: 0xAF),
+  Int32(bitPattern: 0xB0), Int32(bitPattern: 0xB1), Int32(bitPattern: 0xB2), Int32(bitPattern: 0xB3), Int32(bitPattern: 0xB4), Int32(bitPattern: 0xB5), Int32(bitPattern: 0xB6), Int32(bitPattern: 0xB7), Int32(bitPattern: 0xB8), Int32(bitPattern: 0xB9), Int32(bitPattern: 0xBA), Int32(bitPattern: 0xBB), Int32(bitPattern: 0xBC), Int32(bitPattern: 0xBD), Int32(bitPattern: 0xBE), Int32(bitPattern: 0xBF),
+  Int32(bitPattern: 0xC0), Int32(bitPattern: 0xC1), Int32(bitPattern: 0xC2), Int32(bitPattern: 0xC3), Int32(bitPattern: 0xC4), Int32(bitPattern: 0xC5), Int32(bitPattern: 0xC6), Int32(bitPattern: 0xC7), Int32(bitPattern: 0xC8), Int32(bitPattern: 0xC9), Int32(bitPattern: 0xCA), Int32(bitPattern: 0xCB), Int32(bitPattern: 0xCC), Int32(bitPattern: 0xCD), Int32(bitPattern: 0xCE), Int32(bitPattern: 0xCF),
+  Int32(bitPattern: 0xD0), Int32(bitPattern: 0xD1), Int32(bitPattern: 0xD2), Int32(bitPattern: 0xD3), Int32(bitPattern: 0xD4), Int32(bitPattern: 0xD5), Int32(bitPattern: 0xD6), Int32(bitPattern: 0xD7), Int32(bitPattern: 0xD8), Int32(bitPattern: 0xD9), Int32(bitPattern: 0xDA), Int32(bitPattern: 0xDB), Int32(bitPattern: 0xDC), Int32(bitPattern: 0xDD), Int32(bitPattern: 0xDE), Int32(bitPattern: 0xDF),
+  Int32(bitPattern: 0xE0), Int32(bitPattern: 0xE1), Int32(bitPattern: 0xE2), Int32(bitPattern: 0xE3), Int32(bitPattern: 0xE4), Int32(bitPattern: 0xE5), Int32(bitPattern: 0xE6), Int32(bitPattern: 0xE7), Int32(bitPattern: 0xE8), Int32(bitPattern: 0xE9), Int32(bitPattern: 0xEA), Int32(bitPattern: 0xEB), Int32(bitPattern: 0xEC), Int32(bitPattern: 0xED), Int32(bitPattern: 0xEE), Int32(bitPattern: 0xEF),
+  Int32(bitPattern: 0xF0), Int32(bitPattern: 0xF1), Int32(bitPattern: 0xF2), Int32(bitPattern: 0xF3), Int32(bitPattern: 0xF4), Int32(bitPattern: 0xF5), Int32(bitPattern: 0xF6), Int32(bitPattern: 0xF7), Int32(bitPattern: 0xF8), Int32(bitPattern: 0xF9), Int32(bitPattern: 0xFA), Int32(bitPattern: 0xFB), Int32(bitPattern: 0xFC), Int32(bitPattern: 0xFD), Int32(bitPattern: 0xFE), Int32(bitPattern: 0xFF),
+]
+
diff --git a/test/Misc/stats_dir.swift b/test/Misc/stats_dir.swift
new file mode 100644
index 0000000..aa5af2e
--- /dev/null
+++ b/test/Misc/stats_dir.swift
@@ -0,0 +1,18 @@
+// RUN: rm -rf %t && mkdir -p %t
+// RUN: %target-swift-frontend -c -o %t/out.o -stats-output-dir %t %s
+// RUN: %utils/process-stats-dir.py --set-csv-baseline %t/frontend.csv %t
+// RUN: %FileCheck -input-file %t/frontend.csv %s
+// RUN: echo '9000000000	"LLVM.NumLLVMBytesOutput"	1' >>%t/frontend.csv
+// RUN: not %utils/process-stats-dir.py --compare-to-csv-baseline %t/frontend.csv %t
+
+// RUN: rm -rf %t && mkdir -p %t
+// RUN: %target-swiftc_driver -c -o %t/out.o -stats-output-dir %t %s
+// RUN: %utils/process-stats-dir.py --set-csv-baseline %t/driver.csv %t
+// RUN: %FileCheck -input-file %t/driver.csv %s
+// RUN: %utils/process-stats-dir.py --compare-to-csv-baseline %t/driver.csv %t
+
+// CHECK: LLVM.NumLLVMBytesOutput
+
+public func foo() {
+    print("hello")
+}
diff --git a/test/NameBinding/InheritedConformance.swift b/test/NameBinding/InheritedConformance.swift
index b424710..7a7703c 100644
--- a/test/NameBinding/InheritedConformance.swift
+++ b/test/NameBinding/InheritedConformance.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-swift-frontend -typecheck -primary-file %t/main.swift -emit-reference-dependencies-path - > %t.swiftdeps
 
diff --git a/test/NameBinding/Inputs/protocol-inheritance.swift b/test/NameBinding/Inputs/protocol-inheritance.swift
new file mode 100644
index 0000000..e0f8ff4
--- /dev/null
+++ b/test/NameBinding/Inputs/protocol-inheritance.swift
@@ -0,0 +1,18 @@
+public protocol Critter {
+  associatedtype Fur
+}
+public protocol Pet {}
+
+public typealias Cat = Critter & Pet
+
+public protocol Kitten : Cat {}
+
+extension Kitten {
+  public func pet() -> Fur {
+    while true {}
+  }
+}
+
+public final class Meow<Purrs> : Kitten {
+  public typealias Fur = Purrs
+}
diff --git a/test/NameBinding/accessibility.swift b/test/NameBinding/accessibility.swift
index 46efbde..c8bd2c4 100644
--- a/test/NameBinding/accessibility.swift
+++ b/test/NameBinding/accessibility.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/has_accessibility.swift -D DEFINE_VAR_FOR_SCOPED_IMPORT -enable-testing
diff --git a/test/NameBinding/debug-client-discriminator.swift b/test/NameBinding/debug-client-discriminator.swift
index f5203f3..5f5b8e0 100644
--- a/test/NameBinding/debug-client-discriminator.swift
+++ b/test/NameBinding/debug-client-discriminator.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-frontend -emit-module -o %t -module-name HasPrivateAccess %S/Inputs/HasPrivateAccess1.swift %S/Inputs/HasPrivateAccess2.swift
 // RUN: %target-swift-ide-test -print-ast-typechecked -source-filename %s -I %t -sdk "" -disable-access-control 2>&1 | %FileCheck -check-prefix=CHECK-ERROR %s
diff --git a/test/NameBinding/import-resolution-2.swift b/test/NameBinding/import-resolution-2.swift
index 1f0e667..d4a832f 100644
--- a/test/NameBinding/import-resolution-2.swift
+++ b/test/NameBinding/import-resolution-2.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/abcde.swift
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/aeiou.swift
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/asdf.swift
diff --git a/test/NameBinding/import-resolution-overload.swift b/test/NameBinding/import-resolution-overload.swift
index a456acc..0e8bcd3 100644
--- a/test/NameBinding/import-resolution-overload.swift
+++ b/test/NameBinding/import-resolution-overload.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/overload_intFunctions.swift
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/overload_boolFunctions.swift
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/overload_vars.swift
diff --git a/test/NameBinding/import-resolution.swift b/test/NameBinding/import-resolution.swift
index 37e5ffb..773fe0e 100644
--- a/test/NameBinding/import-resolution.swift
+++ b/test/NameBinding/import-resolution.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-frontend -typecheck %s -enable-source-import -I %S/Inputs -sdk "" -verify -show-diagnostics-after-fatal
 // RUN: not %target-swift-frontend -typecheck %s -I %S/Inputs -sdk "" -show-diagnostics-after-fatal 2>&1 | %FileCheck %s -check-prefix=CHECK-NO-SOURCE-IMPORT
diff --git a/test/NameBinding/import-specific-decl.swift b/test/NameBinding/import-specific-decl.swift
index 00d5bac..7daed54 100644
--- a/test/NameBinding/import-specific-decl.swift
+++ b/test/NameBinding/import-specific-decl.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/asdf.swift
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/abcde.swift
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/aeiou.swift
diff --git a/test/NameBinding/import-specific-fixits.swift b/test/NameBinding/import-specific-fixits.swift
index 7abddfb..2d78b25 100644
--- a/test/NameBinding/import-specific-fixits.swift
+++ b/test/NameBinding/import-specific-fixits.swift
@@ -1,6 +1,5 @@
 // RUN: rm -f %t.*
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/ambiguous_left.swift
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/ambiguous_right.swift
 // RUN: %target-swift-frontend -emit-module -o %t -I %t %S/Inputs/ambiguous.swift
diff --git a/test/NameBinding/name_lookup.swift b/test/NameBinding/name_lookup.swift
index b8b0aef..947adc8 100644
--- a/test/NameBinding/name_lookup.swift
+++ b/test/NameBinding/name_lookup.swift
@@ -528,7 +528,7 @@
 // <rdar://problem/16954496> lazy properties must use "self." in their body, and can weirdly refer to class variables directly
 class r16954496 {
   func bar() {}
-  lazy var x: Array<() -> Void> = [bar]
+  lazy var x: Array<() -> Void> = [bar] // expected-error {{cannot convert value of type '(r16954496) -> () -> ()' to expected element type '() -> Void'}}
 }
 
 
diff --git a/test/NameBinding/objc_multi_file.swift b/test/NameBinding/objc_multi_file.swift
index 3106c8d..a6cfbfa 100644
--- a/test/NameBinding/objc_multi_file.swift
+++ b/test/NameBinding/objc_multi_file.swift
@@ -1,7 +1,7 @@
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -primary-file %S/Inputs/objc_multi_file_2.swift %s -verify
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -primary-file %s %S/Inputs/objc_multi_file_2.swift -verify
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module %S/Inputs/objc_multi_file_2.swift -DFAKE_UIIMAGE -o %t
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -module-name main -primary-file %s -I %t -DIMPORT -verify
 
diff --git a/test/NameBinding/protocol-inheritance.swift b/test/NameBinding/protocol-inheritance.swift
new file mode 100644
index 0000000..7c5d386
--- /dev/null
+++ b/test/NameBinding/protocol-inheritance.swift
@@ -0,0 +1,5 @@
+// RUN: %target-swift-frontend -typecheck -primary-file %s %S/Inputs/protocol-inheritance.swift
+
+func kitty<Purrs>(cat: Meow<Purrs>) {
+  cat.pet()
+}
diff --git a/test/NameBinding/reference-dependencies-dynamic-lookup.swift b/test/NameBinding/reference-dependencies-dynamic-lookup.swift
index 9afb4ae..e34045c 100644
--- a/test/NameBinding/reference-dependencies-dynamic-lookup.swift
+++ b/test/NameBinding/reference-dependencies-dynamic-lookup.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -primary-file %t/main.swift -emit-reference-dependencies-path - > %t.swiftdeps
 // RUN: %FileCheck %s < %t.swiftdeps
diff --git a/test/NameBinding/reference-dependencies-errors.swift b/test/NameBinding/reference-dependencies-errors.swift
index 5099519..72dc060 100644
--- a/test/NameBinding/reference-dependencies-errors.swift
+++ b/test/NameBinding/reference-dependencies-errors.swift
@@ -1,5 +1,9 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: not %target-swift-frontend -typecheck -primary-file %t/main.swift -emit-reference-dependencies-path - > %t.swiftdeps
 
+associatedtype Baz
+case bar
+deinit {}
 extension Foo {}
+init() {}
diff --git a/test/NameBinding/reference-dependencies-members.swift b/test/NameBinding/reference-dependencies-members.swift
index e70a66e..7621fb9 100644
--- a/test/NameBinding/reference-dependencies-members.swift
+++ b/test/NameBinding/reference-dependencies-members.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-swift-frontend -typecheck -primary-file %t/main.swift %S/Inputs/reference-dependencies-members-helper.swift -emit-reference-dependencies-path - > %t.swiftdeps
 
diff --git a/test/NameBinding/reference-dependencies.swift b/test/NameBinding/reference-dependencies.swift
index 82f1f06..09b4ce0 100644
--- a/test/NameBinding/reference-dependencies.swift
+++ b/test/NameBinding/reference-dependencies.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-swift-frontend -typecheck -primary-file %t/main.swift %S/Inputs/reference-dependencies-helper.swift -emit-reference-dependencies-path - > %t.swiftdeps
 // RUN: %FileCheck %s < %t.swiftdeps
diff --git a/test/Parse/ConditionalCompilation/basicParseErrors.swift b/test/Parse/ConditionalCompilation/basicParseErrors.swift
index d853e4b..6ea3db5 100644
--- a/test/Parse/ConditionalCompilation/basicParseErrors.swift
+++ b/test/Parse/ConditionalCompilation/basicParseErrors.swift
@@ -114,3 +114,27 @@
 #else
 undefinedFunc() // expected-error {{use of unresolved identifier 'undefinedFunc'}}
 #endif
+
+/// Invalid platform condition arguments don't invalidate the whole condition.
+#if !arch(tecture) && !os(ystem) && !_endian(ness)
+// expected-warning@-1 {{unknown architecture for build configuration 'arch'}}
+// expected-note@-2 {{did you mean 'arm'?}} {{11-18=arm}}
+// expected-warning@-3 {{unknown operating system for build configuration 'os'}}
+// expected-note@-4 {{did you mean 'OSX'?}} {{27-32=OSX}}
+// expected-note@-5 {{did you mean 'PS4'?}} {{27-32=PS4}}
+// expected-warning@-6 {{unknown endianness for build configuration '_endian'}}
+// expected-note@-7 {{did you mean 'big'?}} {{46-50=big}}
+func fn_k() {}
+#endif
+fn_k()
+
+#if os(cillator) || arch(ive)
+// expected-warning@-1 {{unknown operating system for build configuration 'os'}}
+// expected-note@-2 {{did you mean 'macOS'?}} {{8-16=macOS}}
+// expected-note@-3 {{did you mean 'iOS'?}} {{8-16=iOS}}
+// expected-warning@-4 {{unknown architecture for build configuration 'arch'}}
+// expected-note@-5 {{did you mean 'arm'?}} {{26-29=arm}}
+// expected-note@-6 {{did you mean 'i386'?}} {{26-29=i386}}
+func undefinedFunc() // ignored.
+#endif
+undefinedFunc() // expected-error {{use of unresolved identifier 'undefinedFunc'}}
diff --git a/test/Parse/ConditionalCompilation/pound-if-top-level-4.swift b/test/Parse/ConditionalCompilation/pound-if-top-level-4.swift
new file mode 100644
index 0000000..c6d53e1
--- /dev/null
+++ b/test/Parse/ConditionalCompilation/pound-if-top-level-4.swift
@@ -0,0 +1,21 @@
+// RUN: %target-typecheck-verify-swift
+
+// https://bugs.swift.org/browse/SR-4426
+// '#if' in top-level code that contains only decls should not disturb forward reference.
+
+typealias A = B
+
+#if false
+func foo() {}
+#endif
+
+struct B {}
+
+// If '#if' contains active non-decls, we don't support forward reference.
+typealias C = D // expected-error {{use of undeclared type 'D'}}
+
+#if true
+print("ok")
+#endif
+
+struct D {}
diff --git a/test/Parse/ConditionalCompilation/stmt_in_type.swift b/test/Parse/ConditionalCompilation/stmt_in_type.swift
new file mode 100644
index 0000000..154856a
--- /dev/null
+++ b/test/Parse/ConditionalCompilation/stmt_in_type.swift
@@ -0,0 +1,13 @@
+// RUN: %target-typecheck-verify-swift -D FOO
+
+// Test case for statements in #if block in types.
+
+func foo() {}
+
+struct S1 { // expected-note 2 {{in declaration of 'S1'}}
+#if FOO
+  return 1; // expected-error {{expected declaration}}
+#elseif BAR
+  foo(); // expected-error {{expected declaration}}
+#endif
+}
diff --git a/test/Parse/ConditionalCompilation/toplevel_parseaslibrary.swift b/test/Parse/ConditionalCompilation/toplevel_parseaslibrary.swift
new file mode 100644
index 0000000..d946620
--- /dev/null
+++ b/test/Parse/ConditionalCompilation/toplevel_parseaslibrary.swift
@@ -0,0 +1,11 @@
+// RUN: %target-typecheck-verify-swift -parse-as-library -D FOO
+
+// '-parse-as-library' doesn't allow exprssions nor statements in #if blocks.
+
+func foo() {}
+
+#if FOO
+  foo() // expected-error {{expressions are not allowed at the top level}}
+#else
+  if true { foo() } // expected-error {{statements are not allowed at the top level}}
+#endif
diff --git a/test/Parse/enum_element_pattern_swift4.swift b/test/Parse/enum_element_pattern_swift4.swift
index 51c8506..41c86e97 100644
--- a/test/Parse/enum_element_pattern_swift4.swift
+++ b/test/Parse/enum_element_pattern_swift4.swift
@@ -27,9 +27,11 @@
     break
   case E.B<Int>(): // expected-error {{cannot specialize a non-generic definition}} expected-note {{while parsing this '<' as a type parameter bracket}}
     break
-  case .C(): // FIXME: This should be rejected as well.
+  case .C(): // expected-error {{pattern with associated values does not match enum case 'C'}}
+             // expected-note@-1 {{remove associated values to make the pattern match}} {{10-12=}} 
     break
-  case .D(let payload): // FIXME: ditto.
+  case .D(let payload): // expected-error{{pattern with associated values does not match enum case 'D'}}
+                        // expected-note@-1 {{remove associated values to make the pattern match}} {{10-23=}}
     let _: () = payload
     break
   default:
@@ -37,10 +39,10 @@
   }
 
   guard
-    // Currently, these will be asserted in SILGen,
-    // or in no-assert build, verify-failed in IRGen
-    case .C() = e, // FIXME: Should be rejected.
-    case .D(let payload) = e // FIXME: ditto.
+    case .C() = e, // expected-error {{pattern with associated values does not match enum case 'C'}} 
+                   // expected-note@-1 {{remove associated values to make the pattern match}} {{12-14=}}
+    case .D(let payload) = e // expected-error {{pattern with associated values does not match enum case 'D'}}
+                             // expected-note@-1 {{remove associated values to make the pattern match}} {{12-25=}}
   else { return }
 }
 
@@ -51,8 +53,10 @@
 
 do {
   try canThrow()
-} catch E.A() { // FIXME: Should be rejected.
+} catch E.A() { // expected-error {{pattern with associated values does not match enum case 'A'}}
+                // expected-note@-1 {{remove associated values to make the pattern match}} {{12-14=}}
   // ..
-} catch E.B(let payload) { // FIXME: ditto.
+} catch E.B(let payload) { // expected-error {{pattern with associated values does not match enum case 'B'}}
+                           // expected-note@-1 {{remove associated values to make the pattern match}} {{12-25=}} 
   let _: () = payload
 }
diff --git a/test/Parse/matching_patterns.swift b/test/Parse/matching_patterns.swift
index 3250453..d5b2646 100644
--- a/test/Parse/matching_patterns.swift
+++ b/test/Parse/matching_patterns.swift
@@ -1,4 +1,4 @@
-// RUN: %target-typecheck-verify-swift -I %S/Inputs -enable-source-import
+// RUN: %target-typecheck-verify-swift -swift-version 4 -I %S/Inputs -enable-source-import
 
 import imported_enums
 
@@ -85,8 +85,12 @@
       ()
 
     case .Naught,
-         .Naught(),
-         .Naught(_, _): // expected-error{{tuple pattern has the wrong length for tuple type '()'}}
+         .Naught(), // expected-error {{pattern with associated values does not match enum case 'Naught'}}
+                    // expected-note@-1 {{remove associated values to make the pattern match}} {{17-19=}}
+         .Naught(_), // expected-error{{pattern with associated values does not match enum case 'Naught'}}
+                     // expected-note@-1 {{remove associated values to make the pattern match}} {{17-20=}}
+         .Naught(_, _): // expected-error{{pattern with associated values does not match enum case 'Naught'}}
+                        // expected-note@-1 {{remove associated values to make the pattern match}} {{17-23=}}
       ()
 
     case .Mere,
@@ -112,13 +116,21 @@
 }
 
 var n : Voluntary<Int> = .Naught
+if case let .Naught(value) = n {} // expected-error{{pattern with associated values does not match enum case 'Naught'}}
+                                  // expected-note@-1 {{remove associated values to make the pattern match}} {{20-27=}}
+if case let .Naught(value1, value2, value3) = n {} // expected-error{{pattern with associated values does not match enum case 'Naught'}}
+                                                   // expected-note@-1 {{remove associated values to make the pattern match}} {{20-44=}}
+
+
 
 switch n {
 case Foo.A: // expected-error{{enum case 'A' is not a member of type 'Voluntary<Int>'}}
   ()
 case Voluntary<Int>.Naught,
-     Voluntary<Int>.Naught(),
-     Voluntary<Int>.Naught(_, _), // expected-error{{tuple pattern has the wrong length for tuple type '()'}}
+     Voluntary<Int>.Naught(), // expected-error {{pattern with associated values does not match enum case 'Naught'}}
+                              // expected-note@-1 {{remove associated values to make the pattern match}} {{27-29=}}
+     Voluntary<Int>.Naught(_, _), // expected-error{{pattern with associated values does not match enum case 'Naught'}}
+                                  // expected-note@-1 {{remove associated values to make the pattern match}} {{27-33=}}
      Voluntary.Naught,
      .Naught:
   ()
diff --git a/test/Parse/multiline_errors.swift b/test/Parse/multiline_errors.swift
index e58b64b..21275ee 100644
--- a/test/Parse/multiline_errors.swift
+++ b/test/Parse/multiline_errors.swift
@@ -105,4 +105,18 @@
           // expected-note@-15{{change indentation of these lines to match closing delimiter}} {{2-2=	}} {{2-2=	}}
           // expected-error@-14{{unexpected space in indentation of next 4 lines in multi-line string literal}}
           // expected-note@-7{{should match tab here}}
-          // expected-note@-16{{change indentation of these lines to match closing delimiter}} {{1-1=		}} {{1-1=		}} {{1-1=		}} {{1-1=		}}
\ No newline at end of file
+          // expected-note@-16{{change indentation of these lines to match closing delimiter}} {{1-1=		}} {{1-1=		}} {{1-1=		}} {{1-1=		}}
+
+_ = "hello\("""
+            world
+            """
+            )!"
+            // expected-error@-4 {{unterminated string literal}}
+            // expected-error@-2 {{unterminated string literal}}
+
+_ = "hello\(
+            """
+            world
+            """)!"
+            // expected-error@-4 {{unterminated string literal}}
+            // expected-error@-2 {{unterminated string literal}}
diff --git a/test/Parse/multiline_string.swift b/test/Parse/multiline_string.swift
index fc0e36a..03020c2 100644
--- a/test/Parse/multiline_string.swift
+++ b/test/Parse/multiline_string.swift
@@ -160,3 +160,24 @@
 // CHECK: "hello"
 // CHECK: "world"
 // CHECK: "\nabc"
+
+_ = "hello\("""
+            "world'
+            """)abc"
+// CHECK: "hello"
+// CHECK: "\"world'"
+// CHECK: "abc"
+
+_ = """
+    welcome
+    \(
+      "to\("""
+           Swift
+           """)"
+    )
+    !
+    """
+// CHECK: "welcome\n"
+// CHECK: "to"
+// CHECK: "Swift"
+// CHECK: "\n!"
diff --git a/test/Parse/pointer_conversion.swift.gyb b/test/Parse/pointer_conversion.swift.gyb
index 30b6f8a..8b878b5 100644
--- a/test/Parse/pointer_conversion.swift.gyb
+++ b/test/Parse/pointer_conversion.swift.gyb
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %gyb -DOPT_KIND=None %s -o %t/pointer_conversion.swift
 // RUN: %line-directive %t/pointer_conversion.swift -- %target-swift-frontend -typecheck -verify %t/pointer_conversion.swift
diff --git a/test/Parse/pointer_conversion_objc.swift.gyb b/test/Parse/pointer_conversion_objc.swift.gyb
index a1ff76a..8f32ece 100644
--- a/test/Parse/pointer_conversion_objc.swift.gyb
+++ b/test/Parse/pointer_conversion_objc.swift.gyb
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %gyb -DOPT_KIND=None %s -o %t/pointer_conversion.swift
 // RUN: %line-directive %t/pointer_conversion.swift -- %target-swift-frontend -typecheck -verify %t/pointer_conversion.swift
diff --git a/test/PlaygroundTransform/array.swift b/test/PlaygroundTransform/array.swift
index e9cead1..6ecf6f7 100644
--- a/test/PlaygroundTransform/array.swift
+++ b/test/PlaygroundTransform/array.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/array_did_set.swift b/test/PlaygroundTransform/array_did_set.swift
index 0c5402b..d9a2a52 100644
--- a/test/PlaygroundTransform/array_did_set.swift
+++ b/test/PlaygroundTransform/array_did_set.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/array_in_struct.swift b/test/PlaygroundTransform/array_in_struct.swift
index 75fc96a..fa31d32 100644
--- a/test/PlaygroundTransform/array_in_struct.swift
+++ b/test/PlaygroundTransform/array_in_struct.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/bare_value.swift b/test/PlaygroundTransform/bare_value.swift
index eca3f3a..e11b75f 100644
--- a/test/PlaygroundTransform/bare_value.swift
+++ b/test/PlaygroundTransform/bare_value.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/control-flow.swift b/test/PlaygroundTransform/control-flow.swift
index 0cdd090..3096b9c 100644
--- a/test/PlaygroundTransform/control-flow.swift
+++ b/test/PlaygroundTransform/control-flow.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/declarations.swift b/test/PlaygroundTransform/declarations.swift
index 3bfeec0..a600a72 100644
--- a/test/PlaygroundTransform/declarations.swift
+++ b/test/PlaygroundTransform/declarations.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/declarations_error.swift b/test/PlaygroundTransform/declarations_error.swift
index aa73903..c31c119 100644
--- a/test/PlaygroundTransform/declarations_error.swift
+++ b/test/PlaygroundTransform/declarations_error.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: not %target-swift-frontend -typecheck -playground %t/main.swift 2>&1 | %FileCheck %s
 
diff --git a/test/PlaygroundTransform/disable_transform_only.swift b/test/PlaygroundTransform/disable_transform_only.swift
index a60576a..89f038b 100644
--- a/test/PlaygroundTransform/disable_transform_only.swift
+++ b/test/PlaygroundTransform/disable_transform_only.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -disable-playground-transform -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s -allow-empty
diff --git a/test/PlaygroundTransform/do-catch.swift b/test/PlaygroundTransform/do-catch.swift
index fe45e8b..0fee77e 100644
--- a/test/PlaygroundTransform/do-catch.swift
+++ b/test/PlaygroundTransform/do-catch.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/do.swift b/test/PlaygroundTransform/do.swift
index 346c10f..49e1a73 100644
--- a/test/PlaygroundTransform/do.swift
+++ b/test/PlaygroundTransform/do.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/empty-tuple.swift b/test/PlaygroundTransform/empty-tuple.swift
index 7539f82..0337232 100644
--- a/test/PlaygroundTransform/empty-tuple.swift
+++ b/test/PlaygroundTransform/empty-tuple.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/for_crash.swift b/test/PlaygroundTransform/for_crash.swift
index 6410567..f623a86 100644
--- a/test/PlaygroundTransform/for_crash.swift
+++ b/test/PlaygroundTransform/for_crash.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: not %target-swift-frontend -typecheck -playground %t/main.swift
 // RUN: not %target-swift-frontend -typecheck -playground -Xfrontend -pc-macro %t/main.swift
diff --git a/test/PlaygroundTransform/high_performance.swift b/test/PlaygroundTransform/high_performance.swift
index ed04aa9..bc87af2 100644
--- a/test/PlaygroundTransform/high_performance.swift
+++ b/test/PlaygroundTransform/high_performance.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -playground-high-performance -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/import_error.swift b/test/PlaygroundTransform/import_error.swift
index 603d45b..015e8a9 100644
--- a/test/PlaygroundTransform/import_error.swift
+++ b/test/PlaygroundTransform/import_error.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-swift-frontend -typecheck -playground %t/main.swift -verify
 
diff --git a/test/PlaygroundTransform/init.swift b/test/PlaygroundTransform/init.swift
index cce66fd..eda833b 100644
--- a/test/PlaygroundTransform/init.swift
+++ b/test/PlaygroundTransform/init.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/mutation.swift b/test/PlaygroundTransform/mutation.swift
index 08bb830..e07c691 100644
--- a/test/PlaygroundTransform/mutation.swift
+++ b/test/PlaygroundTransform/mutation.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/placeholder.swift b/test/PlaygroundTransform/placeholder.swift
index b7ba4fb..e1af33f 100644
--- a/test/PlaygroundTransform/placeholder.swift
+++ b/test/PlaygroundTransform/placeholder.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -disable-playground-transform -o %t/main %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/plus_equals.swift b/test/PlaygroundTransform/plus_equals.swift
index f731059..d0edc39 100644
--- a/test/PlaygroundTransform/plus_equals.swift
+++ b/test/PlaygroundTransform/plus_equals.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PlaygroundTransform/print.swift b/test/PlaygroundTransform/print.swift
index 09851ad..9d509d0 100644
--- a/test/PlaygroundTransform/print.swift
+++ b/test/PlaygroundTransform/print.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-build-swift -Xfrontend -playground -Xfrontend -debugger-support -o %t/main %S/Inputs/PlaygroundsRuntime.swift %t/main.swift
 // RUN: %target-run %t/main | %FileCheck %s
diff --git a/test/PrintAsObjC/Inputs/custom-modules/NestedClass.apinotes b/test/PrintAsObjC/Inputs/custom-modules/NestedClass.apinotes
deleted file mode 100644
index 1feb47e..0000000
--- a/test/PrintAsObjC/Inputs/custom-modules/NestedClass.apinotes
+++ /dev/null
@@ -1,6 +0,0 @@
-Name: NestedClass
-SwiftVersions:
-  - Version: 3.0
-    Classes:
-      - Name: InnerClass
-        SwiftName: InnerClass
diff --git a/test/PrintAsObjC/Inputs/custom-modules/NestedClass.h b/test/PrintAsObjC/Inputs/custom-modules/NestedClass.h
deleted file mode 100644
index ea0f327..0000000
--- a/test/PrintAsObjC/Inputs/custom-modules/NestedClass.h
+++ /dev/null
@@ -1,10 +0,0 @@
-// This file is meant to be included with modules turned off, compiled against
-// the fake clang-importer-sdk.
-#import <Foundation.h>
-
-@interface Outer : NSObject
-@end
-
-__attribute__((swift_name("Outer.Inner")))
-@interface InnerClass : NSObject
-@end
diff --git a/test/PrintAsObjC/Inputs/custom-modules/VersionedFMWK.apinotes b/test/PrintAsObjC/Inputs/custom-modules/VersionedFMWK.apinotes
new file mode 100644
index 0000000..52d7990
--- /dev/null
+++ b/test/PrintAsObjC/Inputs/custom-modules/VersionedFMWK.apinotes
@@ -0,0 +1,24 @@
+Name: VersionedFMWK
+SwiftVersions:
+  - Version: 3.0
+    Classes:
+      - Name: InnerClass
+        SwiftName: InnerClass
+      - Name: NullabilityBase
+        Methods:
+          - Selector: 'initFormerlyFailableValue:'
+            MethodKind: Instance
+            NullabilityOfRet: O
+          - Selector: 'processNowNullableArgument:'
+            MethodKind: Instance
+            Parameters:
+              - Position: 0
+                Nullability: N
+    Tags:
+      - Name: InnerStruct
+        SwiftName: InnerStruct
+    Typedefs:
+      - Name: InnerAlias
+        SwiftName: InnerAlias
+      - Name: InnerAnonStruct
+        SwiftName: InnerAnonStruct
diff --git a/test/PrintAsObjC/Inputs/custom-modules/VersionedFMWK.h b/test/PrintAsObjC/Inputs/custom-modules/VersionedFMWK.h
new file mode 100644
index 0000000..0dd7e6f
--- /dev/null
+++ b/test/PrintAsObjC/Inputs/custom-modules/VersionedFMWK.h
@@ -0,0 +1,26 @@
+// This file is meant to be included with modules turned off, compiled against
+// the fake clang-importer-sdk.
+#import <Foundation.h>
+
+@interface Outer : NSObject
+@end
+
+__attribute__((swift_name("Outer.Inner")))
+@interface InnerClass : NSObject
+@end
+
+struct __attribute__((swift_name("Outer.InnerV"))) InnerStruct {
+  int value;
+};
+
+typedef struct {
+  int value;
+} InnerAnonStruct __attribute__((swift_name("Outer.InnerAS")));
+
+typedef int InnerAlias __attribute__((swift_name("Outer.InnerA")));
+
+
+@interface NullabilityBase : NSObject
+- (nonnull instancetype)initFormerlyFailableValue:(NSInteger)value __attribute__((objc_designated_initializer));
+- (void)processNowNullableArgument:(nullable NSObject *)object;
+@end
diff --git a/test/PrintAsObjC/Inputs/custom-modules/module.map b/test/PrintAsObjC/Inputs/custom-modules/module.map
index 56fc19f..c1770cd 100644
--- a/test/PrintAsObjC/Inputs/custom-modules/module.map
+++ b/test/PrintAsObjC/Inputs/custom-modules/module.map
@@ -38,7 +38,7 @@
   export *
 }
 
-module NestedClass {
-  header "NestedClass.h"
+module VersionedFMWK {
+  header "VersionedFMWK.h"
   export *
 }
diff --git a/test/PrintAsObjC/accessibility.swift b/test/PrintAsObjC/accessibility.swift
index bce301a..bbe7d07 100644
--- a/test/PrintAsObjC/accessibility.swift
+++ b/test/PrintAsObjC/accessibility.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -parse-as-library %s -typecheck -emit-objc-header-path %t/accessibility.h -disable-objc-attr-requires-foundation-module
 // RUN: %FileCheck -check-prefix=CHECK -check-prefix=CHECK-PUBLIC %s < %t/accessibility.h
 // RUN: %check-in-clang %t/accessibility.h
diff --git a/test/PrintAsObjC/any_as_id.swift b/test/PrintAsObjC/any_as_id.swift
index c77295b..ae54a4e 100644
--- a/test/PrintAsObjC/any_as_id.swift
+++ b/test/PrintAsObjC/any_as_id.swift
@@ -2,7 +2,7 @@
 
 // REQUIRES: objc_interop
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN:  %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift
diff --git a/test/PrintAsObjC/arc-conventions.swift b/test/PrintAsObjC/arc-conventions.swift
index 2e2346d..2cd2bed 100644
--- a/test/PrintAsObjC/arc-conventions.swift
+++ b/test/PrintAsObjC/arc-conventions.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -c %s -parse-as-library -force-single-frontend-invocation -o %t/swift.o -emit-objc-header-path %t/swift.h
 
 // RUN: %target-clang -c -Weverything -Werror -Wno-unused-macros -Wno-incomplete-module -fobjc-arc -fmodules %S/Inputs/arc-conventions.m -o %t/main.o -I %t
diff --git a/test/PrintAsObjC/blocks.swift b/test/PrintAsObjC/blocks.swift
index 2886a39..2b91724 100644
--- a/test/PrintAsObjC/blocks.swift
+++ b/test/PrintAsObjC/blocks.swift
@@ -1,7 +1,6 @@
 // Please keep this file in alphabetical order!
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %s -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse-as-library %t/blocks.swiftmodule -typecheck -emit-objc-header-path %t/blocks.h -import-objc-header %S/../Inputs/empty.h -disable-objc-attr-requires-foundation-module
 // RUN: %FileCheck %s < %t/blocks.h
diff --git a/test/PrintAsObjC/cdecl.swift b/test/PrintAsObjC/cdecl.swift
index d0b5be5..7cd4c88 100644
--- a/test/PrintAsObjC/cdecl.swift
+++ b/test/PrintAsObjC/cdecl.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-source-import -emit-module -emit-module-doc -o %t %s -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse-as-library %t/cdecl.swiftmodule -typecheck -emit-objc-header-path %t/cdecl.h -import-objc-header %S/../Inputs/empty.h -disable-objc-attr-requires-foundation-module
 // RUN: %FileCheck %s < %t/cdecl.h
diff --git a/test/PrintAsObjC/circularity-errors.swift b/test/PrintAsObjC/circularity-errors.swift
index 82b437d..b83fe84 100644
--- a/test/PrintAsObjC/circularity-errors.swift
+++ b/test/PrintAsObjC/circularity-errors.swift
@@ -2,7 +2,7 @@
 
 // REQUIRES: objc_interop
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN:  %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift
diff --git a/test/PrintAsObjC/circularity.swift b/test/PrintAsObjC/circularity.swift
index a14735c..41ac022 100644
--- a/test/PrintAsObjC/circularity.swift
+++ b/test/PrintAsObjC/circularity.swift
@@ -2,7 +2,7 @@
 
 // REQUIRES: objc_interop
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN:  %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift
diff --git a/test/PrintAsObjC/classes.swift b/test/PrintAsObjC/classes.swift
index e949b3c..ea24087 100644
--- a/test/PrintAsObjC/classes.swift
+++ b/test/PrintAsObjC/classes.swift
@@ -2,8 +2,7 @@
 
 // REQUIRES: objc_interop
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN:  %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift
diff --git a/test/PrintAsObjC/comments.swift b/test/PrintAsObjC/comments.swift
index 5f94eb9..62ce7fa 100644
--- a/test/PrintAsObjC/comments.swift
+++ b/test/PrintAsObjC/comments.swift
@@ -1,7 +1,6 @@
 // Please keep this file in alphabetical order!
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-source-import -emit-module -emit-module-path %t/comments.swiftmodule -emit-module-doc -emit-module-doc-path %t/comments.swiftdoc -module-name comments %S/../Inputs/comment_to_something_conversion.swift -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse-as-library %t/comments.swiftmodule -typecheck -emit-objc-header-path %t/comments.h -import-objc-header %S/../Inputs/empty.h -disable-objc-attr-requires-foundation-module
 // RUN: awk '/A000/,0' %t/comments.h > %t/comments.h-cleaned
diff --git a/test/PrintAsObjC/depends-on-swift-framework.swift b/test/PrintAsObjC/depends-on-swift-framework.swift
index 148ca8c..e0bb83d 100644
--- a/test/PrintAsObjC/depends-on-swift-framework.swift
+++ b/test/PrintAsObjC/depends-on-swift-framework.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN:  %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift
diff --git a/test/PrintAsObjC/dispatch.swift b/test/PrintAsObjC/dispatch.swift
index 613fab9..3e1cb65 100644
--- a/test/PrintAsObjC/dispatch.swift
+++ b/test/PrintAsObjC/dispatch.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -typecheck %s -parse-as-library -emit-objc-header-path %t/swift.h
 // RUN: %FileCheck %s < %t/swift.h
 
diff --git a/test/PrintAsObjC/empty.swift b/test/PrintAsObjC/empty.swift
index e0c7631..719a8a7 100644
--- a/test/PrintAsObjC/empty.swift
+++ b/test/PrintAsObjC/empty.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %s -typecheck -emit-objc-header-path %t/empty.h
 // RUN: %FileCheck %s < %t/empty.h
 // RUN: %check-in-clang -std=c99 %t/empty.h
diff --git a/test/PrintAsObjC/enums.swift b/test/PrintAsObjC/enums.swift
index f11efe5..1c97717 100644
--- a/test/PrintAsObjC/enums.swift
+++ b/test/PrintAsObjC/enums.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-source-import -emit-module -emit-module-doc -o %t %s -import-objc-header %S/Inputs/enums.h -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse-as-library %t/enums.swiftmodule -typecheck -emit-objc-header-path %t/enums.h -import-objc-header %S/Inputs/enums.h -disable-objc-attr-requires-foundation-module
 // RUN: %FileCheck %s < %t/enums.h
diff --git a/test/PrintAsObjC/error-delegate.swift b/test/PrintAsObjC/error-delegate.swift
index df55ab2..32808b0 100644
--- a/test/PrintAsObjC/error-delegate.swift
+++ b/test/PrintAsObjC/error-delegate.swift
@@ -2,7 +2,7 @@
 
 // REQUIRES: objc_interop
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN:  %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift
diff --git a/test/PrintAsObjC/extensions.swift b/test/PrintAsObjC/extensions.swift
index 160a414..3a0cadd 100644
--- a/test/PrintAsObjC/extensions.swift
+++ b/test/PrintAsObjC/extensions.swift
@@ -1,7 +1,6 @@
 // Please keep this file in alphabetical order!
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %s -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse-as-library %t/extensions.swiftmodule -typecheck -emit-objc-header-path %t/extensions.h -import-objc-header %S/../Inputs/empty.h -disable-objc-attr-requires-foundation-module
 // RUN: %FileCheck %s < %t/extensions.h
diff --git a/test/PrintAsObjC/generic-ancestry.swift b/test/PrintAsObjC/generic-ancestry.swift
index f2b5ce2..a130b36 100644
--- a/test/PrintAsObjC/generic-ancestry.swift
+++ b/test/PrintAsObjC/generic-ancestry.swift
@@ -1,7 +1,6 @@
 // Please keep this file in alphabetical order!
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %s -module-name generic -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse-as-library %t/generic.swiftmodule -typecheck -emit-objc-header-path %t/generic.h -import-objc-header %S/../Inputs/empty.h -disable-objc-attr-requires-foundation-module
 // RUN: %FileCheck %s < %t/generic.h
diff --git a/test/PrintAsObjC/imported-block-typedefs.swift b/test/PrintAsObjC/imported-block-typedefs.swift
index 0749720..1d1195b 100644
--- a/test/PrintAsObjC/imported-block-typedefs.swift
+++ b/test/PrintAsObjC/imported-block-typedefs.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %s -import-objc-header %S/Inputs/imported-block-typedefs.h -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse-as-library %t/imported-block-typedefs.swiftmodule -typecheck -emit-objc-header-path %t/imported-block-typedefs-output.h -import-objc-header %S/../Inputs/empty.h -disable-objc-attr-requires-foundation-module
 // RUN: %FileCheck %s < %t/imported-block-typedefs-output.h
diff --git a/test/PrintAsObjC/imports.swift b/test/PrintAsObjC/imports.swift
index a0d2a14..26e9664 100644
--- a/test/PrintAsObjC/imports.swift
+++ b/test/PrintAsObjC/imports.swift
@@ -1,7 +1,6 @@
 // Please keep this file in alphabetical order!
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %S/Inputs/custom-modules/ -emit-module -o %t %s -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %S/Inputs/custom-modules/ -parse-as-library %t/imports.swiftmodule -typecheck -emit-objc-header-path %t/imports.h -import-objc-header %S/../Inputs/empty.h -disable-objc-attr-requires-foundation-module
 // RUN: %FileCheck %s < %t/imports.h
diff --git a/test/PrintAsObjC/local-types.swift b/test/PrintAsObjC/local-types.swift
index 1e06675..b3c2252 100644
--- a/test/PrintAsObjC/local-types.swift
+++ b/test/PrintAsObjC/local-types.swift
@@ -1,7 +1,6 @@
 // Please keep this file in alphabetical order!
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %s -module-name local -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse-as-library %t/local.swiftmodule -typecheck -emit-objc-header-path %t/local.h -import-objc-header %S/../Inputs/empty.h -disable-objc-attr-requires-foundation-module
 // RUN: %FileCheck %s < %t/local.h
diff --git a/test/PrintAsObjC/mixed-framework-fwd.swift b/test/PrintAsObjC/mixed-framework-fwd.swift
index fd885b5..56c49de 100644
--- a/test/PrintAsObjC/mixed-framework-fwd.swift
+++ b/test/PrintAsObjC/mixed-framework-fwd.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -F %S/Inputs/ -module-name Mixed -import-underlying-module %s -typecheck -emit-objc-header-path %t/mixed.h
 // RUN: %FileCheck -check-prefix=CHECK -check-prefix=NO-IMPORT %s < %t/mixed.h
 // RUN: %check-in-clang -F %S/Inputs/ %t/mixed.h
diff --git a/test/PrintAsObjC/mixed-framework.swift b/test/PrintAsObjC/mixed-framework.swift
index 15b5b61..e0ec6da 100644
--- a/test/PrintAsObjC/mixed-framework.swift
+++ b/test/PrintAsObjC/mixed-framework.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -F %S/Inputs/ -module-name Mixed -import-underlying-module -parse-as-library %s -typecheck -emit-objc-header-path %t/mixed.h
 // RUN: %FileCheck -check-prefix=CHECK -check-prefix=FRAMEWORK %s < %t/mixed.h
 // RUN: %check-in-clang -F %S/Inputs/ %t/mixed.h
diff --git a/test/PrintAsObjC/newtype.swift b/test/PrintAsObjC/newtype.swift
index 1385575..4a0d213 100644
--- a/test/PrintAsObjC/newtype.swift
+++ b/test/PrintAsObjC/newtype.swift
@@ -2,7 +2,7 @@
 
 // REQUIRES: objc_interop
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN:  %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift
diff --git a/test/PrintAsObjC/override.swift b/test/PrintAsObjC/override.swift
index 5f010ac..66cda1f 100644
--- a/test/PrintAsObjC/override.swift
+++ b/test/PrintAsObjC/override.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN:  %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t  %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift
diff --git a/test/PrintAsObjC/pragma-clang.swift b/test/PrintAsObjC/pragma-clang.swift
index f20113a..a58e0d6 100644
--- a/test/PrintAsObjC/pragma-clang.swift
+++ b/test/PrintAsObjC/pragma-clang.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN:  %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift
diff --git a/test/PrintAsObjC/protocols.swift b/test/PrintAsObjC/protocols.swift
index 2c01e93..5b73cec 100644
--- a/test/PrintAsObjC/protocols.swift
+++ b/test/PrintAsObjC/protocols.swift
@@ -1,7 +1,6 @@
 // Please keep this file in alphabetical order!
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN:  %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t  %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift
diff --git a/test/PrintAsObjC/simd.swift b/test/PrintAsObjC/simd.swift
index 1f4bc45..55d0136 100644
--- a/test/PrintAsObjC/simd.swift
+++ b/test/PrintAsObjC/simd.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN:  %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t  %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift
diff --git a/test/PrintAsObjC/swift_name.m b/test/PrintAsObjC/swift_name.m
index ffb0ab5..71430c1 100644
--- a/test/PrintAsObjC/swift_name.m
+++ b/test/PrintAsObjC/swift_name.m
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %S/../Inputs/empty.swift -typecheck -emit-objc-header-path %t/empty.h
 // RUN: %clang -E -fobjc-arc -fmodules -isysroot %clang-importer-sdk-path -I %t %s | %FileCheck %s
 
diff --git a/test/PrintAsObjC/swift_name.swift b/test/PrintAsObjC/swift_name.swift
index 7cb766a..f04f77f 100644
--- a/test/PrintAsObjC/swift_name.swift
+++ b/test/PrintAsObjC/swift_name.swift
@@ -2,7 +2,7 @@
 
 // REQUIRES: objc_interop
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN:  %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -emit-module -o %t %S/../Inputs/clang-importer-sdk/swift-modules/ObjectiveC.swift
diff --git a/test/PrintAsObjC/unmodified.swift b/test/PrintAsObjC/unmodified.swift
index 6c7e7cf..1255360 100644
--- a/test/PrintAsObjC/unmodified.swift
+++ b/test/PrintAsObjC/unmodified.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %s -typecheck -emit-objc-header-path %t/out.h
 // RUN: touch -t 201401240005 %t/out.h
 // RUN: %S/../Inputs/getmtime.py %t/out.h > %t/orig-mtime.txt
diff --git a/test/PrintAsObjC/versioned.swift b/test/PrintAsObjC/versioned.swift
index 46e2d8a..7d95e89 100644
--- a/test/PrintAsObjC/versioned.swift
+++ b/test/PrintAsObjC/versioned.swift
@@ -14,14 +14,27 @@
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/../Inputs/clang-importer-sdk -I %t) -parse-as-library %t/versioned.swiftmodule -typecheck -I %S/Inputs/custom-modules -emit-objc-header-path %t/versioned.h -import-objc-header %S/../Inputs/empty.h -disable-objc-attr-requires-foundation-module -swift-version 3
 // RUN: %FileCheck %s < %t/versioned.h
 // RUN: %check-in-clang -I %S/Inputs/custom-modules/ %t/versioned.h
-// RUN: %check-in-clang -I %S/Inputs/custom-modules/ -fno-modules -Qunused-arguments %t/versioned.h -include Foundation.h -include NestedClass.h
+// RUN: %check-in-clang -I %S/Inputs/custom-modules/ -fno-modules -Qunused-arguments %t/versioned.h -include Foundation.h -include VersionedFMWK.h
 
-import NestedClass
+import VersionedFMWK
+
+// CHECK-LABEL: @interface NullabilitySub
+@objc class NullabilitySub: NullabilityBase {
+  // CHECK-NEXT: - (void)processNowNullableArgument:(NSObject * _Nonnull)object;
+  override func processNowNullableArgument(_ object: NSObject) {}
+  // CHECK-NEXT: - (nullable instancetype)initFormerlyFailableValue:(NSInteger)value OBJC_DESIGNATED_INITIALIZER;
+} // CHECK-NEXT: @end
 
 // CHECK-LABEL: @interface UsesNestedClass
 @objc class UsesNestedClass : NSObject {
   // CHECK-NEXT: - (InnerClass * _Nullable)foo SWIFT_WARN_UNUSED_RESULT;
   @objc func foo() -> InnerClass? { return nil }
+  // CHECK-NEXT: - (void)fooStruct:(struct InnerStruct)_;
+  @objc func fooStruct(_: InnerStruct) {}
+  // CHECK-NEXT: - (void)fooAnonStruct:(InnerAnonStruct)_;
+  @objc func fooAnonStruct(_: InnerAnonStruct) {}
+  // CHECK-NEXT: - (void)fooAlias:(InnerAlias)_;
+  @objc func fooAlias(_: InnerAlias) {}
 
   // CHECK-NEXT: - (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
 }
diff --git a/test/Prototypes/Algorithms.swift.gyb b/test/Prototypes/Algorithms.swift.gyb
index d83f1ea..8849f81 100644
--- a/test/Prototypes/Algorithms.swift.gyb
+++ b/test/Prototypes/Algorithms.swift.gyb
@@ -9,7 +9,8 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 //
 //===----------------------------------------------------------------------===//
-// RUN: rm -rf %t && mkdir -p %t && %gyb -DWORD_BITS=%target-ptrsize %s -o %t/out.swift
+// RUN: %empty-directory(%t)
+// RUN: %gyb -DWORD_BITS=%target-ptrsize %s -o %t/out.swift
 // RUN: %line-directive %t/out.swift -- %target-build-swift -parse-stdlib %t/out.swift -o %t/a.out -Onone
 // RUN: %line-directive %t/out.swift -- %target-run %t/a.out
 
diff --git a/test/Prototypes/property_behaviors/delayed.swift b/test/Prototypes/property_behaviors/delayed.swift
index 2fe04c2..89d61c4 100644
--- a/test/Prototypes/property_behaviors/delayed.swift
+++ b/test/Prototypes/property_behaviors/delayed.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -Xfrontend -enable-experimental-property-behaviors %s -o %t/a.out
 // RUN: %target-run %t/a.out
 // REQUIRES: executable_test
diff --git a/test/Reflection/box_descriptors.sil b/test/Reflection/box_descriptors.sil
index aec9b90..d9c6ae9 100644
--- a/test/Reflection/box_descriptors.sil
+++ b/test/Reflection/box_descriptors.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -emit-module -emit-library -module-name capture_descriptors -o %t/capture_descriptors.%target-dylib-extension
 // RUN: %target-swift-reflection-dump -binary-filename %t/capture_descriptors.%target-dylib-extension | %FileCheck %s
 
diff --git a/test/Reflection/capture_descriptors.sil b/test/Reflection/capture_descriptors.sil
index 762d481..0ac1d88 100644
--- a/test/Reflection/capture_descriptors.sil
+++ b/test/Reflection/capture_descriptors.sil
@@ -1,5 +1,5 @@
 // REQUIRES: no_asan
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -emit-module -emit-library -module-name capture_descriptors -o %t/capture_descriptors.%target-dylib-extension
 // RUN: %target-swift-reflection-dump -binary-filename %t/capture_descriptors.%target-dylib-extension | %FileCheck %s
 
diff --git a/test/Reflection/typeref_decoding.swift b/test/Reflection/typeref_decoding.swift
index 601a580..808c564 100644
--- a/test/Reflection/typeref_decoding.swift
+++ b/test/Reflection/typeref_decoding.swift
@@ -1,5 +1,5 @@
 // REQUIRES: no_asan
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %S/Inputs/ConcreteTypes.swift %S/Inputs/GenericTypes.swift %S/Inputs/Protocols.swift %S/Inputs/Extensions.swift %S/Inputs/Closures.swift -parse-as-library -emit-module -emit-library -module-name TypesToReflect -o %t/libTypesToReflect.%target-dylib-extension
 // RUN: %target-swift-reflection-dump -binary-filename %t/libTypesToReflect.%target-dylib-extension | %FileCheck %s
 
diff --git a/test/Reflection/typeref_decoding_imported.swift b/test/Reflection/typeref_decoding_imported.swift
index 3187ab2..ab25bd3 100644
--- a/test/Reflection/typeref_decoding_imported.swift
+++ b/test/Reflection/typeref_decoding_imported.swift
@@ -1,11 +1,11 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-build-swift %S/Inputs/ImportedTypes.swift %S/Inputs/ImportedTypesOther.swift -parse-as-library -emit-module -emit-library -module-name TypesToReflect -o %t/libTypesToReflect.%target-dylib-extension -I %S/Inputs
 // RUN: %target-swift-reflection-dump -binary-filename %t/libTypesToReflect.%target-dylib-extension | %FileCheck %s --check-prefix=CHECK-%target-ptrsize --check-prefix=CHECK-%target-cpu
 
 // ... now, test single-frontend mode with multi-threaded LLVM emission:
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-build-swift %S/Inputs/ImportedTypes.swift %S/Inputs/ImportedTypesOther.swift -parse-as-library -emit-module -emit-library -module-name TypesToReflect -o %t/libTypesToReflect.%target-dylib-extension -I %S/Inputs -whole-module-optimization -num-threads 2
 // RUN: %target-swift-reflection-dump -binary-filename %t/libTypesToReflect.%target-dylib-extension | %FileCheck %s --check-prefix=CHECK-%target-ptrsize --check-prefix=CHECK-%target-cpu
diff --git a/test/Reflection/typeref_decoding_objc.swift b/test/Reflection/typeref_decoding_objc.swift
index 58bf6ce..ad80b85 100644
--- a/test/Reflection/typeref_decoding_objc.swift
+++ b/test/Reflection/typeref_decoding_objc.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %S/Inputs/ObjectiveCTypes.swift -parse-as-library -emit-module -emit-library -module-name TypesToReflect -o %t/libTypesToReflect.%target-dylib-extension
 // RUN: %target-swift-reflection-dump -binary-filename %t/libTypesToReflect.%target-dylib-extension | %FileCheck %s --check-prefix=CHECK-%target-ptrsize --check-prefix=CHECK
 // REQUIRES: objc_interop
diff --git a/test/Reflection/typeref_lowering.swift b/test/Reflection/typeref_lowering.swift
index 779134c..349e739 100644
--- a/test/Reflection/typeref_lowering.swift
+++ b/test/Reflection/typeref_lowering.swift
@@ -1,5 +1,5 @@
 // REQUIRES: no_asan
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %S/Inputs/TypeLowering.swift -parse-as-library -emit-module -emit-library -module-name TypeLowering -o %t/libTypesToReflect.%target-dylib-extension
 // RUN: %target-swift-reflection-dump -binary-filename %t/libTypesToReflect.%target-dylib-extension -binary-filename %platform-module-dir/libswiftCore.%target-dylib-extension -dump-type-lowering < %s | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 
diff --git a/test/Reflection/typeref_lowering_imported.swift b/test/Reflection/typeref_lowering_imported.swift
index fc08f4a7..0333274 100644
--- a/test/Reflection/typeref_lowering_imported.swift
+++ b/test/Reflection/typeref_lowering_imported.swift
@@ -1,11 +1,11 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-build-swift %S/Inputs/ImportedTypes.swift %S/Inputs/ImportedTypesOther.swift -parse-as-library -emit-module -emit-library -module-name TypeLowering -I %S/Inputs -o %t/libTypesToReflect
 // RUN: %target-swift-reflection-dump -binary-filename %t/libTypesToReflect -binary-filename %platform-module-dir/libswiftCore.dylib -dump-type-lowering < %s | %FileCheck %s
 
 // ... now, test single-frontend mode with multi-threaded LLVM emission:
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-build-swift %S/Inputs/ImportedTypes.swift %S/Inputs/ImportedTypesOther.swift -parse-as-library -emit-module -emit-library -module-name TypeLowering -I %S/Inputs -o %t/libTypesToReflect -num-threads 2 -whole-module-optimization
 // RUN: %target-swift-reflection-dump -binary-filename %t/libTypesToReflect -binary-filename %platform-module-dir/libswiftCore.dylib -dump-type-lowering < %s | %FileCheck %s
diff --git a/test/Reflection/typeref_lowering_missing.swift b/test/Reflection/typeref_lowering_missing.swift
index 30fc5d0..b52f3b4 100644
--- a/test/Reflection/typeref_lowering_missing.swift
+++ b/test/Reflection/typeref_lowering_missing.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %S/Inputs/Missing.swift -parse-as-library -emit-module -emit-library -module-name TypeLowering -o %t/libTypesToReflect
 // RUN: %target-swift-reflection-dump -binary-filename %t/libTypesToReflect -binary-filename %platform-module-dir/libswiftCore.dylib -dump-type-lowering < %s | %FileCheck %s
 
diff --git a/test/Reflection/typeref_lowering_objc.swift b/test/Reflection/typeref_lowering_objc.swift
index 1c57c9d..8f81fee 100644
--- a/test/Reflection/typeref_lowering_objc.swift
+++ b/test/Reflection/typeref_lowering_objc.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %S/Inputs/TypeLoweringObjectiveC.swift -parse-as-library -emit-module -emit-library -module-name TypeLowering -o %t/libTypesToReflect
 // RUN: %target-swift-reflection-dump -binary-filename %t/libTypesToReflect -binary-filename %platform-module-dir/libswiftCore.dylib -dump-type-lowering < %s | %FileCheck %s
 
diff --git a/test/Runtime/backtrace.swift b/test/Runtime/backtrace.swift
index 8334f12..46ffb22 100644
--- a/test/Runtime/backtrace.swift
+++ b/test/Runtime/backtrace.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out
 // RUN: not --crash %t/a.out 2>&1 | %utils/backtrace-check
 
diff --git a/test/SIL/Serialization/clang_conformances.swift b/test/SIL/Serialization/clang_conformances.swift
index c06d67c..7f9bd75 100644
--- a/test/SIL/Serialization/clang_conformances.swift
+++ b/test/SIL/Serialization/clang_conformances.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/clang_conformances.sil -module-name clang_conformances -import-objc-header %S/Inputs/clang_conformances_helper.h -assume-parsing-unqualified-ownership-sil
 // RUN: %target-swift-frontend -emit-sil -o %t -I %t -primary-file %s -module-name main -O
 
diff --git a/test/SIL/Serialization/clang_sib.swift b/test/SIL/Serialization/clang_sib.swift
index 699a3be..3e03502 100644
--- a/test/SIL/Serialization/clang_sib.swift
+++ b/test/SIL/Serialization/clang_sib.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-sib -o %t -primary-file %s -module-name main
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-ir -o /dev/null -primary-file %t/clang_sib.sib -module-name main
 
diff --git a/test/SIL/Serialization/deserialize_generic.sil b/test/SIL/Serialization/deserialize_generic.sil
index 7806999..9aacd80 100644
--- a/test/SIL/Serialization/deserialize_generic.sil
+++ b/test/SIL/Serialization/deserialize_generic.sil
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -sil-serialize-all -o %t %S/Inputs/def_generic.swift
 // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -linker -I %t %s | %FileCheck %s
 
diff --git a/test/SIL/Serialization/deserialize_generic_marker.sil b/test/SIL/Serialization/deserialize_generic_marker.sil
index 07ad5dd..0ae91fa 100644
--- a/test/SIL/Serialization/deserialize_generic_marker.sil
+++ b/test/SIL/Serialization/deserialize_generic_marker.sil
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -sil-serialize-all -o %t %S/Inputs/def_generic_marker.swift
 // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -linker -I %t %s | %FileCheck %s
 
diff --git a/test/SIL/Serialization/function_param_convention.sil b/test/SIL/Serialization/function_param_convention.sil
index 5a64f78..90da2d9 100644
--- a/test/SIL/Serialization/function_param_convention.sil
+++ b/test/SIL/Serialization/function_param_convention.sil
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -parse-sil -sil-inline-threshold 0 %S/Inputs/function_param_convention_input.sil -o %t/FunctionInput.swiftmodule -emit-module -parse-as-library -parse-stdlib -module-name FunctionInput -sil-serialize-all -O
 // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -I %t -linker %s -o - | %FileCheck %s
 
diff --git a/test/SIL/Serialization/generic_shared_function.swift b/test/SIL/Serialization/generic_shared_function.swift
index eb5de5b..850aa40 100644
--- a/test/SIL/Serialization/generic_shared_function.swift
+++ b/test/SIL/Serialization/generic_shared_function.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/generic_shared_function_helper.sil -module-name SILSource
 // RUN: %target-swift-frontend -emit-module -o %t -I %t -primary-file %s -module-name main -sil-link-all
 
diff --git a/test/SIL/Serialization/init_existential_inst_deserializes_witness_tables.swift b/test/SIL/Serialization/init_existential_inst_deserializes_witness_tables.swift
index 08835b1..60dd798 100644
--- a/test/SIL/Serialization/init_existential_inst_deserializes_witness_tables.swift
+++ b/test/SIL/Serialization/init_existential_inst_deserializes_witness_tables.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -sil-inline-threshold 0 %S/Inputs/init_existential_inst_deserializes_witness_tables_input.swift -o %t/Swift.swiftmodule -emit-module -parse-as-library -parse-stdlib -module-link-name swiftCore -module-name Swift -sil-serialize-all -O
 // RUN: %target-swift-frontend -I %t -O %s -emit-sil -o - | %FileCheck %s
 
diff --git a/test/SIL/Serialization/perf_inline_without_inline_all.swift b/test/SIL/Serialization/perf_inline_without_inline_all.swift
index 7c3b963..d11e748 100644
--- a/test/SIL/Serialization/perf_inline_without_inline_all.swift
+++ b/test/SIL/Serialization/perf_inline_without_inline_all.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t; mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module %S/Inputs/nontransparent.swift -O -sil-serialize-all -parse-stdlib -parse-as-library -emit-module -o %t/Swift.swiftmodule -module-name=Swift -module-link-name swiftCore
 // RUN: %target-swift-frontend %s -O -I %t -emit-sil -o - | %FileCheck %s
 
diff --git a/test/SIL/Serialization/semanticsattr.sil b/test/SIL/Serialization/semanticsattr.sil
index ea02efe..a4edaf2 100644
--- a/test/SIL/Serialization/semanticsattr.sil
+++ b/test/SIL/Serialization/semanticsattr.sil
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -parse-sil -emit-sib -parse-as-library -parse-stdlib -module-name SemanticsAttr -o %t/SemanticsAttr.sib %s
 // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil %t/SemanticsAttr.sib -o - -emit-sorted-sil | %FileCheck %s
 
diff --git a/test/SIL/Serialization/shared_function_serialization.sil b/test/SIL/Serialization/shared_function_serialization.sil
index cd9b5fa..5de0b23 100644
--- a/test/SIL/Serialization/shared_function_serialization.sil
+++ b/test/SIL/Serialization/shared_function_serialization.sil
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend %S/Inputs/shared_function_serialization_input.swift -o %t/Swift.swiftmodule -emit-module -parse-as-library -parse-stdlib -module-link-name swiftCore -module-name Swift -sil-serialize-all -O
 // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all -I %t -linker -inline %s -o - | %FileCheck %s
 
diff --git a/test/SIL/Serialization/specializer_can_deserialize.swift b/test/SIL/Serialization/specializer_can_deserialize.swift
index 467ed71..708bd61 100644
--- a/test/SIL/Serialization/specializer_can_deserialize.swift
+++ b/test/SIL/Serialization/specializer_can_deserialize.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module %S/Inputs/specializer_input.swift -O -sil-serialize-all -parse-stdlib -parse-as-library -emit-module -o %t/Swift.swiftmodule -module-name=Swift -module-link-name swiftCore 
 // RUN: %target-swift-frontend %s -O -I %t -emit-sil -o - | %FileCheck %s
 
diff --git a/test/SIL/Serialization/vtable_deserialization.swift b/test/SIL/Serialization/vtable_deserialization.swift
index 992a7e2..acae21f 100644
--- a/test/SIL/Serialization/vtable_deserialization.swift
+++ b/test/SIL/Serialization/vtable_deserialization.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend %S/Inputs/vtable_deserialization_input.swift -o %t/Swift.swiftmodule -emit-module -parse-as-library -parse-stdlib -module-link-name swiftCore -module-name Swift -sil-serialize-all
 // RUN: %target-swift-frontend %s -emit-sil -O -I %t -o - | %FileCheck %s
 
diff --git a/test/SILGen/Inputs/usr/include/newtype.h b/test/SILGen/Inputs/usr/include/newtype.h
index dd238cd..50d9bc0 100644
--- a/test/SILGen/Inputs/usr/include/newtype.h
+++ b/test/SILGen/Inputs/usr/include/newtype.h
@@ -7,3 +7,5 @@
 extern const SNTErrorDomain SNTFourErrorDomain;
 
 typedef NSInteger MyInt __attribute((swift_newtype(struct)));
+
+typedef NSString *MyString __attribute__((swift_newtype(struct)));
diff --git a/test/SILGen/UIApplicationMain.swift b/test/SILGen/UIApplicationMain.swift
index c6e9e97..f28778d 100644
--- a/test/SILGen/UIApplicationMain.swift
+++ b/test/SILGen/UIApplicationMain.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-silgen-test-overlays
 
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-silgen -parse-as-library %s | %FileCheck %s
diff --git a/test/SILGen/accessibility_vtables.swift b/test/SILGen/accessibility_vtables.swift
index 3d03fee..85aa598 100644
--- a/test/SILGen/accessibility_vtables.swift
+++ b/test/SILGen/accessibility_vtables.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -Xllvm -sil-full-demangle -emit-module -o %t %S/Inputs/accessibility_vtables_helper.swift
 // RUN: %target-swift-frontend -Xllvm -sil-full-demangle -emit-silgen -primary-file %s %S/Inputs/accessibility_vtables_other.swift -I %t -module-name accessibility_vtables | %FileCheck %s
 
diff --git a/test/SILGen/addressonly_multipattern_diagnostics.swift b/test/SILGen/addressonly_multipattern_diagnostics.swift
new file mode 100644
index 0000000..3a68e0d
--- /dev/null
+++ b/test/SILGen/addressonly_multipattern_diagnostics.swift
@@ -0,0 +1,46 @@
+// RUN: %target-swift-frontend %s -o /dev/null -emit-silgen -verify
+
+protocol GestureData {}
+struct PanData : GestureData {}
+struct PinchData : GestureData {}
+
+enum Gesture {
+case pan(PanData)
+case pinch(PinchData)
+}
+
+func testProtocolType(_ a : Gesture) {
+  switch a {
+  case .pan(let data as GestureData), // expected-error {{matching a protocol value in multiple patterns is not yet supported; use separate cases instead}}
+       .pinch(let data as GestureData):
+    print(data)
+  }
+
+  // This switch makes sure that we preserve the CFG so that dead code warnings do not show up. It also ensures that in at least two cases, we get one error per switch.
+  switch a {
+  case .pan(let data as GestureData), // expected-error {{matching a protocol value in multiple patterns is not yet supported; use separate cases instead}}
+       .pinch(let data as GestureData):
+    print(data)
+  }
+}
+
+func testGenericType<T, T2>(_ t : T, _ t2 : T2, _ a : Any, _ b : Any) -> T? {
+  switch (a, b) {
+  case (let x as T, _), // expected-error {{matching a generic value in multiple patterns is not yet supported; use separate cases instead}}
+       (_, let x as T):
+    return x
+    // This warning check is to ensure that we allow for warnings to be emitting in case blocks.
+    print("found it!") // expected-warning {{code after 'return' will never be executed}}
+  case (let x as T, let y as T2):
+    print(x)
+    print(y)
+    break
+  default:
+    return nil
+    // This warning check is to ensure that we allow for warnings to be emitting in case blocks.
+    print("we failed = (")  // expected-warning {{code after 'return' will never be executed}}
+  }
+
+  return nil
+  print("we failed = (")  // expected-warning {{code after 'return' will never be executed}}
+}
diff --git a/test/SILGen/borrow.swift b/test/SILGen/borrow.swift
index c7fefae..7b18254 100644
--- a/test/SILGen/borrow.swift
+++ b/test/SILGen/borrow.swift
@@ -21,7 +21,8 @@
 // CHECK:   [[CLASS:%.*]] = load [copy] [[ACCESS]]
 // CHECK:   [[BORROWED_CLASS:%.*]] = begin_borrow [[CLASS]]
 // CHECK:   [[OFFSET:%.*]] = ref_element_addr [[BORROWED_CLASS]]
-// CHECK:   [[LOADED_VALUE:%.*]] = load [copy] [[OFFSET]]
+// CHECK:   [[ACCESS:%.*]] = begin_access [read] [dynamic] [[OFFSET]] : $*D
+// CHECK:   [[LOADED_VALUE:%.*]] = load [copy] [[ACCESS]]
 // CHECK:   end_borrow [[BORROWED_CLASS]] from [[CLASS]]
 // CHECK:   apply [[FUNC]]([[LOADED_VALUE]])
 // CHECK:   destroy_value [[CLASS]]
diff --git a/test/SILGen/capture_list.swift b/test/SILGen/capture_list.swift
new file mode 100644
index 0000000..90fb36a
--- /dev/null
+++ b/test/SILGen/capture_list.swift
@@ -0,0 +1,49 @@
+// RUN: %target-swift-frontend -emit-silgen %s
+
+// Capture list with weak capture vs noescape closure
+func transform<T>(fn: () -> T) -> T {
+  return fn()
+}
+
+// Make sure weak and unowned are captured by box, even from a noescape closure.
+
+class Bar {
+  var x: Int = 27
+
+  // CHECK-LABEL: sil hidden @_T012capture_list3BarC4testyyF : $@convention(method) (@guaranteed Bar) -> ()
+  // CHECK: [[FN:%.*]] = function_ref @_T012capture_list9transformxxyc2fn_tlF : $@convention(thin) <τ_0_0> (@owned @callee_owned () -> @out τ_0_0) -> @out τ_0_0
+  // CHECK: [[RESULT:%.*]] = alloc_stack $Int
+  // CHECK: [[BOX:%.*]] = alloc_box ${ var @sil_weak Optional<Bar> }
+  // CHECK: [[PAYLOAD:%.*]] = project_box [[BOX]]
+  // CHECK: [[COPY:%.*]] = copy_value %0
+  // CHECK: [[OPTIONAL_COPY:%.*]] = enum $Optional<Bar>, #Optional.some!enumelt.1
+  // CHECK: store_weak [[OPTIONAL_COPY]] to [initialization] [[PAYLOAD]]
+  // CHECK: destroy_value [[OPTIONAL_COPY]]
+  // CHECK: [[CLOSURE_FN:%.*]] = function_ref @_T012capture_list3BarC4testyyFSiycfU_ : $@convention(thin) (@owned { var @sil_weak Optional<Bar> }) -> Int
+  // CHECK: [[BOX_COPY:%.*]] = copy_value [[BOX]]
+  // CHECK: [[CLOSURE:%.*]] = partial_apply [[CLOSURE_FN]]([[BOX_COPY]])
+  // CHECK: [[THUNK_FN:%.*]] = function_ref @_T0SiIxd_SiIxr_TR
+  // CHECK: [[THUNK:%.*]] = partial_apply [[THUNK_FN]]([[CLOSURE]]])
+  // CHECK: destroy_value [[BOX]]
+  // CHECK: apply [[FN]]([[THUNK]])
+  // CHECK: return
+  func test() {
+    transform { [weak self] in
+      return self!.x
+    }
+  }
+}
+
+
+// Capture list vs autoclosure.
+
+func block(_ f: () -> Void) -> Int { return 42 }
+func oneOf(_ a: Int?, _ b: @autoclosure () -> Int) -> Int { return 0 }
+class Foo {
+    private var value: Int?
+    func refresh() {
+        _ = oneOf(self.value, block({
+            [unowned self] in _ = self
+        }))
+    }
+}
diff --git a/test/SILGen/capture_list_in_autoclosure.swift b/test/SILGen/capture_list_in_autoclosure.swift
deleted file mode 100644
index 878baa2..0000000
--- a/test/SILGen/capture_list_in_autoclosure.swift
+++ /dev/null
@@ -1,12 +0,0 @@
-// RUN: %target-swift-frontend -emit-silgen -verify %s
-
-func block(_ f: () -> Void) -> Int { return 42 }
-func oneOf(_ a: Int?, _ b: @autoclosure () -> Int) -> Int { return 0 }
-class Foo {
-    private var value: Int?
-    func refresh() {
-        _ = oneOf(self.value, block({
-            [unowned self] in _ = self
-        }))
-    }
-}
diff --git a/test/SILGen/cf_members.swift b/test/SILGen/cf_members.swift
index 8f4a9e6..7b164bc 100644
--- a/test/SILGen/cf_members.swift
+++ b/test/SILGen/cf_members.swift
@@ -18,9 +18,11 @@
 public func foo(_ x: Double) {
 // CHECK: bb0([[X:%.*]] : $Double):
   // CHECK: [[GLOBALVAR:%.*]] = global_addr @IAMStruct1GlobalVar
-  // CHECK: [[ZZ:%.*]] = load [trivial] [[GLOBALVAR]]
+  // CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[GLOBALVAR]] : $*Double
+  // CHECK: [[ZZ:%.*]] = load [trivial] [[READ]]
   let zz = Struct1.globalVar
-  // CHECK: assign [[ZZ]] to [[GLOBALVAR]]
+  // CHECK: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[GLOBALVAR]] : $*Double
+  // CHECK: assign [[ZZ]] to [[WRITE]]
   Struct1.globalVar = zz
 
   // CHECK: [[Z:%.*]] = project_box
diff --git a/test/SILGen/class_resilience.swift b/test/SILGen/class_resilience.swift
index 77b3592..04ee4b2 100644
--- a/test/SILGen/class_resilience.swift
+++ b/test/SILGen/class_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_struct.swiftmodule -module-name=resilient_struct %S/../Inputs/resilient_struct.swift
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_class.swiftmodule -module-name=resilient_class -I %t %S/../Inputs/resilient_class.swift
 // RUN: %target-swift-frontend -I %t -emit-silgen -enable-resilience %s | %FileCheck %s
diff --git a/test/SILGen/closures.swift b/test/SILGen/closures.swift
index c99a231..984bce5 100644
--- a/test/SILGen/closures.swift
+++ b/test/SILGen/closures.swift
@@ -334,7 +334,8 @@
   // CHECK:   [[COPIED_SELF:%.*]] = load [copy] [[PB_SELF_BOX]]
   // CHECK:   [[FOO_VALUE:%.*]] = partial_apply {{%.*}}([[COPIED_SELF]]) : $@convention(thin) (@owned SelfCapturedInInit) -> @owned SelfCapturedInInit
   // CHECK:   [[FOO_LOCATION:%.*]] = ref_element_addr [[BORROWED_SELF]]
-  // CHECK:   assign [[FOO_VALUE]] to [[FOO_LOCATION]]
+  // CHECK:   [[ACCESS:%.*]] = begin_access [modify] [dynamic] [[FOO_LOCATION]] : $*@callee_owned () -> @owned SelfCapturedInInit
+  // CHECK:   assign [[FOO_VALUE]] to [[ACCESS]]
   override init() {
     super.init()
     foo = { self }
@@ -384,7 +385,8 @@
 // CHECK:   [[LOADED_CLASS:%.*]] = load [copy] [[TMP_CLASS_ADDR]] : $*ClassWithIntProperty
 // CHECK:   [[BORROWED_LOADED_CLASS:%.*]] = begin_borrow [[LOADED_CLASS]]
 // CHECK:   [[INT_IN_CLASS_ADDR:%.*]] = ref_element_addr [[BORROWED_LOADED_CLASS]] : $ClassWithIntProperty, #ClassWithIntProperty.x
-// CHECK:   [[INT_IN_CLASS:%.*]] = load [trivial] [[INT_IN_CLASS_ADDR]] : $*Int
+// CHECK:   [[ACCESS:%.*]] = begin_access [read] [dynamic] [[INT_IN_CLASS_ADDR]] : $*Int
+// CHECK:   [[INT_IN_CLASS:%.*]] = load [trivial] [[ACCESS]] : $*Int
 // CHECK:   end_borrow [[BORROWED_LOADED_CLASS]] from [[LOADED_CLASS]]
 // CHECK:   destroy_value [[LOADED_CLASS]]
 // CHECK:   destroy_addr [[TMP_CLASS_ADDR]] : $*ClassWithIntProperty
diff --git a/test/SILGen/collection_cast_crash.swift b/test/SILGen/collection_cast_crash.swift
index 1eb55ed..08ddd49 100644
--- a/test/SILGen/collection_cast_crash.swift
+++ b/test/SILGen/collection_cast_crash.swift
@@ -10,28 +10,28 @@
 }
 func ==(lhs: KeyClass, rhs: KeyClass) -> Bool { return true }
 
-// CHECK-LABEL: sil shared @{{.*}}arrayUpCast{{.*}} <Ct where Ct : MyClass>
+// CHECK-LABEL: sil{{.*}}@{{.*}}arrayUpCast{{.*}} <Ct where Ct : MyClass>
 func arrayUpCast<Ct: MyClass>(_ arr: [Ct]) -> [MyClass] {
-  // CHECK: apply %{{[0-9]*}}<Ct, MyClass>(%{{[0-9]*}})
+  // CHECK: apply %{{[0-9]*}}<Ct{{.*}}>(%{{[0-9]*}})
   return arr
   // CHECK: return	  
 }
 
-// CHECK-LABEL: sil shared @{{.*}}arrayDownCast{{.*}} <Ct where Ct : MyClass>
+// CHECK-LABEL: sil{{.*}}@{{.*}}arrayDownCast{{.*}} <Ct where Ct : MyClass>
 func arrayDownCast<Ct: MyClass>(_ arr: [MyClass]) -> [Ct] {
-  // CHECK: apply %{{[0-9]*}}<MyClass, Ct>(%{{[0-9]*}})
+  // CHECK: apply %{{[0-9]*}}<{{.*}}Ct>(%{{[0-9]*}})
   return arr as! [Ct]
   // CHECK: return	  
 }
 
-// CHECK-LABEL: sil shared @{{.*}}dictUpCast{{.*}} <Ct where Ct : MyClass>
+// CHECK-LABEL: sil{{.*}}@{{.*}}dictUpCast{{.*}} <Ct where Ct : MyClass>
 func dictUpCast<Ct: MyClass>(_ dict: [KeyClass:Ct]) -> [KeyClass:MyClass] {
-  // CHECK: apply %{{[0-9]*}}<KeyClass, Ct, KeyClass, MyClass>(%{{[0-9]*}})
+  // CHECK: apply %{{[0-9]*}}<{{.*}}Ct{{.*}}>(%{{[0-9]*}})
   return dict as [KeyClass:MyClass]
   // CHECK: return	  
 }
 
-// CHECK-LABEL: sil shared @{{.*}}dictDownCast{{.*}} <Ct where Ct : MyClass>
+// CHECK-LABEL: sil{{.*}}@{{.*}}dictDownCast{{.*}} <Ct where Ct : MyClass>
 func dictDownCast<Ct: MyClass>(_ dict: [KeyClass:MyClass]) -> [KeyClass:Ct] {
   // CHECK: apply %{{[0-9]*}}<KeyClass, MyClass, KeyClass, Ct>(%{{[0-9]*}})
   return dict as! [KeyClass:Ct]
diff --git a/test/SILGen/coverage_smoke.swift b/test/SILGen/coverage_smoke.swift
index 756809e..043dd0a 100644
--- a/test/SILGen/coverage_smoke.swift
+++ b/test/SILGen/coverage_smoke.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -profile-generate -profile-coverage-mapping -Xfrontend -disable-incremental-llvm-codegen -o %t/main
 // RUN: env LLVM_PROFILE_FILE=%t/default.profraw %target-run %t/main
 // RUN: %llvm-profdata merge %t/default.profraw -o %t/default.profdata
diff --git a/test/SILGen/decls.swift b/test/SILGen/decls.swift
index 49dc7dd..8de66f6 100644
--- a/test/SILGen/decls.swift
+++ b/test/SILGen/decls.swift
@@ -123,7 +123,8 @@
   // CHECK: [[ACCESSOR:%[0-9]+]] = function_ref @_T05decls6globalSifau
   // CHECK: [[PTR:%[0-9]+]] = apply [[ACCESSOR]]()
   // CHECK: [[ADDR:%[0-9]+]] = pointer_to_address [[PTR]]
-  // CHECK: [[VALUE:%[0-9]+]] = load [trivial] [[ADDR]]
+  // CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[ADDR]] : $*Int
+  // CHECK: [[VALUE:%[0-9]+]] = load [trivial] [[READ]]
   // CHECK: return [[VALUE]]
 }
 
@@ -138,7 +139,9 @@
   // CHECK: [[ADDR:%[0-9]+]] = pointer_to_address [[PTR]]
   // CHECK: [[READ:%.*]] = begin_access [read] [unknown] [[PBX]] : $*Int
   // CHECK: [[COPY:%.*]] = load [trivial] [[READ]] : $*Int
-  // CHECK: assign [[COPY]] to [[ADDR]] : $*Int
+  // CHECK: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[ADDR]] : $*Int
+  // CHECK: assign [[COPY]] to [[WRITE]] : $*Int
+  // CHECK: end_access [[WRITE]] : $*Int
   // CHECK: return
 }
 
diff --git a/test/SILGen/default_arguments.swift b/test/SILGen/default_arguments.swift
index d045faa..0c144ef 100644
--- a/test/SILGen/default_arguments.swift
+++ b/test/SILGen/default_arguments.swift
@@ -1,4 +1,5 @@
 // RUN: %target-swift-frontend -Xllvm -sil-full-demangle -emit-silgen %s | %FileCheck %s
+// RUN: %target-swift-frontend -Xllvm -sil-full-demangle -emit-silgen %s | %FileCheck %s --check-prefix=NEGATIVE
 
 // __FUNCTION__ used as top-level parameter produces the module name.
 // CHECK-LABEL: sil @main
@@ -74,17 +75,13 @@
 // Check that default argument generator functions don't leak information about
 // user's source.
 //
-// CHECK-LABEL: sil hidden @_T017default_arguments17testMagicLiteralsySS4file_SS8functionSi4lineSi6columntFfA_
-// CHECK: string_literal utf16 ""
+// NEGATIVE-NOT: sil hidden @_T017default_arguments17testMagicLiteralsySS4file_SS8functionSi4lineSi6columntFfA_
 //
-// CHECK-LABEL: sil hidden @_T017default_arguments17testMagicLiteralsySS4file_SS8functionSi4lineSi6columntFfA0_
-// CHECK: string_literal utf16 ""
+// NEGATIVE-NOT: sil hidden @_T017default_arguments17testMagicLiteralsySS4file_SS8functionSi4lineSi6columntFfA0_
 //
-// CHECK-LABEL: sil hidden @_T017default_arguments17testMagicLiteralsySS4file_SS8functionSi4lineSi6columntFfA1_
-// CHECK: integer_literal $Builtin.Int2048, 0
+// NEGATIVE-NOT: sil hidden @_T017default_arguments17testMagicLiteralsySS4file_SS8functionSi4lineSi6columntFfA1_
 //
-// CHECK-LABEL: sil hidden @_T017default_arguments17testMagicLiteralsySS4file_SS8functionSi4lineSi6columntFfA2_
-// CHECK: integer_literal $Builtin.Int2048, 0
+// NEGATIVE-NOT: sil hidden @_T017default_arguments17testMagicLiteralsySS4file_SS8functionSi4lineSi6columntFfA2_
 
 func closure(_: () -> ()) {}
 func autoclosure(_: @autoclosure () -> ()) {}
diff --git a/test/SILGen/default_constructor.swift b/test/SILGen/default_constructor.swift
index ecc87fb..46dbd33 100644
--- a/test/SILGen/default_constructor.swift
+++ b/test/SILGen/default_constructor.swift
@@ -59,7 +59,9 @@
 // CHECK-NEXT: [[VALUE:%[0-9]+]] = apply [[INIT]]() : $@convention(thin) () -> Int64
 // CHECK-NEXT: [[BORROWED_SELF:%.*]] = begin_borrow [[SELF]]
 // CHECK-NEXT: [[IREF:%[0-9]+]] = ref_element_addr [[BORROWED_SELF]] : $E, #E.i
-// CHECK-NEXT: assign [[VALUE]] to [[IREF]] : $*Int64
+// CHECK-NEXT: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[IREF]] : $*Int64
+// CHECK-NEXT: assign [[VALUE]] to [[WRITE]] : $*Int64
+// CHECK-NEXT: end_access [[WRITE]] : $*Int64
 // CHECK-NEXT: end_borrow [[BORROWED_SELF]] from [[SELF]]
 // CHECK-NEXT: [[SELF_COPY:%.*]] = copy_value [[SELF]]
 // CHECK-NEXT: destroy_value [[SELF]]
diff --git a/test/SILGen/dso_handle.swift b/test/SILGen/dso_handle.swift
index 37b7340..ae40b61 100644
--- a/test/SILGen/dso_handle.swift
+++ b/test/SILGen/dso_handle.swift
@@ -1,6 +1,6 @@
 // RUN: %target-swift-frontend -Xllvm -sil-full-demangle -emit-silgen %s | %FileCheck %s
 
-// CHECK: sil_global hidden_external [[DSO:@__dso_handle]] : $Builtin.RawPointer
+// CHECK: sil_global [[DSO:@__dso_handle]] : $Builtin.RawPointer
 
 // CHECK-LABEL: sil @main : $@convention(c)
 // CHECK: bb0
@@ -8,16 +8,17 @@
 // CHECK-NEXT: [[DSOPtr:%[0-9]+]] = address_to_pointer [[DSOAddr]] : $*Builtin.RawPointer to $Builtin.RawPointer
 // CHECK-NEXT: [[DSOPtrStruct:[0-9]+]] = struct $UnsafeRawPointer ([[DSOPtr]] : $Builtin.RawPointer)
 
-
-// CHECK-LABEL: sil hidden @_T010dso_handle14printDSOHandleS2V0A0_tFfA_
-// CHECK: [[DSOAddr:%[0-9]+]] = global_addr [[DSO]] : $*Builtin.RawPointer
-// CHECK-NEXT: [[DSOPtr:%[0-9]+]] = address_to_pointer [[DSOAddr]] : $*Builtin.RawPointer to $Builtin.RawPointer
-// CHECK-NEXT: [[DSOPtrStruct:%[0-9]+]] = struct $UnsafeRawPointer ([[DSOPtr]] : $Builtin.RawPointer)
-// CHECK-NEXT: return [[DSOPtrStruct]] : $UnsafeRawPointer
 func printDSOHandle(dso: UnsafeRawPointer = #dsohandle) -> UnsafeRawPointer {
   print(dso)
   return dso
 }
 
-_ = printDSOHandle()
+@_inlineable public func printDSOHandleInlineable(dso: UnsafeRawPointer = #dsohandle) -> UnsafeRawPointer {
+  return dso
+}
 
+@_inlineable public func callsPrintDSOHandleInlineable() {
+  printDSOHandleInlineable()
+}
+
+_ = printDSOHandle()
diff --git a/test/SILGen/dynamic.swift b/test/SILGen/dynamic.swift
index 8f24d21..ee06b36 100644
--- a/test/SILGen/dynamic.swift
+++ b/test/SILGen/dynamic.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-silgen-test-overlays
 
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -Xllvm -sil-full-demangle -primary-file %s %S/Inputs/dynamic_other.swift -emit-silgen | %FileCheck %s
diff --git a/test/SILGen/dynamic_lookup_throws.swift b/test/SILGen/dynamic_lookup_throws.swift
index 341f051..8c0fc0f 100644
--- a/test/SILGen/dynamic_lookup_throws.swift
+++ b/test/SILGen/dynamic_lookup_throws.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-clang-importer-objc-overlays
 
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource -I %t) -emit-silgen -parse-as-library %s | %FileCheck %s
diff --git a/test/SILGen/enum_resilience.swift b/test/SILGen/enum_resilience.swift
index 90177d3..5d63875 100644
--- a/test/SILGen/enum_resilience.swift
+++ b/test/SILGen/enum_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_struct.swiftmodule -module-name=resilient_struct %S/../Inputs/resilient_struct.swift
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_enum.swiftmodule -module-name=resilient_enum -I %t %S/../Inputs/resilient_enum.swift
 // RUN: %target-swift-frontend -I %t -emit-silgen -enable-resilience %s | %FileCheck %s
diff --git a/test/SILGen/errors.swift b/test/SILGen/errors.swift
index 19c5c43..8992271 100644
--- a/test/SILGen/errors.swift
+++ b/test/SILGen/errors.swift
@@ -184,7 +184,9 @@
 // CHECK:      [[T0:%.*]] = mark_uninitialized [rootself] %1 : $HasThrowingInit
 // CHECK-NEXT: [[BORROWED_T0:%.*]] = begin_borrow [[T0]]
 // CHECK-NEXT: [[T1:%.*]] = ref_element_addr [[BORROWED_T0]] : $HasThrowingInit
-// CHECK-NEXT: assign %0 to [[T1]] : $*Int
+// CHECK-NEXT: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[T1]] : $*Int
+// CHECK-NEXT: assign %0 to [[WRITE]] : $*Int
+// CHECK-NEXT: end_access [[WRITE]]
 // CHECK-NEXT: end_borrow [[BORROWED_T0]] from [[T0]]
 // CHECK-NEXT: [[T0_RET:%.*]] = copy_value [[T0]]
 // CHECK-NEXT: destroy_value [[T0]]
@@ -507,7 +509,9 @@
 //   Initialize subField.
 // CHECK:      [[T0:%.*]] = load_borrow [[PB]]
 // CHECK-NEXT: [[T1:%.*]] = ref_element_addr [[T0]] : $BaseThrowingInit, #BaseThrowingInit.subField
-// CHECK-NEXT: assign %1 to [[T1]]
+// CHECK-NEXT: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[T1]] : $*Int
+// CHECK-NEXT: assign %1 to [[WRITE]]
+// CHECK-NEXT: end_access [[WRITE]]
 // CHECK-NEXT: end_borrow [[T0]] from [[PB]]
 //   Super delegation.
 // CHECK-NEXT: [[T0:%.*]] = load [take] [[PB]]
diff --git a/test/SILGen/expressions.swift b/test/SILGen/expressions.swift
index 054c8c0..a143388 100644
--- a/test/SILGen/expressions.swift
+++ b/test/SILGen/expressions.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: echo "public var x = Int()" | %target-swift-frontend -module-name FooBar -emit-module -o %t -
 // RUN: %target-swift-frontend -parse-stdlib -emit-silgen %s -I%t -disable-access-control | %FileCheck %s
 
diff --git a/test/SILGen/foreign_errors.swift b/test/SILGen/foreign_errors.swift
index 6e64875..ca6afb7 100644
--- a/test/SILGen/foreign_errors.swift
+++ b/test/SILGen/foreign_errors.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-clang-importer-objc-overlays
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource -I %t) -emit-silgen -parse-as-library %s | %FileCheck %s
 
diff --git a/test/SILGen/fragile_globals.swift b/test/SILGen/fragile_globals.swift
index 82bafa1..3cdc72b 100644
--- a/test/SILGen/fragile_globals.swift
+++ b/test/SILGen/fragile_globals.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -parse-as-library -sil-serialize-all -o %t %S/Inputs/ModuleA.swift
 // RUN: %target-swift-frontend -emit-module -parse-as-library -sil-serialize-all -o %t %S/Inputs/ModuleB.swift
 // RUN: %target-swift-frontend -parse-as-library -I%t %s -Xllvm -sil-disable-pass="SIL Global Optimization" -O -emit-sil | %FileCheck %s
diff --git a/test/SILGen/generic_closures.swift b/test/SILGen/generic_closures.swift
index 52066a6..8842c5f 100644
--- a/test/SILGen/generic_closures.swift
+++ b/test/SILGen/generic_closures.swift
@@ -8,14 +8,27 @@
 func generic_nondependent_context<T>(_ x: T, y: Int) -> Int {
   func foo() -> Int { return y }
 
+  func bar() -> Int { return y }
+
   // CHECK: [[FOO:%.*]] = function_ref @_T016generic_closures0A21_nondependent_context{{.*}} : $@convention(thin) (Int) -> Int
   // CHECK: [[FOO_CLOSURE:%.*]] = partial_apply [[FOO]](%1)
   // CHECK: destroy_value [[FOO_CLOSURE]]
   let _ = foo
 
+  // CHECK: [[BAR:%.*]] = function_ref @_T016generic_closures0A21_nondependent_context{{.*}} : $@convention(thin) (Int) -> Int
+  // CHECK: [[BAR_CLOSURE:%.*]] = partial_apply [[BAR]](%1)
+  // CHECK: destroy_value [[BAR_CLOSURE]]
+  let _ = bar
+
   // CHECK: [[FOO:%.*]] = function_ref @_T016generic_closures0A21_nondependent_context{{.*}} : $@convention(thin) (Int) -> Int
   // CHECK: [[FOO_CLOSURE:%.*]] = apply [[FOO]]
-  return foo()
+  _ = foo()
+
+  // CHECK: [[BAR:%.*]] = function_ref @_T016generic_closures0A21_nondependent_context{{.*}} : $@convention(thin) (Int) -> Int
+  // CHECK: [[BAR_CLOSURE:%.*]] = apply [[BAR]]
+
+  // CHECK: [[BAR_CLOSURE]]
+  return bar()
 }
 
 // CHECK-LABEL: sil hidden @_T016generic_closures0A8_capture{{[_0-9a-zA-Z]*}}F
@@ -29,6 +42,8 @@
 
   // CHECK: [[FOO:%.*]] = function_ref @_T016generic_closures0A8_capture{{.*}} : $@convention(thin) <τ_0_0> () -> @thick Any.Type
   // CHECK: [[FOO_CLOSURE:%.*]] = apply [[FOO]]<T>()
+
+  // CHECK: return [[FOO_CLOSURE]]
   return foo()
 }
 
@@ -43,6 +58,8 @@
 
   // CHECK: [[FOO:%.*]] = function_ref @_T016generic_closures0A13_capture_cast{{.*}} : $@convention(thin) <τ_0_0> (@in Any) -> Bool
   // CHECK: [[FOO_CLOSURE:%.*]] = apply [[FOO]]<T>([[ARG:%.*]])
+
+  // CHECK: return [[FOO_CLOSURE]]
   return foo(y)
 }
 
@@ -61,6 +78,8 @@
 
   // CHECK: [[FOO:%.*]] = function_ref @_T016generic_closures0A22_nocapture_existential{{.*}} : $@convention(thin) (@in Concept) -> Bool
   // CHECK: [[FOO_CLOSURE:%.*]] = apply [[FOO]]([[ARG:%.*]])
+
+  // CHECK: return [[FOO_CLOSURE]]
   return foo(y)
 }
 
@@ -75,6 +94,8 @@
 
   // CHECK: [[FOO:%.*]] = function_ref @_T016generic_closures0A18_dependent_context{{.*}} : $@convention(thin) <τ_0_0> (@owned <τ_0_0> { var τ_0_0 } <τ_0_0>) -> @out τ_0_0
   // CHECK: [[FOO_CLOSURE:%.*]] = apply [[FOO]]<T>
+
+  // CHECK: return
   return foo()
 }
 
diff --git a/test/SILGen/global_init_attribute.swift b/test/SILGen/global_init_attribute.swift
index ab4d9d0..9ae2d35 100644
--- a/test/SILGen/global_init_attribute.swift
+++ b/test/SILGen/global_init_attribute.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -Xllvm -sil-full-demangle -emit-module -o %t %S/Inputs/def_global.swift
 // RUN: %target-swift-frontend -Xllvm -sil-full-demangle -parse-as-library -emit-silgen -I %t %s | %FileCheck %s
 //
diff --git a/test/SILGen/global_resilience.swift b/test/SILGen/global_resilience.swift
index 4eae548..988fe87 100644
--- a/test/SILGen/global_resilience.swift
+++ b/test/SILGen/global_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_global.swiftmodule -module-name=resilient_global %S/../Inputs/resilient_global.swift
 // RUN: %target-swift-frontend -I %t -emit-silgen -enable-resilience -parse-as-library %s | %FileCheck %s
 // RUN: %target-swift-frontend -I %t -emit-sil -O -enable-resilience -parse-as-library %s | %FileCheck --check-prefix=CHECK-OPT %s
diff --git a/test/SILGen/guaranteed_self.swift b/test/SILGen/guaranteed_self.swift
index 3075a54..1b9b636 100644
--- a/test/SILGen/guaranteed_self.swift
+++ b/test/SILGen/guaranteed_self.swift
@@ -478,12 +478,16 @@
   // CHECK-LABEL: sil hidden @_T015guaranteed_self13LetFieldClassC10letkMethod{{[_0-9a-zA-Z]*}}F : $@convention(method) (@guaranteed LetFieldClass) -> () {
   // CHECK: bb0([[CLS:%.*]] : $LetFieldClass):
   // CHECK: [[KRAKEN_ADDR:%.*]] = ref_element_addr [[CLS]] : $LetFieldClass, #LetFieldClass.letk
-  // CHECK-NEXT: [[KRAKEN:%.*]] = load_borrow [[KRAKEN_ADDR]]
+  // CHECK-NEXT: [[WRITE:%.*]] = begin_access [read] [dynamic] [[KRAKEN_ADDR]] : $*Kraken
+  // CHECK-NEXT: [[KRAKEN:%.*]] = load_borrow [[WRITE]]
+  // CHECK-NEXT: end_access [[WRITE]] : $*Kraken
   // CHECK-NEXT: [[KRAKEN_METH:%.*]] = class_method [[KRAKEN]]
   // CHECK-NEXT: apply [[KRAKEN_METH]]([[KRAKEN]])
-  // CHECK-NEXT: end_borrow [[KRAKEN]] from [[KRAKEN_ADDR]]
+  // CHECK-NEXT: end_borrow [[KRAKEN]] from [[WRITE]]
   // CHECK-NEXT: [[KRAKEN_ADDR:%.*]] = ref_element_addr [[CLS]] : $LetFieldClass, #LetFieldClass.letk
-  // CHECK-NEXT: [[KRAKEN:%.*]] = load [copy] [[KRAKEN_ADDR]]
+  // CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[KRAKEN_ADDR]] : $*Kraken
+  // CHECK-NEXT: [[KRAKEN:%.*]] = load [copy] [[READ]]
+  // CHECK-NEXT: end_access [[READ]] : $*Kraken
   // CHECK: [[DESTROY_SHIP_FUN:%.*]] = function_ref @_T015guaranteed_self11destroyShipyAA6KrakenCF : $@convention(thin) (@owned Kraken) -> ()
   // CHECK-NEXT: [[BORROWED_KRAKEN:%.*]] = begin_borrow [[KRAKEN]]
   // CHECK-NEXT: [[KRAKEN_COPY:%.*]] = copy_value [[BORROWED_KRAKEN]]
@@ -492,7 +496,9 @@
   // CHECK-NEXT: [[KRAKEN_BOX:%.*]] = alloc_box ${ var Kraken }
   // CHECK-NEXT: [[PB:%.*]] = project_box [[KRAKEN_BOX]]
   // CHECK-NEXT: [[KRAKEN_ADDR:%.*]] = ref_element_addr [[CLS]] : $LetFieldClass, #LetFieldClass.letk
-  // CHECK-NEXT: [[KRAKEN2:%.*]] = load [copy] [[KRAKEN_ADDR]]
+  // CHECK-NEXT: [[READ:%.*]] = begin_access [read] [dynamic] [[KRAKEN_ADDR]] : $*Kraken
+  // CHECK-NEXT: [[KRAKEN2:%.*]] = load [copy] [[READ]]
+  // CHECK-NEXT: end_access [[READ]] : $*Kraken
   // CHECK-NEXT: store [[KRAKEN2]] to [init] [[PB]]
   // CHECK: [[DESTROY_SHIP_FUN:%.*]] = function_ref @_T015guaranteed_self11destroyShipyAA6KrakenCF : $@convention(thin) (@owned Kraken) -> ()
   // CHECK-NEXT: [[READ:%.*]] = begin_access [read] [unknown] [[PB]] : $*Kraken
diff --git a/test/SILGen/import_as_member.swift b/test/SILGen/import_as_member.swift
index e215333..1f6bedf 100644
--- a/test/SILGen/import_as_member.swift
+++ b/test/SILGen/import_as_member.swift
@@ -8,8 +8,9 @@
 }
 // SIL-LABEL: sil {{.*}}returnGlobalVar{{.*}} () -> Double {
 // SIL:   %0 = global_addr @IAMStruct1GlobalVar : $*Double
-// SIL:   %2 = load [trivial] %0 : $*Double
-// SIL:   return %2 : $Double
+// SIL:   [[READ:%.*]] = begin_access [read] [dynamic] %0 : $*Double
+// SIL:   [[VAL:%.*]] = load [trivial] [[READ]] : $*Double
+// SIL:   return [[VAL]] : $Double
 // SIL-NEXT: }
 
 // SIL-LABEL: sil {{.*}}anchor{{.*}} () -> () {
diff --git a/test/SILGen/initializers.swift b/test/SILGen/initializers.swift
index b139eb3..6493576 100644
--- a/test/SILGen/initializers.swift
+++ b/test/SILGen/initializers.swift
@@ -496,7 +496,8 @@
     // CHECK:   [[BORROWED_SELF:%.*]] = load_borrow [[PB_BOX]]
     // CHECK:   [[CANARY_VALUE:%.*]] = apply
     // CHECK:   [[CANARY_GEP:%.*]] = ref_element_addr [[BORROWED_SELF]]
-    // CHECK:   assign [[CANARY_VALUE]] to [[CANARY_GEP]]
+    // CHECK:   [[WRITE:%.*]] = begin_access [modify] [dynamic] [[CANARY_GEP]] : $*Canary
+    // CHECK:   assign [[CANARY_VALUE]] to [[WRITE]]
     self.otherMember = Canary()
 
     // Finally, begin the super init sequence.
diff --git a/test/SILGen/inlineable_attribute_objc.swift b/test/SILGen/inlineable_attribute_objc.swift
index 6ed132a..5925235 100644
--- a/test/SILGen/inlineable_attribute_objc.swift
+++ b/test/SILGen/inlineable_attribute_objc.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-silgen-test-overlays
 
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -Xllvm -sil-full-demangle -primary-file %s -emit-silgen | %FileCheck %s
diff --git a/test/SILGen/keypaths.swift b/test/SILGen/keypaths.swift
index f1f1775..3bc845e 100644
--- a/test/SILGen/keypaths.swift
+++ b/test/SILGen/keypaths.swift
@@ -31,6 +31,10 @@
   var z: String {
     return y
   }
+  var w: String {
+    get { return "" }
+    nonmutating set { }
+  }
 }
 
 // CHECK-LABEL: sil hidden @{{.*}}storedProperties
@@ -171,3 +175,10 @@
 func keyPathForInheritedMember() {
   _ = \BB<Int, String>.a
 }
+
+func keyPathForExistentialMember() {
+  _ = \P.x
+  _ = \P.y
+  _ = \P.z
+  _ = \P.w
+}
diff --git a/test/SILGen/keypaths_objc.swift b/test/SILGen/keypaths_objc.swift
index ad3b6f1..8bbaf94 100644
--- a/test/SILGen/keypaths_objc.swift
+++ b/test/SILGen/keypaths_objc.swift
@@ -1,4 +1,5 @@
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-keypath-components -emit-silgen -import-objc-header %S/Inputs/keypaths_objc.h %s | %FileCheck %s
+// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-keypath-components -emit-ir -import-objc-header %S/Inputs/keypaths_objc.h %s
 // REQUIRES: objc_interop
 
 import Foundation
@@ -55,3 +56,23 @@
   // CHECK: keypath $KeyPath<Foo, Int>, (objc "int"; {{.*}} id #Foo.int!getter.1 :
   _ = \Foo.int
 }
+
+struct X {}
+
+extension NSObject {
+    var x: X { return X() }
+    @objc var objc: Int { return 0 }
+    @objc dynamic var dynamic: Int { return 0 }
+}
+
+// CHECK-LABEL: sil hidden @{{.*}}nonobjcExtensionOfObjCClass
+func nonobjcExtensionOfObjCClass() {
+  // Should be treated as a statically-dispatch property
+  // CHECK: keypath $KeyPath<NSObject, X>, ({{.*}} id @
+  _ = \NSObject.x
+  // CHECK: keypath $KeyPath<NSObject, Int>, ({{.*}} id #NSObject.objc!getter.1.foreign
+  _ = \NSObject.objc
+  // CHECK: keypath $KeyPath<NSObject, Int>, ({{.*}} id #NSObject.dynamic!getter.1.foreign
+  _ = \NSObject.dynamic
+
+}
diff --git a/test/SILGen/lifetime.swift b/test/SILGen/lifetime.swift
index f175cbe..f7cddab 100644
--- a/test/SILGen/lifetime.swift
+++ b/test/SILGen/lifetime.swift
@@ -431,10 +431,12 @@
     // CHECK: destroy_value [[Y_VALUE]]
     // CHECK: [[BORROWED_THIS:%.*]] = begin_borrow [[THIS]]
     // CHECK: [[THIS_Y:%.*]] = ref_element_addr [[BORROWED_THIS]] : {{.*}}, #Foo.y
-    // CHECK: [[THIS_Y_0:%.*]] = tuple_element_addr [[THIS_Y]] : $*(Int, Ref), 0
+    // CHECK: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[THIS_Y]] : $*(Int, Ref)
+    // CHECK: [[THIS_Y_0:%.*]] = tuple_element_addr [[WRITE]] : $*(Int, Ref), 0
     // CHECK: assign [[Y_EXTRACTED_0]] to [[THIS_Y_0]]
-    // CHECK: [[THIS_Y_1:%.*]] = tuple_element_addr [[THIS_Y]] : $*(Int, Ref), 1
+    // CHECK: [[THIS_Y_1:%.*]] = tuple_element_addr [[WRITE]] : $*(Int, Ref), 1
     // CHECK: assign [[COPIED_Y_EXTRACTED_1]] to [[THIS_Y_1]]
+    // CHECK: end_access [[WRITE]] : $*(Int, Ref)
     // CHECK: end_borrow [[BORROWED_THIS]] from [[THIS]]
 
     // -- Initialization for w
@@ -442,13 +444,15 @@
     // CHECK: [[Z_RESULT:%.*]] = apply [[Z_FUNC]]<T>()
     // CHECK: [[BORROWED_THIS:%.*]] = begin_borrow [[THIS]]
     // CHECK: [[THIS_Z:%.*]] = ref_element_addr [[BORROWED_THIS]]
-    // CHECK: assign [[Z_RESULT]] to [[THIS_Z]]
+    // CHECK: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[THIS_Z]] : $*Ref
+    // CHECK: assign [[Z_RESULT]] to [[WRITE]]
     // CHECK: end_borrow [[BORROWED_THIS]] from [[THIS]]
 
     // -- Initialization for x
     // CHECK: [[BORROWED_THIS:%.*]] = begin_borrow [[THIS]]
     // CHECK: [[THIS_X:%[0-9]+]] = ref_element_addr [[BORROWED_THIS]] : {{.*}}, #Foo.x
-    // CHECK: assign {{.*}} to [[THIS_X]]
+    // CHECK: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[THIS_X]] : $*Int
+    // CHECK: assign {{.*}} to [[WRITE]]
     // CHECK: end_borrow [[BORROWED_THIS]] from [[THIS]]
 
     x = bar()
@@ -486,9 +490,10 @@
     // -- First we initialize #Foo.y.
     // CHECK:   [[BORROWED_THIS:%.*]] = begin_borrow [[THIS]]
     // CHECK:   [[THIS_Y:%.*]] = ref_element_addr [[BORROWED_THIS]] : $Foo<T>, #Foo.y
-    // CHECK:   [[THIS_Y_1:%.*]] = tuple_element_addr [[THIS_Y]] : $*(Int, Ref), 0
+    // CHECK:   [[WRITE:%.*]] = begin_access [modify] [dynamic] [[THIS_Y]] : $*(Int, Ref)
+    // CHECK:   [[THIS_Y_1:%.*]] = tuple_element_addr [[WRITE]] : $*(Int, Ref), 0
     // CHECK:   assign {{.*}} to [[THIS_Y_1]] : $*Int
-    // CHECK:   [[THIS_Y_2:%.*]] = tuple_element_addr [[THIS_Y]] : $*(Int, Ref), 1
+    // CHECK:   [[THIS_Y_2:%.*]] = tuple_element_addr [[WRITE]] : $*(Int, Ref), 1
     // CHECK:   assign {{.*}} to [[THIS_Y_2]] : $*Ref
     // CHECK:   end_borrow [[BORROWED_THIS]] from [[THIS]]
 
@@ -500,7 +505,8 @@
     // -- Then we initialize #Foo.z
     // CHECK:   [[BORROWED_THIS:%.*]] = begin_borrow [[THIS]]
     // CHECK:   [[THIS_Z:%.*]] = ref_element_addr [[BORROWED_THIS]] : {{.*}}, #Foo.z
-    // CHECK:   copy_addr [take] {{.*}} to [[THIS_Z]]
+    // CHECK:   [[WRITE:%.*]] = begin_access [modify] [dynamic] [[THIS_Z]] : $*T
+    // CHECK:   copy_addr [take] {{.*}} to [[WRITE]]
     // CHECK:   end_borrow [[BORROWED_THIS]] from [[THIS]]
 
     // -- Then initialize #Foo.x using the earlier stored value of CHI to THIS_Z.
@@ -509,7 +515,8 @@
     // CHECK:   [[READ:%.*]] = begin_access [read] [unknown] [[PCHI]]
     // CHECK:   [[X:%.*]] = load [trivial] [[READ]]
     // CHECK:   [[THIS_X:%[0-9]+]] = ref_element_addr [[BORROWED_THIS]] : {{.*}}, #Foo.x
-    // CHECK:   assign [[X]] to [[THIS_X]]
+    // CHECK:   [[WRITE:%.*]] = begin_access [modify] [dynamic] [[THIS_X]] : $*Int
+    // CHECK:   assign [[X]] to [[WRITE]]
     // CHECK:   end_borrow [[BORROWED_THIS]] from [[THIS]]
 
     // -- cleanup chi
diff --git a/test/SILGen/mangling_ext_structA.swift b/test/SILGen/mangling_ext_structA.swift
index 7f3dd13..6a06887 100644
--- a/test/SILGen/mangling_ext_structA.swift
+++ b/test/SILGen/mangling_ext_structA.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/def_structA.swift
 // RUN: %target-swift-frontend -emit-silgen -module-name ext_structA -I %t %s | %FileCheck %s
 
diff --git a/test/SILGen/mangling_private.swift b/test/SILGen/mangling_private.swift
index 776d160..d78a1ca 100644
--- a/test/SILGen/mangling_private.swift
+++ b/test/SILGen/mangling_private.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/mangling_private_helper.swift
 // RUN: %target-swift-frontend -emit-silgen %S/Inputs/mangling_private_helper.swift | %FileCheck %s -check-prefix=CHECK-BASE
 
@@ -21,20 +21,32 @@
 public struct PublicStruct {
   // CHECK-LABEL: sil private @_T016mangling_private12PublicStructV0B6Method33_A3CCBB841DB59E79A4AD4EE458655068LLyyFZ
   private static func privateMethod() {}
+
+  // CHECK-LABEL: sil private @_T016mangling_private12PublicStructVACSi1x_tc33_A3CCBB841DB59E79A4AD4EE458655068LlfC
+  private init(x: Int) {}
 }
 
 public struct InternalStruct {
   // CHECK-LABEL: sil private @_T016mangling_private14InternalStructV0B6Method33_A3CCBB841DB59E79A4AD4EE458655068LLyyFZ
   private static func privateMethod() {}
+
+  // CHECK-LABEL: sil private @_T016mangling_private14InternalStructVACSi1x_tc33_A3CCBB841DB59E79A4AD4EE458655068LlfC
+  private init(x: Int) {}
 }
 
 private struct PrivateStruct {
   // CHECK-LABEL: sil private @_T016mangling_private13PrivateStruct33_A3CCBB841DB59E79A4AD4EE458655068LLV0B6MethodyyFZ
   private static func privateMethod() {}
 
+  // CHECK-LABEL: sil private @_T016mangling_private13PrivateStruct33_A3CCBB841DB59E79A4AD4EE458655068LLVADSi1x_tcfC
+  private init(x: Int) {}
+
   struct Inner {
     // CHECK-LABEL: sil private @_T016mangling_private13PrivateStruct33_A3CCBB841DB59E79A4AD4EE458655068LLV5InnerV0B6MethodyyFZ
     private static func privateMethod() {}
+
+    // CHECK-LABEL: sil private @_T016mangling_private13PrivateStruct33_A3CCBB841DB59E79A4AD4EE458655068LLV5InnerVAFSi1x_tcfC
+    private init(x: Int) {}
   }
 }
 
@@ -47,10 +59,16 @@
 extension PublicStruct {
   // CHECK-LABEL: sil private @_T016mangling_private12PublicStructV16extPrivateMethod33_A3CCBB841DB59E79A4AD4EE458655068LLyyF
   private func extPrivateMethod() {}
+
+  // CHECK-LABEL: sil private @_T016mangling_private12PublicStructVACSi3ext_tc33_A3CCBB841DB59E79A4AD4EE458655068LlfC
+  private init(ext: Int) {}
 }
 extension PrivateStruct {
   // CHECK-LABEL: sil private @_T016mangling_private13PrivateStruct33_A3CCBB841DB59E79A4AD4EE458655068LLV03extC6MethodyyF
   private func extPrivateMethod() {}
+
+  // CHECK-LABEL: sil private @_T016mangling_private13PrivateStruct33_A3CCBB841DB59E79A4AD4EE458655068LLVADSi3ext_tcfC
+  private init(ext: Int) {}
 }
 
 // CHECK-LABEL: sil private @_T016mangling_private10localTypesyyF11LocalStructL_V0B6MethodyyFZ
diff --git a/test/SILGen/materializeForSet.swift b/test/SILGen/materializeForSet.swift
index 1e71787..b479e9c 100644
--- a/test/SILGen/materializeForSet.swift
+++ b/test/SILGen/materializeForSet.swift
@@ -1,4 +1,5 @@
 // RUN: %target-swift-frontend -emit-silgen %s | %FileCheck %s
+// RUN: %target-swift-frontend -emit-silgen -enforce-exclusivity=unchecked %s | %FileCheck --check-prefix=UNCHECKED %s
 
 class Base {
   var stored: Int = 0
@@ -7,11 +8,20 @@
 // CHECK: bb0([[BUFFER:%.*]] : $Builtin.RawPointer, [[STORAGE:%.*]] : $*Builtin.UnsafeValueBuffer, [[SELF:%.*]] : $Base):
 // CHECK:   [[T0:%.*]] = ref_element_addr [[SELF]] : $Base, #Base.stored
 // CHECK:   [[T1:%.*]] = address_to_pointer [[T0]] : $*Int to $Builtin.RawPointer
-// CHECK:   [[T2:%.*]] = enum $Optional<Builtin.RawPointer>, #Optional.none
+// CHECK:   [[T2:%.*]] = enum $Optional<Builtin.RawPointer>, #Optional.some
 // CHECK:   [[T3:%.*]] = tuple ([[T1]] : $Builtin.RawPointer, [[T2]] : $Optional<Builtin.RawPointer>)
 // CHECK:   return [[T3]] : $(Builtin.RawPointer, Optional<Builtin.RawPointer>)
 // CHECK: }
 
+// UNCHECKED-LABEL: sil hidden [transparent] @_T017materializeForSet4BaseC6storedSifm : $@convention(method) (Builtin.RawPointer, @inout Builtin.UnsafeValueBuffer, @guaranteed Base) -> (Builtin.RawPointer, Optional<Builtin.RawPointer>) {
+// UNCHECKED: bb0([[BUFFER:%.*]] : $Builtin.RawPointer, [[STORAGE:%.*]] : $*Builtin.UnsafeValueBuffer, [[SELF:%.*]] : $Base):
+// UNCHECKED:   [[T0:%.*]] = ref_element_addr [[SELF]] : $Base, #Base.stored
+// UNCHECKED:   [[T1:%.*]] = address_to_pointer [[T0]] : $*Int to $Builtin.RawPointer
+// UNCHECKED:   [[T2:%.*]] = enum $Optional<Builtin.RawPointer>, #Optional.none
+// UNCHECKED:   [[T3:%.*]] = tuple ([[T1]] : $Builtin.RawPointer, [[T2]] : $Optional<Builtin.RawPointer>)
+// UNCHECKED:   return [[T3]] : $(Builtin.RawPointer, Optional<Builtin.RawPointer>)
+// UNCHECKED: }
+
 // CHECK-LABEL: sil private [transparent] @_T017materializeForSet4BaseC8computedSifmytfU_ : $@convention(method) (Builtin.RawPointer, @inout Builtin.UnsafeValueBuffer, @inout Base, @thick Base.Type) -> () {
 // CHECK: bb0([[BUFFER:%.*]] : $Builtin.RawPointer, [[STORAGE:%.*]] : $*Builtin.UnsafeValueBuffer, [[SELF:%.*]] : $*Base, [[SELFTYPE:%.*]] : $@thick Base.Type):
 // CHECK:   [[T0:%.*]] = load_borrow [[SELF]]
@@ -66,7 +76,7 @@
 
 extension Derived : Abstractable {}
 
-// CHECK: sil private [transparent] @_T017materializeForSet7DerivedCAA12AbstractableA2aDP14storedFunction6ResultQzycfmytfU_TW : $@convention(witness_method) (Builtin.RawPointer, @inout Builtin.UnsafeValueBuffer, @inout Derived, @thick Derived.Type) -> ()
+// CHECK-LABEL: sil private [transparent] @_T017materializeForSet7DerivedCAA12AbstractableA2aDP14storedFunction6ResultQzycfmytfU_TW : $@convention(witness_method) (Builtin.RawPointer, @inout Builtin.UnsafeValueBuffer, @inout Derived, @thick Derived.Type) -> ()
 // CHECK: bb0(%0 : $Builtin.RawPointer, %1 : $*Builtin.UnsafeValueBuffer, %2 : $*Derived, %3 : $@thick Derived.Type):
 // CHECK-NEXT: [[T0:%.*]] = load_borrow %2 : $*Derived
 // CHECK-NEXT: [[SELF:%.*]] = upcast [[T0]] : $Derived to $Base
@@ -81,7 +91,7 @@
 // CHECK-NEXT: tuple ()
 // CHECK-NEXT: return
 
-// CHECK: sil private [transparent] [thunk] @_T017materializeForSet7DerivedCAA12AbstractableA2aDP14storedFunction{{[_0-9a-zA-Z]*}}fmTW
+// CHECK-LABEL: sil private [transparent] [thunk] @_T017materializeForSet7DerivedCAA12AbstractableA2aDP14storedFunction{{[_0-9a-zA-Z]*}}fmTW
 // CHECK: bb0(%0 : $Builtin.RawPointer, %1 : $*Builtin.UnsafeValueBuffer, %2 : $*Derived):
 // CHECK-NEXT: [[RESULT_ADDR:%.*]] = pointer_to_address %0 : $Builtin.RawPointer to [strict] $*@callee_owned () -> @out Int
 // CHECK-NEXT: [[T0:%.*]] = load_borrow %2 : $*Derived
@@ -106,7 +116,7 @@
 // CHECK-NEXT: end_borrow [[T0]] from %2
 // CHECK-NEXT: return [[T4]]
 
-// CHECK: sil private [transparent] @_T017materializeForSet7DerivedCAA12AbstractableA2aDP19finalStoredFunction6ResultQzycfmytfU_TW :
+// CHECK-LABEL: sil private [transparent] @_T017materializeForSet7DerivedCAA12AbstractableA2aDP19finalStoredFunction6ResultQzycfmytfU_TW :
 // CHECK: bb0(%0 : $Builtin.RawPointer, %1 : $*Builtin.UnsafeValueBuffer, %2 : $*Derived, %3 : $@thick Derived.Type):
 // CHECK-NEXT: [[T0:%.*]] = load_borrow %2 : $*Derived
 // CHECK-NEXT: [[SELF:%.*]] = upcast [[T0]] : $Derived to $Base
@@ -116,21 +126,40 @@
 // CHECK-NEXT: [[REABSTRACTOR:%.*]] = function_ref @_T0SiIxr_SiIxd_TR : $@convention(thin) (@owned @callee_owned () -> @out Int) -> Int
 // CHECK-NEXT: [[NEWVALUE:%.*]] = partial_apply [[REABSTRACTOR]]([[VALUE]])
 // CHECK-NEXT: [[ADDR:%.*]] = ref_element_addr [[SELF]] : $Base, #Base.finalStoredFunction
-// CHECK-NEXT: assign [[NEWVALUE]] to [[ADDR]]
+// CHECK-NEXT: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[ADDR]] : $*@callee_owned () -> Int
+// CHECK-NEXT: assign [[NEWVALUE]] to [[WRITE]]
+// CHECK-NEXT: end_access [[WRITE]] : $*@callee_owned () -> Int
 // CHECK-NEXT: end_borrow [[T0]] from %2
 // CHECK-NEXT: tuple ()
 // CHECK-NEXT: return
 
-// CHECK: sil private [transparent] [thunk] @_T017materializeForSet7DerivedCAA12AbstractableA2aDP19finalStoredFunction{{[_0-9a-zA-Z]*}}fmTW
+// UNCHECKED-LABEL: sil private [transparent] @_T017materializeForSet7DerivedCAA12AbstractableA2aDP19finalStoredFunction6ResultQzycfmytfU_TW :
+// UNCHECKED: bb0(%0 : $Builtin.RawPointer, %1 : $*Builtin.UnsafeValueBuffer, %2 : $*Derived, %3 : $@thick Derived.Type):
+// UNCHECKED-NEXT: [[T0:%.*]] = load_borrow %2 : $*Derived
+// UNCHECKED-NEXT: [[SELF:%.*]] = upcast [[T0]] : $Derived to $Base
+// UNCHECKED-NEXT: [[RESULT_ADDR:%.*]] = pointer_to_address %0 : $Builtin.RawPointer to [strict] $*@callee_owned () -> @out Int
+// UNCHECKED-NEXT: [[VALUE:%.*]] = load [take] [[RESULT_ADDR]] : $*@callee_owned () -> @out Int
+// UNCHECKED-NEXT: // function_ref
+// UNCHECKED-NEXT: [[REABSTRACTOR:%.*]] = function_ref @_T0SiIxr_SiIxd_TR : $@convention(thin) (@owned @callee_owned () -> @out Int) -> Int
+// UNCHECKED-NEXT: [[NEWVALUE:%.*]] = partial_apply [[REABSTRACTOR]]([[VALUE]])
+// UNCHECKED-NEXT: [[ADDR:%.*]] = ref_element_addr [[SELF]] : $Base, #Base.finalStoredFunction
+// UNCHECKED-NEXT: assign [[NEWVALUE]] to [[ADDR]]
+// UNCHECKED-NEXT: end_borrow [[T0]] from %2
+// UNCHECKED-NEXT: tuple ()
+// UNCHECKED-NEXT: return
+
+// CHECK-LABEL: sil private [transparent] [thunk] @_T017materializeForSet7DerivedCAA12AbstractableA2aDP19finalStoredFunction{{[_0-9a-zA-Z]*}}fmTW
 // CHECK: bb0(%0 : $Builtin.RawPointer, %1 : $*Builtin.UnsafeValueBuffer, %2 : $*Derived):
 // CHECK-NEXT: [[RESULT_ADDR:%.*]] = pointer_to_address %0 : $Builtin.RawPointer to [strict] $*@callee_owned () -> @out Int
 // CHECK-NEXT: [[T0:%.*]] = load_borrow %2 : $*Derived
 // CHECK-NEXT: [[SELF:%.*]] = upcast [[T0]] : $Derived to $Base
 // CHECK-NEXT: [[ADDR:%.*]] = ref_element_addr [[SELF]] : $Base, #Base.finalStoredFunction
-// CHECK-NEXT: [[RESULT:%.*]] = load [copy] [[ADDR]]
+// CHECK-NEXT: [[READ:%.*]] = begin_access [read] [dynamic] [[ADDR]] : $*@callee_owned () -> Int
+// CHECK-NEXT: [[RESULT:%.*]] = load [copy] [[READ]]
 // CHECK-NEXT: function_ref
 // CHECK-NEXT: [[REABSTRACTOR:%.*]] = function_ref @_T0SiIxd_SiIxr_TR : $@convention(thin) (@owned @callee_owned () -> Int) -> @out Int
 // CHECK-NEXT: [[T1:%.*]] = partial_apply [[REABSTRACTOR]]([[RESULT]])
+// CHECK-NEXT: end_access [[READ]] : $*@callee_owned () -> Int
 // CHECK-NEXT: store [[T1]] to [init] [[RESULT_ADDR]]
 // CHECK-NEXT: [[RESULT_PTR:%.*]] = address_to_pointer [[RESULT_ADDR]] : $*@callee_owned () -> @out Int to $Builtin.RawPointer
 // CHECK-NEXT: function_ref
@@ -141,6 +170,26 @@
 // CHECK-NEXT: end_borrow [[T0]] from %2
 // CHECK-NEXT: return [[T4]]
 
+// UNCHECKED-LABEL: sil private [transparent] [thunk] @_T017materializeForSet7DerivedCAA12AbstractableA2aDP19finalStoredFunction{{[_0-9a-zA-Z]*}}fmTW
+// UNCHECKED: bb0(%0 : $Builtin.RawPointer, %1 : $*Builtin.UnsafeValueBuffer, %2 : $*Derived):
+// UNCHECKED-NEXT: [[RESULT_ADDR:%.*]] = pointer_to_address %0 : $Builtin.RawPointer to [strict] $*@callee_owned () -> @out Int
+// UNCHECKED-NEXT: [[T0:%.*]] = load_borrow %2 : $*Derived
+// UNCHECKED-NEXT: [[SELF:%.*]] = upcast [[T0]] : $Derived to $Base
+// UNCHECKED-NEXT: [[ADDR:%.*]] = ref_element_addr [[SELF]] : $Base, #Base.finalStoredFunction
+// UNCHECKED-NEXT: [[RESULT:%.*]] = load [copy] [[ADDR]]
+// UNCHECKED-NEXT: function_ref
+// UNCHECKED-NEXT: [[REABSTRACTOR:%.*]] = function_ref @_T0SiIxd_SiIxr_TR : $@convention(thin) (@owned @callee_owned () -> Int) -> @out Int
+// UNCHECKED-NEXT: [[T1:%.*]] = partial_apply [[REABSTRACTOR]]([[RESULT]])
+// UNCHECKED-NEXT: store [[T1]] to [init] [[RESULT_ADDR]]
+// UNCHECKED-NEXT: [[RESULT_PTR:%.*]] = address_to_pointer [[RESULT_ADDR]] : $*@callee_owned () -> @out Int to $Builtin.RawPointer
+// UNCHECKED-NEXT: function_ref
+// UNCHECKED-NEXT: [[T2:%.*]] = function_ref @_T017materializeForSet7DerivedCAA12AbstractableA2aDP19finalStoredFunction6ResultQzycfmytfU_TW
+// UNCHECKED-NEXT: [[T3:%.*]] = thin_function_to_pointer [[T2]]
+// UNCHECKED-NEXT: [[CALLBACK:%.*]] = enum $Optional<Builtin.RawPointer>, #Optional.some!enumelt.1, [[T3]]
+// UNCHECKED-NEXT: [[T4:%.*]] = tuple ([[RESULT_PTR]] : $Builtin.RawPointer, [[CALLBACK]] : $Optional<Builtin.RawPointer>)
+// UNCHECKED-NEXT: end_borrow [[T0]] from %2
+// UNCHECKED-NEXT: return [[T4]]
+
 // CHECK-LABEL: sil private [transparent] @_T017materializeForSet7DerivedCAA12AbstractableA2aDP14staticFunction6ResultQzycfmZytfU_TW
 // CHECK: bb0([[ARG1:%.*]] : $Builtin.RawPointer, [[ARG2:%.*]] : $*Builtin.UnsafeValueBuffer, [[ARG3:%.*]] : $*@thick Derived.Type, [[ARG4:%.*]] : $@thick Derived.Type.Type):
 // CHECK-NEXT: [[SELF:%.*]] = load [trivial] [[ARG3]] : $*@thick Derived.Type
@@ -278,7 +327,9 @@
 // CHECK: bb0([[BUFFER:%.*]] : $Builtin.RawPointer, [[STORAGE:%.*]] : $*Builtin.UnsafeValueBuffer, [[SELF:%.*]] : $HasWeak):
 // CHECK:   [[T2:%.*]] = pointer_to_address [[BUFFER]] : $Builtin.RawPointer to [strict] $*Optional<HasWeak>
 // CHECK:   [[T0:%.*]] = ref_element_addr [[SELF]] : $HasWeak, #HasWeak.weakvar
-// CHECK:   [[T1:%.*]] = load_weak [[T0]] : $*@sil_weak Optional<HasWeak>
+// CHECK:   [[READ:%.*]] = begin_access [read] [dynamic] [[T0]] : $*@sil_weak Optional<HasWeak>
+// CHECK:   [[T1:%.*]] = load_weak [[READ]] : $*@sil_weak Optional<HasWeak>
+// CHECK:   end_access [[READ]] : $*@sil_weak Optional<HasWeak>
 // CHECK:   store [[T1]] to [init] [[T2]] : $*Optional<HasWeak>
 // CHECK:   [[BUFFER:%.*]] = address_to_pointer [[T2]]
 // CHECK:   [[T0:%.*]] = function_ref @_T017materializeForSet7HasWeakC7weakvarACSgXwfmytfU_ : $@convention(method) (Builtin.RawPointer, @inout Builtin.UnsafeValueBuffer, @inout HasWeak, @thick HasWeak.Type) -> () 
@@ -286,6 +337,18 @@
 // CHECK:   return [[T4]] : $(Builtin.RawPointer, Optional<Builtin.RawPointer>)
 // CHECK: }
 
+// UNCHECKED-LABEL: sil hidden [transparent] @_T017materializeForSet7HasWeakC7weakvarACSgXwfm : $@convention(method) (Builtin.RawPointer, @inout Builtin.UnsafeValueBuffer, @guaranteed HasWeak) -> (Builtin.RawPointer, Optional<Builtin.RawPointer>) {
+// UNCHECKED: bb0([[BUFFER:%.*]] : $Builtin.RawPointer, [[STORAGE:%.*]] : $*Builtin.UnsafeValueBuffer, [[SELF:%.*]] : $HasWeak):
+// UNCHECKED:   [[T2:%.*]] = pointer_to_address [[BUFFER]] : $Builtin.RawPointer to [strict] $*Optional<HasWeak>
+// UNCHECKED:   [[T0:%.*]] = ref_element_addr [[SELF]] : $HasWeak, #HasWeak.weakvar
+// UNCHECKED:   [[T1:%.*]] = load_weak [[T0]] : $*@sil_weak Optional<HasWeak>
+// UNCHECKED:   store [[T1]] to [init] [[T2]] : $*Optional<HasWeak>
+// UNCHECKED:   [[BUFFER:%.*]] = address_to_pointer [[T2]]
+// UNCHECKED:   [[T0:%.*]] = function_ref @_T017materializeForSet7HasWeakC7weakvarACSgXwfmytfU_ : $@convention(method) (Builtin.RawPointer, @inout Builtin.UnsafeValueBuffer, @inout HasWeak, @thick HasWeak.Type) -> () 
+// UNCHECKED:   [[T4:%.*]] = tuple ([[BUFFER]] : $Builtin.RawPointer, {{.*}} : $Optional<Builtin.RawPointer>)
+// UNCHECKED:   return [[T4]] : $(Builtin.RawPointer, Optional<Builtin.RawPointer>)
+// UNCHECKED: }
+
 // rdar://22109071
 // Test that we don't use materializeForSet from a protocol extension.
 protocol Magic {}
diff --git a/test/SILGen/newtype.swift b/test/SILGen/newtype.swift
index ae643fc..e728a52 100644
--- a/test/SILGen/newtype.swift
+++ b/test/SILGen/newtype.swift
@@ -20,13 +20,16 @@
 // CHECK-RAW: [[SELF_BOX:%[0-9]+]] = alloc_box ${ var ErrorDomain }, var, name "self"
 // CHECK-RAW: [[MARKED_SELF_BOX:%[0-9]+]] = mark_uninitialized [rootself] [[SELF_BOX]]
 // CHECK-RAW: [[PB_BOX:%[0-9]+]] = project_box [[MARKED_SELF_BOX]]
-// CHECK-RAW: [[BRIDGE_FN:%[0-9]+]] = function_ref @{{.*}}_bridgeToObjectiveC
 // CHECK-RAW: [[BORROWED_STR:%.*]] = begin_borrow [[STR]]
-// CHECK-RAW: [[BRIDGED:%[0-9]+]] = apply [[BRIDGE_FN]]([[BORROWED_STR]])
-// CHECK-RAW: end_borrow [[BORROWED_STR]] from [[STR]]
+// CHECK-RAW: [[COPIED_STR:%.*]] = copy_value [[BORROWED_STR]]
+// CHECK-RAW: [[BRIDGE_FN:%[0-9]+]] = function_ref @{{.*}}_bridgeToObjectiveC
+// CHECK-RAW: [[BORROWED_COPIED_STR:%.*]] = begin_borrow [[COPIED_STR]]
+// CHECK-RAW: [[BRIDGED:%[0-9]+]] = apply [[BRIDGE_FN]]([[BORROWED_COPIED_STR]])
 // CHECK-RAW: [[WRITE:%.*]] = begin_access [modify] [unknown] [[PB_BOX]]
 // CHECK-RAW: [[RAWVALUE_ADDR:%[0-9]+]] = struct_element_addr [[WRITE]]
 // CHECK-RAW: assign [[BRIDGED]] to [[RAWVALUE_ADDR]]
+// CHECK-RAW: end_borrow [[BORROWED_COPIED_STR]] from [[COPIED_STR]]
+// CHECK-RAW: end_borrow [[BORROWED_STR]] from [[STR]]
 
 func getRawValue(ed: ErrorDomain) -> String {
   return ed.rawValue
@@ -34,13 +37,12 @@
 
 // CHECK-RAW-LABEL: sil shared [serializable] @_T0SC11ErrorDomainV8rawValueSSfg
 // CHECK-RAW: bb0([[SELF:%[0-9]+]] : $ErrorDomain):
-// CHECK-RAW: [[FORCE_BRIDGE:%[0-9]+]] = function_ref @_forceBridgeFromObjectiveC_bridgeable
-// CHECK-RAW: [[STRING_RESULT_ADDR:%[0-9]+]] = alloc_stack $String
 // CHECK-RAW: [[STORED_VALUE:%[0-9]+]] = struct_extract [[SELF]] : $ErrorDomain, #ErrorDomain._rawValue
 // CHECK-RAW: [[STORED_VALUE_COPY:%.*]] = copy_value [[STORED_VALUE]]
-// CHECK-RAW: [[STRING_META:%[0-9]+]] = metatype $@thick String.Type
-// CHECK-RAW: apply [[FORCE_BRIDGE]]<String>([[STRING_RESULT_ADDR]], [[STORED_VALUE_COPY]], [[STRING_META]])
-// CHECK-RAW: [[STRING_RESULT:%[0-9]+]] = load [take] [[STRING_RESULT_ADDR]]
+// CHECK-RAW: [[BRIDGE_FN:%[0-9]+]] = function_ref @_T0SS10FoundationE36_unconditionallyBridgeFromObjectiveCSSSo8NSStringCSgFZ
+// CHECK-RAW: [[OPT_STORED_VALUE_COPY:%.*]] = enum $Optional<NSString>, #Optional.some!enumelt.1, [[STORED_VALUE_COPY]]
+// CHECK-RAW: [[STRING_META:%[0-9]+]] = metatype $@thin String.Type
+// CHECK-RAW: [[STRING_RESULT:%[0-9]+]] = apply [[BRIDGE_FN]]([[OPT_STORED_VALUE_COPY]], [[STRING_META]])
 // CHECK-RAW: return [[STRING_RESULT]]
 
 class ObjCTest {
@@ -57,3 +59,27 @@
   }  
 }
 
+// These use a bridging conversion with a specialization of a generic witness.
+// CHECK-RAW-LABEL: sil hidden @_T07newtype15bridgeToNewtypeSC8MyStringVyF
+func bridgeToNewtype() -> MyString {
+// CHECK-RAW: [[STRING:%.*]] = apply
+// CHECK-RAW: [[TO_NS:%.*]] = function_ref @_T0SS10FoundationE19_bridgeToObjectiveCSo8NSStringCyF
+// CHECK-RAW: [[BORROW:%.*]] = begin_borrow [[STRING]]
+// CHECK-RAW: [[NS:%.*]] = apply [[TO_NS]]([[BORROW]])
+// CHECK-RAW: [[TO_MY:%.*]] = function_ref @_T0s20_SwiftNewtypeWrapperPssAARzs21_ObjectiveCBridgeable8RawValueRpzlE026_unconditionallyBridgeFromD1CxAD_01_D5CTypeQZSgFZ : $@convention(method) <τ_0_0 where τ_0_0 : _SwiftNewtypeWrapper, τ_0_0.RawValue : _ObjectiveCBridgeable> (@owned Optional<τ_0_0.RawValue._ObjectiveCType>, @thick τ_0_0.Type)
+// CHECK-RAW: [[OPTNS:%.*]] = enum $Optional<NSString>, #Optional.some!enumelt.1, [[NS]]
+// CHECK-RAW: [[META:%.*]] = metatype $@thick MyString.Type
+// CHECK-RAW: apply [[TO_MY]]<MyString, String>({{.*}}, [[OPTNS]], [[META]])
+  return "foo" as NSString as MyString
+}
+
+// CHECK-RAW-LABEL: sil hidden @_T07newtype17bridgeFromNewtypeSSSC8MyStringV6string_tF
+func bridgeFromNewtype(string: MyString) -> String {
+// CHECK-RAW: [[FROM_MY:%.*]] = function_ref @_T0s20_SwiftNewtypeWrapperPssAARzs21_ObjectiveCBridgeable8RawValueRpzlE09_bridgeToD1CAD_01_D5CTypeQZyF : $@convention(method) <τ_0_0 where τ_0_0 : _SwiftNewtypeWrapper, τ_0_0.RawValue : _ObjectiveCBridgeable> (@in_guaranteed τ_0_0) -> @owned τ_0_0.RawValue._ObjectiveCType
+// CHECK-RAW: [[NS:%.*]] = apply [[FROM_MY]]<MyString, String>(
+// CHECK-RAW: [[FROM_NS:%.*]] = function_ref @_T0SS10FoundationE36_unconditionallyBridgeFromObjectiveCSSSo8NSStringCSgFZ
+// CHECK-RAW: [[OPTNS:%.*]] = enum $Optional<NSString>, #Optional.some!enumelt.1, [[NS]]
+// CHECK-RAW: [[META:%.*]] = metatype $@thin String.Type
+// CHECK-RAW: apply [[FROM_NS]]([[OPTNS]], [[META]])
+  return string as NSString as String
+}
diff --git a/test/SILGen/objc_blocks_bridging.swift b/test/SILGen/objc_blocks_bridging.swift
index 4080b71..15f51d0 100644
--- a/test/SILGen/objc_blocks_bridging.swift
+++ b/test/SILGen/objc_blocks_bridging.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-silgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -verify -emit-silgen -I %S/Inputs -disable-objc-attr-requires-foundation-module %s | %FileCheck %s
 
diff --git a/test/SILGen/objc_bridged_results.swift b/test/SILGen/objc_bridged_results.swift
index ff1a080..fd64419 100644
--- a/test/SILGen/objc_bridged_results.swift
+++ b/test/SILGen/objc_bridged_results.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-silgen-test-overlays
 
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-silgen %s -Xllvm -sil-print-debuginfo -import-objc-header %S/Inputs/objc_bridged_results.h | %FileCheck %s
diff --git a/test/SILGen/objc_bridging.swift b/test/SILGen/objc_bridging.swift
index e560ded..0379fda 100644
--- a/test/SILGen/objc_bridging.swift
+++ b/test/SILGen/objc_bridging.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-silgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-module -o %t -I %S/../Inputs/ObjCBridging %S/../Inputs/ObjCBridging/Appliances.swift
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -I %S/../Inputs/ObjCBridging -Xllvm -sil-full-demangle -emit-silgen %s | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-cpu --check-prefix=CHECK-%target-os-%target-cpu
@@ -343,7 +343,8 @@
 
   // CHECK-LABEL: sil hidden @_T013objc_bridging3BasC11strRealPropSSfg
   // CHECK:   [[PROP_ADDR:%.*]] = ref_element_addr %0 : {{.*}}, #Bas.strRealProp
-  // CHECK:   [[PROP:%.*]] = load [copy] [[PROP_ADDR]]
+  // CHECK:   [[READ:%.*]] = begin_access [read] [dynamic] [[PROP_ADDR]] : $*String
+  // CHECK:   [[PROP:%.*]] = load [copy] [[READ]]
 
 
   // CHECK-LABEL: sil hidden [thunk] @_T013objc_bridging3BasC11strRealPropSSfsTo : $@convention(objc_method) (NSString, Bas) -> () {
@@ -365,7 +366,8 @@
   // CHECK: bb0(%0 : $String, %1 : $Bas):
 
   // CHECK:   [[STR_ADDR:%.*]] = ref_element_addr %1 : {{.*}}, #Bas.strRealProp
-  // CHECK:   assign {{.*}} to [[STR_ADDR]]
+  // CHECK:   [[WRITE:%.*]] = begin_access [modify] [dynamic] [[STR_ADDR]] : $*String
+  // CHECK:   assign {{.*}} to [[WRITE]]
   // CHECK: }
 
   var strFakeProp: String {
diff --git a/test/SILGen/objc_currying.swift b/test/SILGen/objc_currying.swift
index 89e3332..0476b3b 100644
--- a/test/SILGen/objc_currying.swift
+++ b/test/SILGen/objc_currying.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-silgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-silgen %s | %FileCheck %s
 
diff --git a/test/SILGen/objc_dealloc.swift b/test/SILGen/objc_dealloc.swift
index 3062ed2..b39d862 100644
--- a/test/SILGen/objc_dealloc.swift
+++ b/test/SILGen/objc_dealloc.swift
@@ -65,7 +65,9 @@
   // CHECK-NEXT:   [[XOBJ:%[0-9]+]] = apply [[XINIT]]() : $@convention(thin) () -> @owned X
   // CHECK-NEXT:   [[BORROWED_SELF:%.*]] = begin_borrow [[SELF]]
   // CHECK-NEXT:   [[X:%[0-9]+]] = ref_element_addr [[BORROWED_SELF]] : $SwiftGizmo, #SwiftGizmo.x
-  // CHECK-NEXT:   assign [[XOBJ]] to [[X]] : $*X
+  // CHECK-NEXT:   [[WRITE:%.*]] = begin_access [modify] [dynamic] [[X]] : $*X
+  // CHECK-NEXT:   assign [[XOBJ]] to [[WRITE]] : $*X
+  // CHECK-NEXT:   end_access [[WRITE]] : $*X
   // CHECK-NEXT:   end_borrow [[BORROWED_SELF]] from [[SELF]]
   // CHECK-NEXT:   return [[SELF]] : $SwiftGizmo
 
diff --git a/test/SILGen/objc_dictionary_bridging.swift b/test/SILGen/objc_dictionary_bridging.swift
index ee7e2b8..703e486 100644
--- a/test/SILGen/objc_dictionary_bridging.swift
+++ b/test/SILGen/objc_dictionary_bridging.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-silgen-test-overlays
 
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-silgen %s | %FileCheck %s
diff --git a/test/SILGen/objc_disable_brigding.swift b/test/SILGen/objc_disable_brigding.swift
index db349f8..916374f 100644
--- a/test/SILGen/objc_disable_brigding.swift
+++ b/test/SILGen/objc_disable_brigding.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-silgen-test-overlays
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-module -o %t -I %S/../Inputs/ObjCBridging %S/../Inputs/ObjCBridging/Appliances.swift -I %t
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -I %S/../Inputs/ObjCBridging -disable-swift-bridge-attr -Xllvm -sil-full-demangle -emit-silgen %s | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-cpu --check-prefix=CHECK-%target-os-%target-cpu
diff --git a/test/SILGen/objc_error.swift b/test/SILGen/objc_error.swift
index 513dec8..e8299e3 100644
--- a/test/SILGen/objc_error.swift
+++ b/test/SILGen/objc_error.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-clang-importer-objc-overlays
 
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource -I %t) -emit-silgen %s | %FileCheck %s
@@ -61,7 +61,7 @@
 func test_cast_to_nserror() {
   let e = ErrorClass()
 
-  // CHECK: function_ref @swift_bridgeErrorToNSError
+  // CHECK: function_ref @swift_convertErrorToNSError
   let nsCoerced = e as Error as NSError
 
   // CHECK: unconditional_checked_cast_addr {{.*}} AnyObject in {{%.*}} : $*AnyObject to NSError in {{%.*}} : $*NSError
diff --git a/test/SILGen/objc_final.swift b/test/SILGen/objc_final.swift
index f5a6ac1..92d75e3 100644
--- a/test/SILGen/objc_final.swift
+++ b/test/SILGen/objc_final.swift
@@ -22,9 +22,11 @@
 
   // Final @objc properties are still accessed directly.
   // CHECK: [[PROP:%.*]] = ref_element_addr {{%.*}} : $Foo, #Foo.prop
-  // CHECK: load [trivial] [[PROP]] : $*Int
+  // CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[PROP]] : $*Int
+  // CHECK: load [trivial] [[READ]] : $*Int
   let prop = x.prop
   // CHECK: [[PROP:%.*]] = ref_element_addr {{%.*}} : $Foo, #Foo.prop
-  // CHECK: assign {{%.*}} to [[PROP]] : $*Int
+  // CHECK: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[PROP]] : $*Int
+  // CHECK: assign {{%.*}} to [[WRITE]] : $*Int
   x.prop = prop
 }
diff --git a/test/SILGen/objc_nonnull_lie_hack.swift b/test/SILGen/objc_nonnull_lie_hack.swift
index 4cb7f31..fbe2dc5 100644
--- a/test/SILGen/objc_nonnull_lie_hack.swift
+++ b/test/SILGen/objc_nonnull_lie_hack.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t/APINotes
-// RUN: mkdir -p %t/APINotes
+// RUN: %empty-directory(%t/APINotes)
 // RUN: %clang_apinotes -yaml-to-binary %S/Inputs/gizmo.apinotes -o %t/APINotes/gizmo.apinotesc
 // RUN: %target-swift-frontend -emit-silgen -sdk %S/Inputs -I %S/Inputs -I %t/APINotes -enable-source-import -primary-file %s | %FileCheck -check-prefix=SILGEN %s
 // RUN: %target-swift-frontend -emit-sil -O -sdk %S/Inputs -I %S/Inputs -I %t/APINotes -enable-source-import -primary-file %s | %FileCheck -check-prefix=OPT %s
diff --git a/test/SILGen/objc_properties.swift b/test/SILGen/objc_properties.swift
index bdc8eef..4131834 100644
--- a/test/SILGen/objc_properties.swift
+++ b/test/SILGen/objc_properties.swift
@@ -39,7 +39,9 @@
   init(other : A, x : Int) {
     // CHECK: [[BORROWED_SELF:%.*]] = begin_borrow [[SELF]]
     // CHECK: [[SELF_A:%[0-9]+]] = ref_element_addr [[BORROWED_SELF]] : $A, #A.prop
-    // CHECK: assign %1 to [[SELF_A]]
+    // CHECK: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[SELF_A]] : $*Int
+    // CHECK: assign %1 to [[WRITE]]
+    // CHECK: end_access [[WRITE]] : $*Int
     // CHECK: end_borrow [[BORROWED_SELF]] from [[SELF]]
     prop = x
 
@@ -240,7 +242,7 @@
     return nil
   }
 
-  lazy var window = instanceMethod()
+  lazy var window = self.instanceMethod()
 }
 
 // CHECK-LABEL: sil hidden @_T015objc_properties15HasLazyPropertyC6windowSo8NSObjectCSgfg : $@convention(method) (@guaranteed HasLazyProperty) -> @owned Optional<NSObject> {
diff --git a/test/SILGen/objc_required_designated_init.swift b/test/SILGen/objc_required_designated_init.swift
index fe74b3c..2f898cd 100644
--- a/test/SILGen/objc_required_designated_init.swift
+++ b/test/SILGen/objc_required_designated_init.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module %S/Inputs/objc_required_designated_init_2.swift -module-name Booms -o %t/Booms.swiftmodule -import-objc-header %S/Inputs/objc_required_designated_init.h
 // RUN: %target-swift-frontend -I %t -emit-silgen -verify %s -import-objc-header %S/Inputs/objc_required_designated_init.h
 
diff --git a/test/SILGen/objc_set_bridging.swift b/test/SILGen/objc_set_bridging.swift
index 132e70a..9a10f0c 100644
--- a/test/SILGen/objc_set_bridging.swift
+++ b/test/SILGen/objc_set_bridging.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %build-silgen-test-overlays
 
 // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) -emit-silgen %s | %FileCheck %s
diff --git a/test/SILGen/objc_thunks.swift b/test/SILGen/objc_thunks.swift
index c43a24d..0cd4eb9 100644
--- a/test/SILGen/objc_thunks.swift
+++ b/test/SILGen/objc_thunks.swift
@@ -90,7 +90,9 @@
   // CHECK: bb0(%0 : $Hoozit):
   // CHECK-NEXT:   debug_value %0
   // CHECK-NEXT:   [[ADDR:%.*]] = ref_element_addr %0 : {{.*}}, #Hoozit.typicalProperty
-  // CHECK-NEXT:   [[RES:%.*]] = load [copy] [[ADDR]] {{.*}}
+  // CHECK-NEXT:   [[READ:%.*]] = begin_access [read] [dynamic] [[ADDR]] : $*Gizmo
+  // CHECK-NEXT:   [[RES:%.*]] = load [copy] [[READ]] {{.*}}
+  // CHECK-NEXT:   end_access [[READ]] : $*Gizmo
   // CHECK-NEXT:   return [[RES]]
 
   // -- setter
@@ -104,7 +106,7 @@
   // CHECK:   [[RES:%.*]] = apply [[FR]]([[VALUE_COPY]], [[BORROWED_THIS_COPY]])
   // CHECK:   end_borrow [[BORROWED_THIS_COPY]] from [[THIS_COPY]]
   // CHECK:   destroy_value [[THIS_COPY]]
-  // CHECK:   return [[RES]] : $(), scope {{.*}} // id: {{.*}} line:[[@LINE-32]]:13:auto_gen
+  // CHECK:   return [[RES]] : $(), scope {{.*}} // id: {{.*}} line:[[@LINE-34]]:13:auto_gen
   // CHECK: } // end sil function '_T011objc_thunks6HoozitC15typicalPropertySo5GizmoCfsTo'
 
   // CHECK-LABEL: sil hidden @_T011objc_thunks6HoozitC15typicalPropertySo5GizmoCfs
@@ -112,7 +114,9 @@
   // CHECK:   [[BORROWED_ARG0:%.*]] = begin_borrow [[ARG0]]
   // CHECK:   [[ARG0_COPY:%.*]] = copy_value [[BORROWED_ARG0]]
   // CHECK:   [[ADDR:%.*]] = ref_element_addr [[ARG1]] : {{.*}}, #Hoozit.typicalProperty
-  // CHECK:   assign [[ARG0_COPY]] to [[ADDR]] : $*Gizmo
+  // CHECK:   [[WRITE:%.*]] = begin_access [modify] [dynamic] [[ADDR]] : $*Gizmo
+  // CHECK:   assign [[ARG0_COPY]] to [[WRITE]] : $*Gizmo
+  // CHECK:   end_access [[WRITE]] : $*Gizmo
   // CHECK:   end_borrow [[BORROWED_ARG0]] from [[ARG0]]
   // CHECK:   destroy_value [[ARG0]]
   // CHECK: } // end sil function '_T011objc_thunks6HoozitC15typicalPropertySo5GizmoCfs'
@@ -135,7 +139,9 @@
   // CHECK-LABEL: sil hidden @_T011objc_thunks6HoozitC12copyPropertySo5GizmoCfg
   // CHECK: bb0(%0 : $Hoozit):
   // CHECK:        [[ADDR:%.*]] = ref_element_addr %0 : {{.*}}, #Hoozit.copyProperty
-  // CHECK-NEXT:   [[RES:%.*]] = load [copy] [[ADDR]]
+  // CHECK-NEXT:   [[READ:%.*]] = begin_access [read] [dynamic] [[ADDR]] : $*Gizmo
+  // CHECK-NEXT:   [[RES:%.*]] = load [copy] [[READ]]
+  // CHECK-NEXT:   end_access [[READ]] : $*Gizmo
   // CHECK-NEXT:   return [[RES]]
 
   // -- setter is normal
@@ -156,7 +162,9 @@
   // CHECK:   [[BORROWED_ARG1:%.*]] = begin_borrow [[ARG1]]
   // CHECK:   [[ARG1_COPY:%.*]] = copy_value [[BORROWED_ARG1]]
   // CHECK:   [[ADDR:%.*]] = ref_element_addr [[SELF]] : {{.*}}, #Hoozit.copyProperty
-  // CHECK:   assign [[ARG1_COPY]] to [[ADDR]]
+  // CHECK:   [[WRITE:%.*]] = begin_access [modify] [dynamic] [[ADDR]] : $*Gizmo
+  // CHECK:   assign [[ARG1_COPY]] to [[WRITE]]
+  // CHECK:   end_access [[WRITE]] : $*Gizmo
   // CHECK:   end_borrow [[BORROWED_ARG1]] from [[ARG1]]
   // CHECK:   destroy_value [[ARG1]]
   // CHECK: } // end sil function '_T011objc_thunks6HoozitC12copyPropertySo5GizmoCfs'
diff --git a/test/SILGen/opaque_values_silgen.swift b/test/SILGen/opaque_values_silgen.swift
index 19f1ef9..9ed9dd4 100644
--- a/test/SILGen/opaque_values_silgen.swift
+++ b/test/SILGen/opaque_values_silgen.swift
@@ -441,7 +441,8 @@
 // CHECK-LABEL: sil hidden @_T020opaque_values_silgen21s190___return_foo_varAA3Foo_pyF : $@convention(thin) () -> @out Foo {
 // CHECK: bb0:
 // CHECK:   [[GLOBAL:%.*]] = global_addr {{.*}} : $*Foo
-// CHECK:   [[LOAD_GLOBAL:%.*]] = load [copy] [[GLOBAL]] : $*Foo
+// CHECK:   [[READ:%.*]] = begin_access [read] [dynamic] [[GLOBAL]] : $*Foo
+// CHECK:   [[LOAD_GLOBAL:%.*]] = load [copy] [[READ]] : $*Foo
 // CHECK:   return [[LOAD_GLOBAL]] : $Foo
 // CHECK-LABEL: } // end sil function '_T020opaque_values_silgen21s190___return_foo_varAA3Foo_pyF'
 func s190___return_foo_var() -> Foo {
@@ -453,7 +454,8 @@
 // CHECK-LABEL: sil hidden @_T020opaque_values_silgen21s200______use_foo_varyyF : $@convention(thin) () -> () {
 // CHECK: bb0:
 // CHECK:   [[GLOBAL:%.*]] = global_addr {{.*}} : $*Foo
-// CHECK:   [[LOAD_GLOBAL:%.*]] = load [copy] [[GLOBAL]] : $*Foo
+// CHECK:   [[READ:%.*]] = begin_access [read] [dynamic] [[GLOBAL]] : $*Foo
+// CHECK:   [[LOAD_GLOBAL:%.*]] = load [copy] [[READ]] : $*Foo
 // CHECK:   [[OPEN_VAR:%.*]] = open_existential_opaque [[LOAD_GLOBAL]] : $Foo
 // CHECK:   [[WITNESS:%.*]] = witness_method $@opened
 // CHECK:   apply [[WITNESS]]
@@ -864,7 +866,8 @@
 // CHECK-LABEL: sil hidden @_T020opaque_values_silgen21s410__globalRvalueGetS2iF : $@convention(thin) (Int) -> Int {
 // CHECK: bb0([[ARG:%.*]] : $Int):
 // CHECK:   [[GLOBAL_ADDR:%.*]] = global_addr @_T020opaque_values_silgen16subscriptableGetAA013SubscriptableE0_pv : $*SubscriptableGet
-// CHECK:   [[OPEN_ARG:%.*]] = open_existential_addr immutable_access [[GLOBAL_ADDR]] : $*SubscriptableGet to $*@opened
+// CHECK:   [[READ:%.*]] = begin_access [read] [dynamic] [[GLOBAL_ADDR]] : $*SubscriptableGet
+// CHECK:   [[OPEN_ARG:%.*]] = open_existential_addr immutable_access [[READ]] : $*SubscriptableGet to $*@opened
 // CHECK:   [[GET_OPAQUE:%.*]] = load [copy] [[OPEN_ARG]] : $*@opened
 // CHECK:   [[RETVAL:%.*]] = apply %{{.*}}<@opened({{.*}}) SubscriptableGet>([[ARG]], [[GET_OPAQUE]]) : $@convention(witness_method) <τ_0_0 where τ_0_0 : SubscriptableGet> (Int, @in_guaranteed τ_0_0) -> Int
 // CHECK:   destroy_value [[GET_OPAQUE]]
@@ -879,7 +882,8 @@
 // CHECK-LABEL: sil hidden @_T020opaque_values_silgen21s420__globalLvalueGetS2iF : $@convention(thin) (Int) -> Int {
 // CHECK: bb0([[ARG:%.*]] : $Int):
 // CHECK:   [[GLOBAL_ADDR:%.*]] = global_addr @_T020opaque_values_silgen19subscriptableGetSetAA013SubscriptableeF0_pv : $*SubscriptableGetSet
-// CHECK:   [[OPEN_ARG:%.*]] = open_existential_addr immutable_access [[GLOBAL_ADDR]] : $*SubscriptableGetSet to $*@opened
+// CHECK:   [[READ:%.*]] = begin_access [read] [dynamic] [[GLOBAL_ADDR]] : $*SubscriptableGetSet
+// CHECK:   [[OPEN_ARG:%.*]] = open_existential_addr immutable_access [[READ]] : $*SubscriptableGetSet to $*@opened
 // CHECK:   [[GET_OPAQUE:%.*]] = load [copy] [[OPEN_ARG]] : $*@opened
 // CHECK:   [[RETVAL:%.*]] = apply %{{.*}}<@opened({{.*}}) SubscriptableGetSet>([[ARG]], [[GET_OPAQUE]]) : $@convention(witness_method) <τ_0_0 where τ_0_0 : SubscriptableGetSet> (Int, @in_guaranteed τ_0_0) -> Int
 // CHECK:   destroy_value [[GET_OPAQUE]]
diff --git a/test/SILGen/partial_apply_protocol_class_refinement_method.swift b/test/SILGen/partial_apply_protocol_class_refinement_method.swift
index 04b9e35..5f1f3b2 100644
--- a/test/SILGen/partial_apply_protocol_class_refinement_method.swift
+++ b/test/SILGen/partial_apply_protocol_class_refinement_method.swift
@@ -6,8 +6,10 @@
 // CHECK-LABEL: sil hidden @_T046partial_apply_protocol_class_refinement_method0A5ApplyyycAA1Q_pF
 func partialApply(_ q: Q) -> () -> () {
   // CHECK: [[OPENED:%.*]] = open_existential_ref
-  // CHECK: store [[OPENED]] to [init] [[TMP:%.*]] :
-  // CHECK: copy_addr [[TMP:%.*]] to [initialization] [[CONSUMABLE_TMP:%.*]] :
-  // CHECK: apply {{%.*}}<{{.*}}>([[CONSUMABLE_TMP]])
+  // CHECK: [[COPY:%.*]] = copy_value [[OPENED]]
+  // CHECK: [[TMP:%.*]] = alloc_stack 
+  // CHECK: store [[COPY]] to [init] [[TMP:%.*]] :
+  // CHECK: apply {{%.*}}<{{.*}}>([[TMP]])
+  // CHECK-NEXT: dealloc_stack [[TMP]]
   return q.foo
 }
diff --git a/test/SILGen/partial_apply_super.swift b/test/SILGen/partial_apply_super.swift
index 2784489..fa193b1 100644
--- a/test/SILGen/partial_apply_super.swift
+++ b/test/SILGen/partial_apply_super.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -I %t -emit-module -emit-module-path=%t/resilient_struct.swiftmodule -module-name resilient_struct %S/../Inputs/resilient_struct.swift
 // RUN: %target-swift-frontend -I %t -emit-module -emit-module-path=%t/resilient_class.swiftmodule -module-name resilient_class %S/../Inputs/resilient_class.swift
 // RUN: %target-swift-frontend -enable-resilience -emit-silgen -parse-as-library -I %t %s | %FileCheck %s
diff --git a/test/SILGen/polymorphic_inout_aliasing.swift b/test/SILGen/polymorphic_inout_aliasing.swift
index 5b04f3c..c228089 100644
--- a/test/SILGen/polymorphic_inout_aliasing.swift
+++ b/test/SILGen/polymorphic_inout_aliasing.swift
@@ -11,6 +11,8 @@
   }
 
   func test() {
+    // expected-warning@+2 {{overlapping accesses to 'finalStored', but modification requires exclusive access; consider copying to a local variable}}
+    // expected-note@+1 {{conflicting access is here}}
     swap(&self.finalStored[0], &self.finalStored[1])
     swap(&self.overridableStored[0], &self.overridableStored[1])
     swap(&self.computed[0], &self.computed[1]) // expected-error{{invalid aliasing}} expected-note{{concurrent writeback}}
@@ -22,7 +24,7 @@
 }
 
 func testProtocol<T: Storied>(x: inout T) {
-  // expected-warning@+2 {{simultaneous accesses to parameter 'x', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-warning@+2 {{overlapping accesses to 'x', but modification requires exclusive access; consider copying to a local variable}}
   // expected-note@+1 {{conflicting access is here}}
   swap(&x.protocolRequirement[0], &x.protocolRequirement[1])
 }
diff --git a/test/SILGen/properties.swift b/test/SILGen/properties.swift
index 112523a..6017e2e 100644
--- a/test/SILGen/properties.swift
+++ b/test/SILGen/properties.swift
@@ -325,6 +325,25 @@
 // CHECK-: sil private [[PROP_GET_CLOSURE]]
 // CHECK: bb0(%{{[0-9]+}} : $Int):
 
+func logical_generic_local_get<T>(_ x: Int, _: T) {
+  var prop1: Int {
+    get {
+      return x
+    }
+  }
+
+  _ = prop1
+
+  var prop2: Int {
+    get {
+      _ = T.self
+      return x
+    }
+  }
+
+  _ = prop2
+}
+
 // CHECK-LABEL: sil hidden @_T010properties26logical_local_captured_get{{[_0-9a-zA-Z]*}}F
 func logical_local_captured_get(_ x: Int) -> Int {
   var prop : Int {
@@ -533,7 +552,9 @@
       // CHECK-NEXT: [[ZEROFN:%.*]] = function_ref @_T010properties4zero{{[_0-9a-zA-Z]*}}fau
       // CHECK-NEXT: [[ZERORAW:%.*]] = apply [[ZEROFN]]() : $@convention(thin) () -> Builtin.RawPointer
       // CHECK-NEXT: [[ZEROADDR:%.*]] = pointer_to_address [[ZERORAW]] : $Builtin.RawPointer to [strict] $*Int
-      // CHECK-NEXT: [[ZERO:%.*]] = load [trivial] [[ZEROADDR]]
+      // CHECK-NEXT: [[READ:%.*]] = begin_access [read] [dynamic] [[ZEROADDR]] : $*Int
+      // CHECK-NEXT: [[ZERO:%.*]] = load [trivial] [[READ]]
+      // CHECK-NEXT: end_access [[READ]] : $*Int
       // CHECK-NEXT: [[WRITE:%.*]] = begin_access [modify] [unknown] %1
       // CHECK-NEXT: [[AADDR:%.*]] = struct_element_addr [[WRITE]] : $*DidSetWillSetTests, #DidSetWillSetTests.a
       // CHECK-NEXT: assign [[ZERO]] to [[AADDR]]
@@ -652,7 +673,26 @@
 // CHECK: [[PB:%.*]] = project_box [[BOX]]
 // CHECK: store [[ARG]] to [trivial] [[PB]]
 
+func local_generic_observing_property<T>(_ arg: Int, _: T) {
+  var localproperty1: Int = arg {
+    didSet {
+      takeInt(localproperty1)
+    }
+  }
+  
+  takeInt(localproperty1)
+  localproperty1 = arg
 
+  var localproperty2: Int = arg {
+    didSet {
+      _ = T.self
+      takeInt(localproperty2)
+    }
+  }
+  
+  takeInt(localproperty2)
+  localproperty2 = arg
+}
 
 
 // <rdar://problem/16006333> observing properties don't work in @objc classes
@@ -692,6 +732,7 @@
         
         // CHECK:  [[BASEPTR:%[0-9]+]] = upcast {{.*}} : $rdar16151899Derived to $rdar16151899Base
         // CHECK: load{{.*}}Int
+        // CHECK-NEXT: end_access {{.*}} : $*Int
         // CHECK-NEXT: [[SETTER:%[0-9]+]] = class_method {{.*}} : $rdar16151899Base, #rdar16151899Base.x!setter.1 : (rdar16151899Base)
         // CHECK-NEXT: apply [[SETTER]]({{.*}}, [[BASEPTR]]) 
     }
@@ -908,7 +949,8 @@
   let _ = x.y
   // CHECK:   [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
   // CHECK:   [[Z:%.*]] = ref_element_addr [[BORROWED_ARG]] : $GenericClass<String>, #GenericClass.z
-  // CHECK:   [[LOADED_Z:%.*]] = load [copy] [[Z]] : $*String
+  // CHECK:   [[READ:%.*]] = begin_access [read] [dynamic] [[Z]] : $*String
+  // CHECK:   [[LOADED_Z:%.*]] = load [copy] [[READ]] : $*String
   // CHECK:   destroy_value [[LOADED_Z]]
   // CHECK:   end_borrow [[BORROWED_ARG]] from [[ARG]]
   // CHECK:   destroy_value [[ARG]]
@@ -920,7 +962,8 @@
   // CHECK: bb0([[ARG:%.*]] : $GenericClass<U>):
   // CHECK:   [[BORROWED_ARG:%.*]] = begin_borrow [[ARG]]
   // CHECK:   [[Z:%.*]] = ref_element_addr [[BORROWED_ARG]] : $GenericClass<U>, #GenericClass.z
-  // CHECK:   copy_addr [[Z]] {{.*}} : $*U
+  // CHECK:   [[READ:%.*]] = begin_access [read] [dynamic] [[Z]] : $*U
+  // CHECK:   copy_addr [[READ]] {{.*}} : $*U
   // CHECK:   end_borrow [[BORROWED_ARG]] from [[ARG]]
   let _ = x.z
 }
@@ -937,7 +980,9 @@
 // CHECK:       bb0([[ARG:%.*]] : $ClassWithLetProperty):
 // CHECK-NEXT:    debug_value
 // CHECK-NEXT:    [[PTR:%[0-9]+]] = ref_element_addr [[ARG]] : $ClassWithLetProperty, #ClassWithLetProperty.p
-// CHECK-NEXT:    [[VAL:%[0-9]+]] = load [trivial] [[PTR]] : $*Int
+// CHECK-NEXT:    [[READ:%.*]] = begin_access [read] [dynamic] [[PTR]] : $*Int
+// CHECK-NEXT:    [[VAL:%[0-9]+]] = load [trivial] [[READ]] : $*Int
+// CHECK-NEXT:    end_access [[READ]] : $*Int
 // CHECK-NEXT:   return [[VAL]] : $Int
 
 
@@ -965,7 +1010,8 @@
 // Initialization of the pi field: no copy_values/releases.
 // CHECK:  [[SELF:%[0-9]+]] = load_borrow [[PB_BOX]] : $*r19254812Derived
 // CHECK-NEXT:  [[PIPTR:%[0-9]+]] = ref_element_addr [[SELF]] : $r19254812Derived, #r19254812Derived.pi
-// CHECK-NEXT:  assign {{.*}} to [[PIPTR]] : $*Double
+// CHECK-NEXT:  [[WRITE:%.*]] = begin_access [modify] [dynamic] [[PIPTR]] : $*Double
+// CHECK-NEXT:  assign {{.*}} to [[WRITE]] : $*Double
 
 // CHECK-NOT: destroy_value
 // CHECK-NOT: copy_value
@@ -973,7 +1019,9 @@
 // Load of the pi field: no copy_values/releases.
 // CHECK:  [[SELF:%[0-9]+]] = load_borrow [[PB_BOX]] : $*r19254812Derived
 // CHECK-NEXT:  [[PIPTR:%[0-9]+]] = ref_element_addr [[SELF]] : $r19254812Derived, #r19254812Derived.pi
-// CHECK-NEXT:  {{.*}} = load [trivial] [[PIPTR]] : $*Double
+// CHECK-NEXT:  [[READ:%.*]] = begin_access [read] [dynamic] [[PIPTR]] : $*Double
+// CHECK-NEXT:  {{.*}} = load [trivial] [[READ]] : $*Double
+// CHECK-NEXT:  end_access [[READ]] : $*Double
 // CHECK: return
 }
 
@@ -995,7 +1043,8 @@
   // CHECK-NOT: copy_value
   
   // CHECK: [[FPTR:%[0-9]+]] = ref_element_addr %0 : $RedundantSelfRetains, #RedundantSelfRetains.f
-  // CHECK-NEXT: assign {{.*}} to [[FPTR]] : $*RedundantSelfRetains
+  // CHECK-NEXT: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[FPTR]] : $*RedundantSelfRetains
+  // CHECK-NEXT: assign {{.*}} to [[WRITE]] : $*RedundantSelfRetains
 
   // CHECK: return
 }
diff --git a/test/SILGen/protocol_class_refinement.swift b/test/SILGen/protocol_class_refinement.swift
index aa83467..a70e020 100644
--- a/test/SILGen/protocol_class_refinement.swift
+++ b/test/SILGen/protocol_class_refinement.swift
@@ -31,11 +31,11 @@
   // CHECK: [[XBOX:%.*]] = alloc_box $<τ_0_0 where τ_0_0 : ObjectUID> { var τ_0_0 } <T>
   // CHECK: [[PB:%.*]] = project_box [[XBOX]]
   // -- call x.uid()
+  // CHECK: [[GET_UID:%.*]] = witness_method $T, #UID.uid!1
   // CHECK: [[READ:%.*]] = begin_access [read] [unknown] [[PB]] : $*T
   // CHECK: [[X:%.*]] = load [copy] [[READ]]
   // CHECK: [[X_TMP:%.*]] = alloc_stack
   // CHECK: store [[X]] to [init] [[X_TMP]]
-  // CHECK: [[GET_UID:%.*]] = witness_method $T, #UID.uid!1
   // CHECK: [[UID:%.*]] = apply [[GET_UID]]<T>([[X_TMP]])
   // CHECK: [[X2:%.*]] = load [take] [[X_TMP]]
   // CHECK: destroy_value [[X2]]
@@ -46,11 +46,11 @@
   x.clsid = x.uid()
 
   // -- call x.uid()
+  // CHECK: [[GET_UID:%.*]] = witness_method $T, #UID.uid!1
   // CHECK: [[READ:%.*]] = begin_access [read] [unknown] [[PB]] : $*T
   // CHECK: [[X:%.*]] = load [copy] [[READ]]
   // CHECK: [[X_TMP:%.*]] = alloc_stack
   // CHECK: store [[X]] to [init] [[X_TMP]]
-  // CHECK: [[GET_UID:%.*]] = witness_method $T, #UID.uid!1
   // CHECK: [[UID:%.*]] = apply [[GET_UID]]<T>([[X_TMP]])
   // CHECK: [[X2:%.*]] = load [take] [[X_TMP]]
   // CHECK: destroy_value [[X2]]
@@ -61,11 +61,14 @@
   x.nextCLSID = x.uid()
 
   // -- call x.uid()
-  // CHECK: [[X1:%.*]] = load [copy] [[PB]]
-  // CHECK: [[X:%.*]] = load [copy] [[PB]]
+  // CHECK: [[READ1:%.*]] = begin_access [read] [unknown] [[PB]] : $*T
+  // CHECK: [[X1:%.*]] = load [copy] [[READ1]]
+  // CHECK: [[GET_UID:%.*]] = witness_method $T, #UID.uid!1
+  // CHECK: [[READ:%.*]] = begin_access [read] [unknown] [[PB]] : $*T
+  // CHECK: [[X:%.*]] = load [copy] [[READ]]
   // CHECK: [[X_TMP:%.*]] = alloc_stack
   // CHECK: store [[X]] to [init] [[X_TMP]]
-  // CHECK: [[GET_UID:%.*]] = witness_method $T, #UID.uid!1
+
   // CHECK: [[UID:%.*]] = apply [[GET_UID]]<T>([[X_TMP]])
   // CHECK: [[X2:%.*]] = load [take] [[X_TMP]]
   // CHECK: destroy_value [[X2]]
@@ -75,6 +78,8 @@
   // CHECK: destroy_value [[X1]]
   x.secondNextCLSID = x.uid()
   return (x.iid, x.clsid, x.nextCLSID, x.secondNextCLSID)
+
+  // CHECK: return
 }
 
 // CHECK-LABEL: sil hidden @_T025protocol_class_refinement16getBaseObjectUID{{[_0-9a-zA-Z]*}}F
@@ -83,11 +88,11 @@
   // CHECK: [[XBOX:%.*]] = alloc_box $<τ_0_0 where τ_0_0 : Base, τ_0_0 : UID> { var τ_0_0 } <T>
   // CHECK: [[PB:%.*]] = project_box [[XBOX]]
   // -- call x.uid()
+  // CHECK: [[GET_UID:%.*]] = witness_method $T, #UID.uid!1
   // CHECK: [[READ:%.*]] = begin_access [read] [unknown] [[PB]] : $*T
   // CHECK: [[X:%.*]] = load [copy] [[READ]]
   // CHECK: [[X_TMP:%.*]] = alloc_stack
   // CHECK: store [[X]] to [init] [[X_TMP]]
-  // CHECK: [[GET_UID:%.*]] = witness_method $T, #UID.uid!1
   // CHECK: [[UID:%.*]] = apply [[GET_UID]]<T>([[X_TMP]])
   // CHECK: [[X2:%.*]] = load [take] [[X_TMP]]
   // CHECK: destroy_value [[X2]]
@@ -98,11 +103,11 @@
   x.clsid = x.uid()
 
   // -- call x.uid()
+  // CHECK: [[GET_UID:%.*]] = witness_method $T, #UID.uid!1
   // CHECK: [[READ:%.*]] = begin_access [read] [unknown] [[PB]] : $*T
   // CHECK: [[X:%.*]] = load [copy] [[READ]]
   // CHECK: [[X_TMP:%.*]] = alloc_stack
   // CHECK: store [[X]] to [init] [[X_TMP]]
-  // CHECK: [[GET_UID:%.*]] = witness_method $T, #UID.uid!1
   // CHECK: [[UID:%.*]] = apply [[GET_UID]]<T>([[X_TMP]])
   // CHECK: [[X2:%.*]] = load [take] [[X_TMP]]
   // CHECK: destroy_value [[X2]]
@@ -112,4 +117,6 @@
   // CHECK: apply [[SET_NEXTCLSID]]<T>([[UID]], [[WRITE]])
   x.nextCLSID = x.uid()
   return (x.iid, x.clsid, x.nextCLSID)
+
+  // CHECK: return
 }
diff --git a/test/SILGen/protocol_resilience.swift b/test/SILGen/protocol_resilience.swift
index 553e5ed..bf8ae48 100644
--- a/test/SILGen/protocol_resilience.swift
+++ b/test/SILGen/protocol_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_protocol.swiftmodule -module-name=resilient_protocol %S/../Inputs/resilient_protocol.swift
 // RUN: %target-swift-frontend -I %t -emit-silgen -enable-resilience %s | %FileCheck %s
 
diff --git a/test/SILGen/protocols.swift b/test/SILGen/protocols.swift
index def6728..c0c05ee 100644
--- a/test/SILGen/protocols.swift
+++ b/test/SILGen/protocols.swift
@@ -22,12 +22,14 @@
 // CHECK-LABEL: sil hidden @{{.*}}use_subscript_rvalue_get
 // CHECK: bb0(%0 : $Int):
 // CHECK: [[GLOB:%[0-9]+]] = global_addr @_T09protocols16subscriptableGetAA013SubscriptableC0_pv : $*SubscriptableGet
-// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr immutable_access [[GLOB]] : $*SubscriptableGet to $*[[OPENED:@opened(.*) SubscriptableGet]]
+// CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[GLOB]] : $*SubscriptableGet
+// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr immutable_access [[READ]] : $*SubscriptableGet to $*[[OPENED:@opened(.*) SubscriptableGet]]
 // CHECK: [[ALLOCSTACK:%[0-9]+]] = alloc_stack $[[OPENED]]
 // CHECK: copy_addr [[PROJ]] to [initialization] [[ALLOCSTACK]] : $*[[OPENED]]
 // CHECK-NEXT: [[METH:%[0-9]+]] = witness_method $[[OPENED]], #SubscriptableGet.subscript!getter.1
 // CHECK-NEXT: [[RESULT:%[0-9]+]] = apply [[METH]]<[[OPENED]]>(%0, [[ALLOCSTACK]])
 // CHECK-NEXT: destroy_addr [[ALLOCSTACK]]
+// CHECK-NEXT: end_access [[READ]] : $*SubscriptableGet
 // CHECK-NEXT: dealloc_stack [[ALLOCSTACK]] : $*[[OPENED]]
 // CHECK-NEXT: return [[RESULT]]
 
@@ -38,12 +40,14 @@
 // CHECK-LABEL: sil hidden @{{.*}}use_subscript_lvalue_get
 // CHECK: bb0(%0 : $Int):
 // CHECK: [[GLOB:%[0-9]+]] = global_addr @_T09protocols19subscriptableGetSetAA013SubscriptablecD0_pv : $*SubscriptableGetSet
-// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr immutable_access [[GLOB]] : $*SubscriptableGetSet to $*[[OPENED:@opened(.*) SubscriptableGetSet]]
+// CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[GLOB]] : $*SubscriptableGetSet
+// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr immutable_access [[READ]] : $*SubscriptableGetSet to $*[[OPENED:@opened(.*) SubscriptableGetSet]]
 // CHECK: [[ALLOCSTACK:%[0-9]+]] = alloc_stack $[[OPENED]]
 // CHECK: copy_addr [[PROJ]] to [initialization] [[ALLOCSTACK]] : $*[[OPENED]]
 // CHECK-NEXT: [[METH:%[0-9]+]] = witness_method $[[OPENED]], #SubscriptableGetSet.subscript!getter.1
 // CHECK-NEXT: [[RESULT:%[0-9]+]] = apply [[METH]]<[[OPENED]]>(%0, [[ALLOCSTACK]])
 // CHECK-NEXT: destroy_addr [[ALLOCSTACK]] : $*[[OPENED]]
+// CHECK-NEXT: end_access [[READ]] : $*SubscriptableGetSet
 // CHECK-NEXT: dealloc_stack [[ALLOCSTACK]] : $*[[OPENED]]
 // CHECK-NEXT: return [[RESULT]]
 
@@ -54,7 +58,8 @@
 // CHECK-LABEL: sil hidden @{{.*}}use_subscript_lvalue_set
 // CHECK: bb0(%0 : $Int):
 // CHECK: [[GLOB:%[0-9]+]] = global_addr @_T09protocols19subscriptableGetSetAA013SubscriptablecD0_pv : $*SubscriptableGetSet
-// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr mutable_access [[GLOB]] : $*SubscriptableGetSet to $*[[OPENED:@opened(.*) SubscriptableGetSet]]
+// CHECK: [[READ:%.*]] = begin_access [modify] [dynamic] [[GLOB]] : $*SubscriptableGetSet
+// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr mutable_access [[READ]] : $*SubscriptableGetSet to $*[[OPENED:@opened(.*) SubscriptableGetSet]]
 // CHECK-NEXT: [[METH:%[0-9]+]] = witness_method $[[OPENED]], #SubscriptableGetSet.subscript!setter.1
 // CHECK-NEXT: apply [[METH]]<[[OPENED]]>(%0, %0, [[PROJ]])
 
@@ -124,7 +129,8 @@
 }
 // CHECK-LABEL: sil hidden @{{.*}}use_property_rvalue_get
 // CHECK: [[GLOB:%[0-9]+]] = global_addr @_T09protocols11propertyGetAA18PropertyWithGetter_pv : $*PropertyWithGetter
-// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr immutable_access [[GLOB]] : $*PropertyWithGetter to $*[[OPENED:@opened(.*) PropertyWithGetter]]
+// CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[GLOB]] : $*PropertyWithGetter
+// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr immutable_access [[READ]] : $*PropertyWithGetter to $*[[OPENED:@opened(.*) PropertyWithGetter]]
 // CHECK: [[COPY:%.*]] = alloc_stack $[[OPENED]]
 // CHECK-NEXT: copy_addr [[PROJ]] to [initialization] [[COPY]] : $*[[OPENED]]
 // CHECK-NEXT: [[METH:%[0-9]+]] = witness_method $[[OPENED]], #PropertyWithGetter.a!getter.1
@@ -135,7 +141,8 @@
 }
 // CHECK-LABEL: sil hidden @{{.*}}use_property_lvalue_get
 // CHECK: [[GLOB:%[0-9]+]] = global_addr @_T09protocols14propertyGetSetAA24PropertyWithGetterSetter_pv : $*PropertyWithGetterSetter
-// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr immutable_access [[GLOB]] : $*PropertyWithGetterSetter to $*[[OPENED:@opened(.*) PropertyWithGetterSetter]]
+// CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[GLOB]] : $*PropertyWithGetterSetter
+// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr immutable_access [[READ]] : $*PropertyWithGetterSetter to $*[[OPENED:@opened(.*) PropertyWithGetterSetter]]
 // CHECK: [[STACK:%[0-9]+]] = alloc_stack $[[OPENED]]
 // CHECK: copy_addr [[PROJ]] to [initialization] [[STACK]]
 // CHECK-NEXT: [[METH:%[0-9]+]] = witness_method $[[OPENED]], #PropertyWithGetterSetter.b!getter.1
@@ -148,7 +155,8 @@
 // CHECK-LABEL: sil hidden @{{.*}}use_property_lvalue_set
 // CHECK: bb0(%0 : $Int):
 // CHECK: [[GLOB:%[0-9]+]] = global_addr @_T09protocols14propertyGetSetAA24PropertyWithGetterSetter_pv : $*PropertyWithGetterSetter
-// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr mutable_access [[GLOB]] : $*PropertyWithGetterSetter to $*[[OPENED:@opened(.*) PropertyWithGetterSetter]]
+// CHECK: [[READ:%.*]] = begin_access [modify] [dynamic] [[GLOB]] : $*PropertyWithGetterSetter
+// CHECK: [[PROJ:%[0-9]+]] = open_existential_addr mutable_access [[READ]] : $*PropertyWithGetterSetter to $*[[OPENED:@opened(.*) PropertyWithGetterSetter]]
 // CHECK-NEXT: [[METH:%[0-9]+]] = witness_method $[[OPENED]], #PropertyWithGetterSetter.b!setter.1
 // CHECK-NEXT: apply [[METH]]<[[OPENED]]>(%0, [[PROJ]])
 
diff --git a/test/SILGen/scalar_to_tuple_args.swift b/test/SILGen/scalar_to_tuple_args.swift
index e7de4f9..ffd1037 100644
--- a/test/SILGen/scalar_to_tuple_args.swift
+++ b/test/SILGen/scalar_to_tuple_args.swift
@@ -16,17 +16,20 @@
 // CHECK: [[INOUT_WITH_DEFAULTS:%.*]] = function_ref @_T020scalar_to_tuple_args17inoutWithDefaultsySiz_Si1ySi1ztF
 // CHECK: [[DEFAULT_Y:%.*]] = apply {{.*}} : $@convention(thin) () -> Int
 // CHECK: [[DEFAULT_Z:%.*]] = apply {{.*}} : $@convention(thin) () -> Int
-// CHECK: apply [[INOUT_WITH_DEFAULTS]]([[X_ADDR]], [[DEFAULT_Y]], [[DEFAULT_Z]])
+// CHECK: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[X_ADDR]] : $*Int
+// CHECK: apply [[INOUT_WITH_DEFAULTS]]([[WRITE]], [[DEFAULT_Y]], [[DEFAULT_Z]])
 inoutWithDefaults(&x)
 
 // CHECK: [[INOUT_WITH_CALLER_DEFAULTS:%.*]] = function_ref @_T020scalar_to_tuple_args27inoutWithCallerSideDefaultsySiz_Si1ytF
 // CHECK: [[LINE_VAL:%.*]] = integer_literal
 // CHECK: [[LINE:%.*]] = apply {{.*}}([[LINE_VAL]]
-// CHECK: apply [[INOUT_WITH_CALLER_DEFAULTS]]([[X_ADDR]], [[LINE]])
+// CHECK: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[X_ADDR]] : $*Int
+// CHECK: apply [[INOUT_WITH_CALLER_DEFAULTS]]([[WRITE]], [[LINE]])
 inoutWithCallerSideDefaults(&x)
 
 // CHECK: [[SCALAR_WITH_DEFAULTS:%.*]] = function_ref @_T020scalar_to_tuple_args0A12WithDefaultsySi_Si1ySi1ztF
-// CHECK: [[X:%.*]] = load [trivial] [[X_ADDR]]
+// CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[X_ADDR]] : $*Int
+// CHECK: [[X:%.*]] = load [trivial] [[READ]]
 // CHECK: [[DEFAULT_Y:%.*]] = apply {{.*}} : $@convention(thin) () -> Int
 // CHECK: [[DEFAULT_Z:%.*]] = apply {{.*}} : $@convention(thin) () -> Int
 // CHECK: apply [[SCALAR_WITH_DEFAULTS]]([[X]], [[DEFAULT_Y]], [[DEFAULT_Z]])
@@ -40,8 +43,10 @@
 scalarWithCallerSideDefaults(x)
 
 // CHECK: [[TUPLE_WITH_DEFAULTS:%.*]] = function_ref @_T020scalar_to_tuple_args0C12WithDefaultsySi_Sit1x_Si1ySi1ztF
-// CHECK: [[X1:%.*]] = load [trivial] [[X_ADDR]]
-// CHECK: [[X2:%.*]] = load [trivial] [[X_ADDR]]
+// CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[X_ADDR]] : $*Int
+// CHECK: [[X1:%.*]] = load [trivial] [[READ]]
+// CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[X_ADDR]] : $*Int
+// CHECK: [[X2:%.*]] = load [trivial] [[READ]]
 // CHECK: [[DEFAULT_Y:%.*]] = apply {{.*}} : $@convention(thin) () -> Int
 // CHECK: [[DEFAULT_Z:%.*]] = apply {{.*}} : $@convention(thin) () -> Int
 // CHECK: apply [[TUPLE_WITH_DEFAULTS]]([[X1]], [[X2]], [[DEFAULT_Y]], [[DEFAULT_Z]])
@@ -56,7 +61,8 @@
 // CHECK: end_borrow [[BORROWED_ALLOC_ARRAY]] from [[ALLOC_ARRAY]]
 // CHECK: destroy_value [[ALLOC_ARRAY]]
 // CHECK: [[ADDR:%.*]] = pointer_to_address [[MEMORY]]
-// CHECK: [[X:%.*]] = load [trivial] [[X_ADDR]]
+// CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[X_ADDR]] : $*Int
+// CHECK: [[X:%.*]] = load [trivial] [[READ]]
 // CHECK: store [[X]] to [trivial] [[ADDR]]
 // CHECK: apply [[VARIADIC_FIRST]]([[ARRAY]])
 variadicFirst(x)
@@ -67,6 +73,7 @@
 // CHECK: [[BORROWED_ARRAY:%.*]] = tuple_extract [[BORROWED_ALLOC_ARRAY]] {{.*}}, 0
 // CHECK: [[ARRAY:%.*]] = copy_value [[BORROWED_ARRAY]]
 // CHECK: end_borrow [[BORROWED_ALLOC_ARRAY]] from [[ALLOC_ARRAY]]
-// CHECK: [[X:%.*]] = load [trivial] [[X_ADDR]]
+// CHECK: [[READ:%.*]] = begin_access [read] [dynamic] [[X_ADDR]] : $*Int
+// CHECK: [[X:%.*]] = load [trivial] [[READ]]
 // CHECK: apply [[VARIADIC_SECOND]]([[X]], [[ARRAY]])
 variadicSecond(x)
diff --git a/test/SILGen/struct_resilience.swift b/test/SILGen/struct_resilience.swift
index c1ee406..1aada2f 100644
--- a/test/SILGen/struct_resilience.swift
+++ b/test/SILGen/struct_resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_struct.swiftmodule -module-name=resilient_struct %S/../Inputs/resilient_struct.swift
 // RUN: %target-swift-frontend -I %t -emit-silgen -enable-resilience %s | %FileCheck %s
 
diff --git a/test/SILGen/subclass_existentials.swift b/test/SILGen/subclass_existentials.swift
index f09d28b..fef502e 100644
--- a/test/SILGen/subclass_existentials.swift
+++ b/test/SILGen/subclass_existentials.swift
@@ -137,16 +137,16 @@
 
   // CHECK: [[BORROW:%.*]] = begin_borrow %0 : $Base<Int> & P
   // CHECK: [[PAYLOAD:%.*]] = open_existential_ref [[BORROW]] : $Base<Int> & P to $@opened("{{.*}}") Base<Int> & P
-  // CHECK: [[SELF_BOX:%.*]] = alloc_stack $@opened("{{.*}}") Base<Int> & P
-  // CHECK: store [[PAYLOAD]] to [init] [[SELF_BOX]] : $*@opened("{{.*}}") Base<Int> & P
   // CHECK: [[METHOD:%.*]] = witness_method $@opened("{{.*}}") Base<Int> & P, #P.protocolSelfReturn!1 : <Self where Self : P> (Self) -> () -> @dynamic_self Self, %16 : $@opened("{{.*}}") Base<Int> & P : $@convention(witness_method) <τ_0_0 where τ_0_0 : P> (@in_guaranteed τ_0_0) -> @out τ_0_0
   // CHECK: [[RESULT_BOX:%.*]] = alloc_stack $@opened("{{.*}}") Base<Int> & P
+  // CHECK: [[SELF_BOX:%.*]] = alloc_stack $@opened("{{.*}}") Base<Int> & P
+  // CHECK: store_borrow [[PAYLOAD]] to [[SELF_BOX]] : $*@opened("{{.*}}") Base<Int> & P
   // CHECK: apply [[METHOD]]<@opened("{{.*}}") Base<Int> & P>([[RESULT_BOX]], [[SELF_BOX]]) : $@convention(witness_method) <τ_0_0 where τ_0_0 : P> (@in_guaranteed τ_0_0) -> @out τ_0_0
-  // CHECK: [[RESULT_REF:%.*]] = load [take] %20 : $*@opened("{{.*}}") Base<Int> & P
+  // CHECK: dealloc_stack [[SELF_BOX]] : $*@opened("{{.*}}") Base<Int> & P
+  // CHECK: [[RESULT_REF:%.*]] = load [take] [[RESULT_BOX]] : $*@opened("{{.*}}") Base<Int> & P
   // CHECK: [[RESULT:%.*]] = init_existential_ref [[RESULT_REF]] : $@opened("{{.*}}") Base<Int> & P : $@opened("{{.*}}") Base<Int> & P, $Base<Int> & P
   // CHECK: destroy_value [[RESULT]] : $Base<Int> & P
   // CHECK: dealloc_stack [[RESULT_BOX]] : $*@opened("{{.*}}") Base<Int> & P
-  // CHECK: dealloc_stack [[SELF_BOX]] : $*@opened("{{.*}}") Base<Int> & P
   // CHECK: end_borrow [[BORROW]] from %0 : $Base<Int> & P
   let _: Base<Int> & P = baseAndP.protocolSelfReturn()
 
diff --git a/test/SILGen/super.swift b/test/SILGen/super.swift
index de91646..76c26da 100644
--- a/test/SILGen/super.swift
+++ b/test/SILGen/super.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -I %t -emit-module -emit-module-path=%t/resilient_struct.swiftmodule -module-name resilient_struct %S/../Inputs/resilient_struct.swift
 // RUN: %target-swift-frontend -I %t -emit-module -emit-module-path=%t/resilient_class.swiftmodule -module-name resilient_class %S/../Inputs/resilient_class.swift
 // RUN: %target-swift-frontend -emit-silgen -parse-as-library -I %t %s | %FileCheck %s
@@ -82,21 +81,49 @@
 }
 
 public class ChildToResilientParent : ResilientOutsideParent {
+  // CHECK-LABEL: sil @_T05super22ChildToResilientParentC6methodyyF : $@convention(method) (@guaranteed ChildToResilientParent) -> ()
   public override func method() {
+    // CHECK: [[COPY:%.*]] = copy_value %0
+    // CHECK: super_method [[COPY]] : $ChildToResilientParent, #ResilientOutsideParent.method!1 : (ResilientOutsideParent) -> () -> (), $@convention(method) (@guaranteed ResilientOutsideParent) -> ()
+    // CHECK: return
     super.method()
   }
 
+  // CHECK-LABEL: sil @_T05super22ChildToResilientParentC11classMethodyyFZ : $@convention(method) (@thick ChildToResilientParent.Type) -> ()
   public override class func classMethod() {
+    // CHECK: super_method %0 : $@thick ChildToResilientParent.Type, #ResilientOutsideParent.classMethod!1 : (ResilientOutsideParent.Type) -> () -> (), $@convention(method) (@thick ResilientOutsideParent.Type) -> ()
+    // CHECK: return
+    super.classMethod()
+  }
+
+  // CHECK-LABEL: sil @_T05super22ChildToResilientParentC11returnsSelfACXDyFZ : $@convention(method) (@thick ChildToResilientParent.Type) -> @owned ChildToResilientParent
+  public class func returnsSelf() -> Self {
+    // CHECK: super_method %0 : $@thick ChildToResilientParent.Type, #ResilientOutsideParent.classMethod!1 : (ResilientOutsideParent.Type) -> () -> ()
+    // CHECK: unreachable
     super.classMethod()
   }
 }
 
 public class ChildToFixedParent : OutsideParent {
+  // CHECK-LABEL: sil @_T05super18ChildToFixedParentC6methodyyF : $@convention(method) (@guaranteed ChildToFixedParent) -> ()
   public override func method() {
+    // CHECK: [[COPY:%.*]] = copy_value %0
+    // CHECK: super_method [[COPY]] : $ChildToFixedParent, #OutsideParent.method!1 : (OutsideParent) -> () -> (), $@convention(method) (@guaranteed OutsideParent) -> ()
+    // CHECK: return
     super.method()
   }
 
+  // CHECK-LABEL: sil @_T05super18ChildToFixedParentC11classMethodyyFZ : $@convention(method) (@thick ChildToFixedParent.Type) -> ()
   public override class func classMethod() {
+    // CHECK: super_method %0 : $@thick ChildToFixedParent.Type, #OutsideParent.classMethod!1 : (OutsideParent.Type) -> () -> (), $@convention(method) (@thick OutsideParent.Type) -> ()
+    // CHECK: return
+    super.classMethod()
+  }
+
+  // CHECK-LABEL: sil @_T05super18ChildToFixedParentC11returnsSelfACXDyFZ : $@convention(method) (@thick ChildToFixedParent.Type) -> @owned ChildToFixedParent
+  public class func returnsSelf() -> Self {
+    // CHECK: super_method %0 : $@thick ChildToFixedParent.Type, #OutsideParent.classMethod!1 : (OutsideParent.Type) -> () -> ()
+    // CHECK: unreachable
     super.classMethod()
   }
 }
diff --git a/test/SILGen/super_init_refcounting.swift b/test/SILGen/super_init_refcounting.swift
index 6bf5d2c..ab154d6 100644
--- a/test/SILGen/super_init_refcounting.swift
+++ b/test/SILGen/super_init_refcounting.swift
@@ -80,14 +80,16 @@
   // CHECK:         store %0 to [init] [[PB_SELF_BOX]]
   // CHECK:         [[SELF_OBJ:%.*]] = load_borrow [[PB_SELF_BOX]]
   // CHECK:         [[X_ADDR:%.*]] = ref_element_addr [[SELF_OBJ]] : $Good, #Good.x
-  // CHECK:         assign {{.*}} to [[X_ADDR]] : $*Int
+  // CHECK:         [[WRITE:%.*]] = begin_access [modify] [dynamic] [[X_ADDR]] : $*Int
+  // CHECK:         assign {{.*}} to [[WRITE]] : $*Int
   // CHECK:         [[SELF_OBJ:%.*]] = load [take] [[PB_SELF_BOX]] : $*Good
   // CHECK:         [[SUPER_OBJ:%.*]] = upcast [[SELF_OBJ]] : $Good to $Foo
   // CHECK:         [[SUPER_INIT:%.*]] = function_ref @_T022super_init_refcounting3FooCACSicfc : $@convention(method) (Int, @owned Foo) -> @owned Foo
   // CHECK:         [[BORROWED_SUPER:%.*]] = begin_borrow [[SUPER_OBJ]]
   // CHECK:         [[DOWNCAST_BORROWED_SUPER:%.*]] = unchecked_ref_cast [[BORROWED_SUPER]] : $Foo to $Good
   // CHECK:         [[X_ADDR:%.*]] = ref_element_addr [[DOWNCAST_BORROWED_SUPER]] : $Good, #Good.x
-  // CHECK:         [[X:%.*]] = load [trivial] [[X_ADDR]] : $*Int
+  // CHECK:         [[READ:%.*]] = begin_access [read] [dynamic] [[X_ADDR]] : $*Int
+  // CHECK:         [[X:%.*]] = load [trivial] [[READ]] : $*Int
   // CHECK:         end_borrow [[BORROWED_SUPER]] from [[SUPER_OBJ]]
   // CHECK:         apply [[SUPER_INIT]]([[X]], [[SUPER_OBJ]])
   override init() {
diff --git a/test/SILGen/switch.swift b/test/SILGen/switch.swift
index 9ba35d4..41b615f 100644
--- a/test/SILGen/switch.swift
+++ b/test/SILGen/switch.swift
@@ -680,7 +680,9 @@
 
   // CHECK: [[IS_BOTH]]([[TUP:%.*]] : $(Int, String)):
   case .Both:
-  // CHECK:   destroy_value [[TUP]] : $(Int, String)
+  // CHECK:   tuple_extract [[TUP]] : $(Int, String), 0
+  // CHECK:   [[TUP_STR:%.*]] = tuple_extract [[TUP]] : $(Int, String), 1
+  // CHECK:   destroy_value [[TUP_STR]] : $String
   // CHECK:   function_ref @_T06switch1dyyF
   // CHECK:   br [[CONT]]
     d()
diff --git a/test/SILGen/testable-multifile-other.swift b/test/SILGen/testable-multifile-other.swift
index 0b13dcc..2ad803d 100644
--- a/test/SILGen/testable-multifile-other.swift
+++ b/test/SILGen/testable-multifile-other.swift
@@ -1,6 +1,6 @@
 // This test is paired with testable-multifile.swift.
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module %S/Inputs/TestableMultifileHelper.swift -enable-testing -o %t
 
 // RUN: %target-swift-frontend -emit-silgen -I %t %s %S/testable-multifile.swift -module-name main | %FileCheck %s
diff --git a/test/SILGen/testable-multifile.swift b/test/SILGen/testable-multifile.swift
index c6d5d7f..7e73871 100644
--- a/test/SILGen/testable-multifile.swift
+++ b/test/SILGen/testable-multifile.swift
@@ -1,6 +1,6 @@
 // This test is paired with testable-multifile-other.swift.
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module %S/Inputs/TestableMultifileHelper.swift -enable-testing -o %t
 
 // RUN: %target-swift-frontend -emit-silgen -I %t %s %S/testable-multifile-other.swift -module-name main | %FileCheck %s
diff --git a/test/SILGen/toplevel.swift b/test/SILGen/toplevel.swift
index 3e2ac9f..32f96ad 100644
--- a/test/SILGen/toplevel.swift
+++ b/test/SILGen/toplevel.swift
@@ -24,7 +24,8 @@
 
 // -- assign x
 // CHECK: integer_literal $Builtin.Int2048, 0
-// CHECK: assign {{.*}} to [[X]]
+// CHECK: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[X]] : $*Int
+// CHECK: assign {{.*}} to [[WRITE]]
 // CHECK: [[PRINT_X:%[0-9]+]] = function_ref @_T08toplevel7print_xyyF :
 // CHECK: apply [[PRINT_X]]
 
@@ -65,7 +66,8 @@
 // CHECK: alloc_global @_T08toplevel1ySiv
 // CHECK: [[Y1:%[0-9]+]] = global_addr @_T08toplevel1ySiv : $*Int
 // CHECK: [[Y:%[0-9]+]] = mark_uninitialized [var] [[Y1]]
-// CHECK: assign {{.*}} to [[Y]]
+// CHECK: [[WRITE:%.*]] = begin_access [modify] [dynamic] [[Y]]
+ // CHECK: assign {{.*}} to [[WRITE]]
 // CHECK: [[PRINT_Y:%[0-9]+]] = function_ref @_T08toplevel7print_yyyF
 y = 1
 print_y()
diff --git a/test/SILGen/tsan_instrumentation.swift b/test/SILGen/tsan_instrumentation.swift
index 3cb04af..ff9ffb0 100644
--- a/test/SILGen/tsan_instrumentation.swift
+++ b/test/SILGen/tsan_instrumentation.swift
@@ -20,8 +20,9 @@
 // CHECK-LABEL: sil hidden @_T020tsan_instrumentation17inoutGlobalStructyyF : $@convention(thin) () -> () {
 // CHECK:  [[GLOBAL_ADDR:%.*]] = global_addr @_T020tsan_instrumentation7gStructAA02MyC0Vv : $*MyStruct
 // CHECK:  [[TAKES_INOUT_FUNC:%.*]] = function_ref @_T020tsan_instrumentation10takesInoutyAA8MyStructVzF : $@convention(thin) (@inout MyStruct) -> ()
-// CHECK:  {{%.*}} = builtin "tsanInoutAccess"([[GLOBAL_ADDR]] : $*MyStruct) : $()
-// CHECK:  {{%.*}} = apply [[TAKES_INOUT_FUNC]]([[GLOBAL_ADDR]]) : $@convention(thin) (@inout MyStruct) -> ()
+// CHECK:  [[WRITE:%.*]] = begin_access [modify] [dynamic] [[GLOBAL_ADDR]] : $*MyStruct
+// CHECK:  {{%.*}} = builtin "tsanInoutAccess"([[WRITE]] : $*MyStruct) : $()
+// CHECK:  {{%.*}} = apply [[TAKES_INOUT_FUNC]]([[WRITE]]) : $@convention(thin) (@inout MyStruct) -> ()
 func inoutGlobalStruct() {
   takesInout(&gStruct)
 }
@@ -30,8 +31,9 @@
 // CHECK-LABEL: sil hidden @_T020tsan_instrumentation31inoutGlobalStructStoredPropertyyyF : $@convention(thin) () -> () {
 // CHECK:  [[GLOBAL_ADDR:%.*]] = global_addr @_T020tsan_instrumentation7gStructAA02MyC0Vv : $*MyStruct
 // CHECK:  [[TAKES_INOUT_FUNC:%.*]] = function_ref @_T020tsan_instrumentation10takesInoutySizF : $@convention(thin) (@inout Int) -> ()
-// CHECK:  {{%.*}} = builtin "tsanInoutAccess"([[GLOBAL_ADDR]] : $*MyStruct) : $()
-// CHECK:  [[ELEMENT_ADDR:%.*]] = struct_element_addr [[GLOBAL_ADDR]] : $*MyStruct, #MyStruct.storedProperty
+// CHECK:  [[WRITE:%.*]] = begin_access [modify] [dynamic] [[GLOBAL_ADDR]] : $*MyStruct
+// CHECK:  {{%.*}} = builtin "tsanInoutAccess"([[WRITE]] : $*MyStruct) : $()
+// CHECK:  [[ELEMENT_ADDR:%.*]] = struct_element_addr [[WRITE]] : $*MyStruct, #MyStruct.storedProperty
 // CHECK:  {{%.*}} = builtin "tsanInoutAccess"([[ELEMENT_ADDR]] : $*Int) : $()
 // CHECK:  {{%.*}} = apply [[TAKES_INOUT_FUNC]]([[ELEMENT_ADDR]]) : $@convention(thin) (@inout Int) -> ()
 func inoutGlobalStructStoredProperty() {
@@ -43,7 +45,8 @@
 // CHECK-LABEL: sil hidden @_T020tsan_instrumentation30inoutGlobalClassStoredPropertyyyF : $@convention(thin) () -> () {
 // CHECK:  [[GLOBAL_ADDR:%.*]] = global_addr @_T020tsan_instrumentation6gClassAA02MyC0Cv : $*MyClass
 // CHECK:  [[TAKES_INOUT_FUNC:%.*]] = function_ref @_T020tsan_instrumentation10takesInoutySizF : $@convention(thin) (@inout Int) -> ()
-// CHECK:  [[LOADED_CLASS:%.*]] = load [copy] [[GLOBAL_ADDR]] : $*MyClass
+// CHECK:  [[READ:%.*]] = begin_access [read] [dynamic] [[GLOBAL_ADDR]] : $*MyClass
+// CHECK:  [[LOADED_CLASS:%.*]] = load [copy] [[READ]] : $*MyClass
 // CHECK:  [[VALUE_BUFFER:%.*]] = alloc_stack $Builtin.UnsafeValueBuffer
 // CHECK:  [[TEMPORARY:%.*]] = alloc_stack $Int
 // CHECK:  [[BORROWED_CLASS:%.*]] = begin_borrow [[LOADED_CLASS]] : $MyClass
diff --git a/test/SILGen/unowned.swift b/test/SILGen/unowned.swift
index 274cbd5..7762710 100644
--- a/test/SILGen/unowned.swift
+++ b/test/SILGen/unowned.swift
@@ -144,9 +144,10 @@
 // CHECK:   [[BORROWED_ARG1:%.*]] = begin_borrow [[ARG1]]
 // CHECK:   [[ARG1_COPY:%.*]] = copy_value [[BORROWED_ARG1]]
 // CHECK:   [[FIELDPTR:%.*]] = ref_element_addr [[BORROWED_SELF]] : $TestUnownedMember, #TestUnownedMember.member
+// CHECK:   [[WRITE:%.*]] = begin_access [modify] [dynamic] [[FIELDPTR]] : $*@sil_unowned C
 // CHECK:   [[INVAL:%.*]] = ref_to_unowned [[ARG1_COPY]] : $C to $@sil_unowned C
 // CHECK:   unowned_retain [[INVAL]] : $@sil_unowned C
-// CHECK:   assign [[INVAL]] to [[FIELDPTR]] : $*@sil_unowned C
+// CHECK:   assign [[INVAL]] to [[WRITE]] : $*@sil_unowned C
 // CHECK:   destroy_value [[ARG1_COPY]] : $C
 // CHECK:   end_borrow [[BORROWED_ARG1]] from [[ARG1]]
 // CHECK:   end_borrow [[BORROWED_SELF]] from [[SELF]]
diff --git a/test/SILGen/weak.swift b/test/SILGen/weak.swift
index 7dc3211..0e4d0b2 100644
--- a/test/SILGen/weak.swift
+++ b/test/SILGen/weak.swift
@@ -74,7 +74,8 @@
   // CHECK:    [[PB:%.*]] = project_box [[FOO]]
   // CHECK:    [[BORROWED_UNINIT_SELF:%.*]] = begin_borrow [[UNINIT_SELF]]
   // CHECK:    [[X:%.*]] = ref_element_addr [[BORROWED_UNINIT_SELF]] : $CC, #CC.x
-  // CHECK:    [[VALUE:%.*]] = load_weak [[X]] : $*@sil_weak Optional<CC>
+  // CHECK:    [[READ:%.*]] = begin_access [read] [dynamic] [[X]] : $*@sil_weak Optional<CC>
+  // CHECK:    [[VALUE:%.*]] = load_weak [[READ]] : $*@sil_weak Optional<CC>
   // CHECK:    store [[VALUE]] to [init] [[PB]] : $*Optional<CC>
   // CHECK:    end_borrow [[BORROWED_UNINIT_SELF]] from [[UNINIT_SELF]]
   // CHECK:    destroy_value [[FOO]]
diff --git a/test/SILGen/weak_multiple_modules.swift b/test/SILGen/weak_multiple_modules.swift
index dcda4a7..73a12db 100644
--- a/test/SILGen/weak_multiple_modules.swift
+++ b/test/SILGen/weak_multiple_modules.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -emit-module-path=%t/weak_other.swiftmodule -module-name=weak_other %S/Inputs/weak_other.swift
 // RUN: %target-swift-frontend -I %t -emit-silgen %s | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-runtime
 
diff --git a/test/SILOptimizer/access_summary_analysis.sil b/test/SILOptimizer/access_summary_analysis.sil
new file mode 100644
index 0000000..4588837
--- /dev/null
+++ b/test/SILOptimizer/access_summary_analysis.sil
@@ -0,0 +1,294 @@
+// RUN: %target-sil-opt  %s -assume-parsing-unqualified-ownership-sil -access-summary-dump -o /dev/null | %FileCheck %s
+
+sil_stage raw
+
+import Builtin
+import Swift
+import SwiftShims
+
+struct StructWithStoredProperties {
+  @sil_stored var f: Int
+  @sil_stored var g: Int
+}
+
+// CHECK-LABEL: @assignsToCapture
+// CHECK-NEXT: (modify, none)
+sil private @assignsToCapture : $@convention(thin) (@inout_aliasable Int, Int) -> () {
+bb0(%0 : $*Int, %1: $Int):
+  %2 = begin_access [modify] [unknown] %0 : $*Int
+  assign %1 to %2 : $*Int
+  end_access %2 : $*Int
+  %3 = tuple ()
+  return %3 : $()
+}
+
+// CHECK-LABEL: @readsAndModifiesSameCapture
+// CHECK-NEXT: (modify)
+sil private @readsAndModifiesSameCapture : $@convention(thin) (@inout_aliasable Int) -> () {
+bb0(%0 : $*Int):
+  %1 = begin_access [read] [unknown] %0 : $*Int
+  end_access %1 : $*Int
+  %2 = begin_access [modify] [unknown] %0 : $*Int
+  end_access %2 : $*Int
+  %3 = tuple ()
+  return %3 : $()
+}
+
+// CHECK-LABEL: @readsAndModifiesSeparateCaptures
+// CHECK-NEXT: (read, modify)
+sil private @readsAndModifiesSeparateCaptures : $@convention(thin) (@inout_aliasable Int, @inout_aliasable Int) -> () {
+bb0(%0 : $*Int, %1 : $*Int):
+  %2 = begin_access [read] [unknown] %0 : $*Int
+  end_access %2 : $*Int
+  %3 = begin_access [modify] [unknown] %1 : $*Int
+  end_access %3 : $*Int
+  %4 = tuple ()
+  return %4 : $()
+}
+
+// CHECK-LABEL: @modifyInModifySubAccess
+// CHECK-NEXT: (modify)
+sil private @modifyInModifySubAccess : $@convention(thin) (@inout_aliasable Int) -> () {
+bb0(%0 : $*Int):
+  %1 = begin_access [modify] [unknown] %0 : $*Int
+  %2 = begin_access [modify] [unknown] %1 : $*Int
+  end_access %2 : $*Int
+  end_access %1 : $*Int
+  %3 = tuple ()
+  return %3 : $()
+}
+
+// CHECK-LABEL: @readInModifySubAccess
+// CHECK-NEXT: (modify)
+sil private @readInModifySubAccess : $@convention(thin) (@inout_aliasable Int) -> () {
+bb0(%0 : $*Int):
+  %1 = begin_access [modify] [unknown] %0 : $*Int
+  %2 = begin_access [read] [unknown] %1 : $*Int
+  end_access %2 : $*Int
+  end_access %1 : $*Int
+  %3 = tuple ()
+  return %3 : $()
+}
+
+// CHECK-LABEL: @addressToPointerOfStructElementAddr
+// CHECK-NEXT: (none)
+// This mirrors the code pattern for materializeForSet on a struct stored
+// property
+sil private @addressToPointerOfStructElementAddr : $@convention(method) (@inout StructWithStoredProperties) -> (Builtin.RawPointer) {
+bb0(%1 : $*StructWithStoredProperties):
+  %2 = struct_element_addr %1 : $*StructWithStoredProperties, #StructWithStoredProperties.f
+  %3 = address_to_pointer %2 : $*Int to $Builtin.RawPointer
+  return %3 : $(Builtin.RawPointer)
+}
+
+// CHECK-LABEL: @endUnpairedAccess
+// CHECK-NEXT: (none)
+sil private @endUnpairedAccess : $@convention(method) (@inout Builtin.UnsafeValueBuffer) -> () {
+bb0(%0 : $*Builtin.UnsafeValueBuffer):
+  end_unpaired_access [dynamic] %0 : $*Builtin.UnsafeValueBuffer
+  %1 = tuple ()
+  return %1 : $()
+}
+
+// CHECK-LABEL: @tupleElementAddr
+// CHECK-NEXT: (modify)
+sil private @tupleElementAddr : $@convention(thin) (@inout_aliasable (Int, Int)) -> () {
+bb0(%0 : $*(Int, Int)):
+  %1 = tuple_element_addr %0 : $*(Int, Int), 1
+  %2 = begin_access [modify] [unknown] %1 : $*Int
+  end_access %2 : $*Int
+  %3 = tuple ()
+  return %3 : $()
+}
+
+sil @closureWithMissingBody : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+
+// CHECK-LABEL: @callClosureWithMissingBody
+// CHECK-NEXT: (none, none)
+sil private @callClosureWithMissingBody : $@convention(thin) (@inout_aliasable Int, Int) -> () {
+bb0(%0 : $*Int, %1 : $Int):
+  %2 = function_ref @closureWithMissingBody : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %3 = apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> () // no-crash
+  %4 = tuple ()
+  return %4 : $()
+}
+
+// CHECK-LABEL: @callClosureThatModifiesCapture
+// CHECK-NEXT: (modify, none)
+sil private @callClosureThatModifiesCapture : $@convention(thin) (@inout_aliasable Int, Int) -> () {
+bb0(%0 : $*Int, %1 : $Int):
+  %2 = function_ref @assignsToCapture : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %3 = apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %4 = tuple ()
+  return %4 : $()
+}
+
+// CHECK-LABEL: @throwingClosureThatModifesCapture
+// CHECK-NEXT: (modify)
+sil private @throwingClosureThatModifesCapture : $@convention(thin) (@inout_aliasable Int) -> @error Error {
+bb0(%0 : $*Int):
+  %1 = begin_access [modify] [unknown] %0 : $*Int
+  end_access %1 : $*Int
+  %2 = tuple ()
+  return %2 : $()
+}
+// CHECK-LABEL: @callThrowingClosureThatModifiesCapture
+// CHECK-NEXT: (modify)
+sil private @callThrowingClosureThatModifiesCapture : $@convention(thin) (@inout_aliasable Int) -> () {
+bb0(%0 : $*Int):
+  %1 = function_ref @throwingClosureThatModifesCapture : $@convention(thin) (@inout_aliasable Int) -> @error Error
+  %2 = try_apply %1(%0) : $@convention(thin) (@inout_aliasable Int) -> @error Error, normal bb1, error bb2
+bb1(%3 : $()):
+  %4 = tuple ()
+  return %4 : $()
+bb2(%5: $Error):
+  %6 = builtin "unexpectedError"(%5 : $Error) : $()
+  unreachable
+}
+
+sil @takesNoEscapeClosure : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+
+// CHECK-LABEL: @partialApplyPassedOffToFunction
+// CHECK-NEXT: (modify, none)
+sil private @partialApplyPassedOffToFunction : $@convention(thin) (@inout_aliasable Int, Int) -> () {
+bb0(%0 : $*Int, %1: $Int):
+  %2 = function_ref @assignsToCapture : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %3 = partial_apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %4 = function_ref @takesNoEscapeClosure : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %5 = apply %4(%3) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %6 = tuple ()
+  return %6 : $()
+}
+
+sil @takesNoEscapeClosureTakingArgument : $@convention(thin) (@owned @callee_owned (Int) -> ()) -> ()
+sil @takesNoEscapeClosureTakingArgumentThrowing : $@convention(thin) (@owned @callee_owned (Int) -> (@error Error)) -> ()
+
+// CHECK-LABEL: @hasThreeCapturesAndTakesArgument
+// CHECK-NEXT: (none, modify, none, read)
+sil private @hasThreeCapturesAndTakesArgument : $@convention(thin) (Int, @inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> () {
+bb0(%0 : $Int, %1: $*Int, %2: $*Int, %3: $*Int):
+  %4 = begin_access [modify] [unknown] %1 : $*Int
+  end_access %4 : $*Int
+  %5 = begin_access [read] [unknown] %3 : $*Int
+  end_access %5 : $*Int
+  %6 = tuple ()
+  return %6 : $()
+}
+
+// CHECK-LABEL: @partialApplyOfClosureTakingArgumentPassedOffToFunction
+// CHECK-NEXT: (modify, none, read
+sil private @partialApplyOfClosureTakingArgumentPassedOffToFunction : $@convention(thin) (@inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> () {
+bb0(%0 : $*Int, %1 : $*Int, %2 : $*Int):
+  %3 = function_ref @hasThreeCapturesAndTakesArgument : $@convention(thin) (Int, @inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> ()
+  %4 = partial_apply %3(%0, %1, %2) : $@convention(thin) (Int, @inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> ()
+  %5 = function_ref @takesNoEscapeClosureTakingArgument : $@convention(thin) (@owned @callee_owned (Int) -> ()) -> ()
+  %6 = apply %5(%4) : $@convention(thin) (@owned @callee_owned (Int) -> ()) -> ()
+  %7 = tuple ()
+  return %7 : $()
+}
+
+// CHECK-LABEL: @partialApplyFollowedByConvertFunction
+// CHECK-NEXT: (modify, none, read)
+sil private @partialApplyFollowedByConvertFunction : $@convention(thin) (@inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> () {
+bb0(%0 : $*Int, %1 : $*Int, %2 : $*Int):
+  %3 = function_ref @hasThreeCapturesAndTakesArgument : $@convention(thin) (Int, @inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> ()
+  %4 = partial_apply %3(%0, %1, %2) : $@convention(thin) (Int, @inout_aliasable Int, @inout_aliasable Int, @inout_aliasable Int) -> ()
+  %5 = convert_function %4 : $@callee_owned (Int) -> () to $@callee_owned (Int) -> @error Error
+  %6 = function_ref @takesNoEscapeClosureTakingArgumentThrowing : $@convention(thin) (@owned @callee_owned (Int) -> @error Error) -> ()
+  %7 = apply %6(%5) : $@convention(thin) (@owned @callee_owned (Int) -> @error Error) -> ()
+  %8 = tuple ()
+  return %8 : $()
+}
+
+// CHECK-LABEL: @selfRecursion
+// CHECK-NEXT: (modify, none)
+sil private @selfRecursion : $@convention(thin) (@inout_aliasable Int, Int) -> () {
+bb0(%0 : $*Int, %1 : $Int):
+  %2 = function_ref @selfRecursion : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %3 = apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %4 = begin_access [modify] [unknown] %0 : $*Int
+  end_access %4 : $*Int
+  %5 = tuple ()
+  return %5 : $()
+}
+
+// CHECK-LABEL: @callsMutuallyRecursive
+// CHECK-NEXT: (modify, none)
+sil private @callsMutuallyRecursive : $@convention(thin) (@inout_aliasable Int, Int) -> () {
+bb0(%0 : $*Int, %1 : $Int):
+  %2 = function_ref @mutualRecursion1 : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %3 = apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %4 = tuple ()
+  return %4 : $()
+}
+
+// CHECK-LABEL: @mutualRecursion1
+// CHECK-NEXT: (modify, none)
+sil private @mutualRecursion1 : $@convention(thin) (@inout_aliasable Int, Int) -> () {
+bb0(%0 : $*Int, %1 : $Int):
+  %2 = function_ref @mutualRecursion2 : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %3 = apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %4 = begin_access [modify] [unknown] %0 : $*Int
+  end_access %4 : $*Int
+  %5 = tuple ()
+  return %5 : $()
+}
+
+// CHECK-LABEL: @mutualRecursion2
+// CHECK-NEXT: (modify, none)
+sil private @mutualRecursion2 : $@convention(thin) (@inout_aliasable Int, Int) -> () {
+bb0(%0 : $*Int, %1 : $Int):
+  %2 = function_ref @mutualRecursion1 : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %3 = apply %2(%0, %1) : $@convention(thin) (@inout_aliasable Int, Int) -> ()
+  %4 = begin_access [read] [unknown] %0 : $*Int
+  end_access %4 : $*Int
+  %5 = tuple ()
+  return %5 : $()
+}
+
+// Multiple cycles. This requires two iterations of the edge propagation.
+// Once to propagate the modify from A to B and one to propagate from
+// B to C
+//
+//      A [Call B then later modify param]
+//    / |
+//    \ |
+//     B
+//    / |
+//    \ |
+//     C
+//
+// CHECK-LABEL: @multipleCycleA
+// CHECK-NEXT: (modify)
+sil private @multipleCycleA : $@convention(thin) (@inout_aliasable Int) -> () {
+bb0(%0 : $*Int):
+  %1 = function_ref @multipleCycleB : $@convention(thin) (@inout_aliasable Int) -> ()
+  %2 = apply %1(%0) : $@convention(thin) (@inout_aliasable Int) -> ()
+  %3 = begin_access [modify] [unknown] %0 : $*Int
+  end_access %3 : $*Int
+  %5 = tuple ()
+  return %5 : $()
+}
+
+// CHECK-LABEL: @multipleCycleB
+// CHECK-NEXT: (modify)
+sil private @multipleCycleB : $@convention(thin) (@inout_aliasable Int) -> () {
+bb0(%0 : $*Int):
+  %1 = function_ref @multipleCycleA : $@convention(thin) (@inout_aliasable Int) -> ()
+  %2 = apply %1(%0) : $@convention(thin) (@inout_aliasable Int) -> ()
+  %3 = function_ref @multipleCycleC : $@convention(thin) (@inout_aliasable Int) -> ()
+  %4 = apply %3(%0) : $@convention(thin) (@inout_aliasable Int) -> ()
+  %5 = tuple ()
+  return %5 : $()
+}
+
+// CHECK-LABEL: @multipleCycleC
+// CHECK-NEXT: (modify)
+sil private @multipleCycleC : $@convention(thin) (@inout_aliasable Int) -> () {
+bb0(%0 : $*Int):
+  %1 = function_ref @multipleCycleB : $@convention(thin) (@inout_aliasable Int) -> ()
+  %2 = apply %1(%0) : $@convention(thin) (@inout_aliasable Int) -> ()
+  %4 = tuple ()
+  return %4 : $()
+}
+
diff --git a/test/SILOptimizer/arcsequenceopts_loops.sil.gyb b/test/SILOptimizer/arcsequenceopts_loops.sil.gyb
index 4356f76..afe69fb 100644
--- a/test/SILOptimizer/arcsequenceopts_loops.sil.gyb
+++ b/test/SILOptimizer/arcsequenceopts_loops.sil.gyb
@@ -1,6 +1,5 @@
 %# -*- mode: sil -*-
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %gyb %s > %t/arc-sequence-opts-loops.sil
 // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all -arc-sequence-opts %t/arc-sequence-opts-loops.sil -enable-loop-arc=0 | %FileCheck %t/arc-sequence-opts-loops.sil
 
diff --git a/test/SILOptimizer/capture_promotion.swift b/test/SILOptimizer/capture_promotion.swift
index 331814f..0949416 100644
--- a/test/SILOptimizer/capture_promotion.swift
+++ b/test/SILOptimizer/capture_promotion.swift
@@ -1,4 +1,4 @@
-// RUN: %target-swift-frontend %s -emit-sil -o - -verify | %FileCheck %s
+// RUN: %target-swift-frontend %s -emit-sil -o - | %FileCheck %s
 
 class Foo {
   func foo() -> Int {
diff --git a/test/SILOptimizer/capture_promotion_ownership.sil b/test/SILOptimizer/capture_promotion_ownership.sil
index 7be1070..b970e1d 100644
--- a/test/SILOptimizer/capture_promotion_ownership.sil
+++ b/test/SILOptimizer/capture_promotion_ownership.sil
@@ -29,6 +29,7 @@
 sil @foo_allocating_init : $@convention(thin) (@thick Foo.Type) -> @owned Foo
 sil @baz_init : $@convention(thin) (@thin Baz.Type) -> @owned Baz
 sil @dummy_func : $@convention(thin) (Int, Int, Int) -> Int
+sil @destructured_baz_user : $@convention(thin) (@owned Bar, @guaranteed Bar, Int) -> ()
 
 // CHECK-LABEL: sil @test_capture_promotion
 sil @test_capture_promotion : $@convention(thin) () -> @owned @callee_owned () -> (Int, Builtin.Int64) {
@@ -332,3 +333,141 @@
   %16 = tuple()
   return %16 : $()
 }
+
+// This test makes sure that we properly handle non load uses of
+// struct_element_addr that always have load users with the load occuring before
+// and after the element in the use list.
+
+sil @mutate_int : $@convention(thin) (@inout Int) -> ()
+
+// CHECK-LABEL: sil @test_closure_multiple_uses_of_struct_element_addr : $@convention(thin) () -> @owned @callee_owned () -> () {
+// CHECK: [[FUNC:%.*]] = function_ref @closure_multiple_uses_of_struct_element_addr : $@convention(thin)
+// CHECK: partial_apply [[FUNC]](
+// CHECK: } // end sil function 'test_closure_multiple_uses_of_struct_element_addr'
+sil @test_closure_multiple_uses_of_struct_element_addr : $@convention(thin) () -> @owned @callee_owned () -> () {
+bb0:
+  %0 = function_ref @baz_init : $@convention(thin) (@thin Baz.Type) -> @owned Baz
+  %1 = metatype $@thin Baz.Type
+
+  %2 = alloc_box $<τ_0_0> { var τ_0_0 } <Baz>
+  %3 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Baz>, 0
+  %4 = apply %0(%1) : $@convention(thin) (@thin Baz.Type) -> @owned Baz
+  store %4 to [init] %3 : $*Baz
+
+  %5 = alloc_box $<τ_0_0> { var τ_0_0 } <Baz>
+  %6 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Baz>, 0
+  %7 = apply %0(%1) : $@convention(thin) (@thin Baz.Type) -> @owned Baz
+  store %7 to [init] %6 : $*Baz
+
+  %8 = function_ref @closure_multiple_uses_of_struct_element_addr : $@convention(thin) (@owned <τ_0_0> { var τ_0_0 } <Baz>, @owned <τ_0_0> { var τ_0_0 } <Baz>) -> ()
+  %9 = partial_apply %8(%2, %5) : $@convention(thin) (@owned <τ_0_0> { var τ_0_0 } <Baz>, @owned <τ_0_0> { var τ_0_0 } <Baz>) -> ()
+
+  return %9 : $@callee_owned () -> ()
+}
+
+sil @closure_multiple_uses_of_struct_element_addr : $@convention(thin) (@owned <τ_0_0> { var τ_0_0 } <Baz>, @owned <τ_0_0> { var τ_0_0 } <Baz>) -> () {
+bb0(%0 : @owned $<τ_0_0> { var τ_0_0 } <Baz>, %1 : @owned $<τ_0_0> { var τ_0_0 } <Baz>):
+  %2 = project_box %0 : $<τ_0_0> { var τ_0_0 } <Baz>, 0
+  %3 = struct_element_addr %2 : $*Baz, #Baz.x
+  %4 = load [trivial] %3 : $*Int
+  %5 = function_ref @mutate_int : $@convention(thin) (@inout Int) -> ()
+  apply %5(%3) : $@convention(thin) (@inout Int) -> ()
+
+  %6 = project_box %1 : $<τ_0_0> { var τ_0_0 } <Baz>, 0
+  %7 = struct_element_addr %6 : $*Baz, #Baz.x
+  apply %5(%7) : $@convention(thin) (@inout Int) -> ()
+  %8 = load [trivial] %7 : $*Int
+
+  destroy_value %1 : $<τ_0_0> { var τ_0_0 } <Baz>
+  destroy_value %0 : $<τ_0_0> { var τ_0_0 } <Baz>
+  %9999 = tuple()
+  return %9999 : $()
+}
+
+// CHECK-LABEL: sil @test_capture_projection_test : $@convention(thin) () -> @owned @callee_owned () -> () {
+sil @test_capture_projection_test : $@convention(thin) () -> @owned @callee_owned () -> () {
+bb0:
+  %0 = function_ref @baz_init : $@convention(thin) (@thin Baz.Type) -> @owned Baz
+  %1 = metatype $@thin Baz.Type
+
+  // CHECK: [[BOX1:%.*]] = alloc_box $<τ_0_0> { var τ_0_0 } <Baz>
+  %2 = alloc_box $<τ_0_0> { var τ_0_0 } <Baz>
+  %3 = project_box %2 : $<τ_0_0> { var τ_0_0 } <Baz>, 0
+  %4 = apply %0(%1) : $@convention(thin) (@thin Baz.Type) -> @owned Baz
+  store %4 to [init] %3 : $*Baz
+
+  // CHECK: [[BOX2:%.*]] = alloc_box $<τ_0_0> { var τ_0_0 } <Baz>
+  %5 = alloc_box $<τ_0_0> { var τ_0_0 } <Baz>
+  %6 = project_box %5 : $<τ_0_0> { var τ_0_0 } <Baz>, 0
+  %7 = apply %0(%1) : $@convention(thin) (@thin Baz.Type) -> @owned Baz
+  store %7 to [init] %6 : $*Baz
+
+  // CHECK: [[BOX1_COPY:%.*]] = copy_value [[BOX1]]
+  // CHECK: [[BOX2_COPY:%.*]] = copy_value [[BOX2]]
+  // CHECK: [[BOX2_COPY_PB:%.*]] = project_box [[BOX2_COPY]]
+  // CHECK-NOT: function_ref @closure_indirect_result :
+  // CHECK: [[SPECIALIZED_FUNC:%.*]] = function_ref @_T023closure_projection_testTf2ni_n : $@convention(thin) (@owned <τ_0_0> { var τ_0_0 } <Baz>, @owned Baz) -> ()
+  // CHECK-NOT: function_ref @closure_projection_test :
+  // CHECK: [[LOADBAZ:%.*]] = load [copy] [[BOX2_COPY_PB]] : $*Baz
+  // CHECK: destroy_value [[BOX2_COPY]]
+  %19 = copy_value %2 : $<τ_0_0> { var τ_0_0 } <Baz>
+  %20 = copy_value %5 : $<τ_0_0> { var τ_0_0 } <Baz>
+  %17 = function_ref @closure_projection_test : $@convention(thin) (@owned <τ_0_0> { var τ_0_0 } <Baz>, @owned <τ_0_0> { var τ_0_0 } <Baz>) -> ()
+
+  // The partial apply has one value argument for each pair of arguments that was
+  // previously used to capture and pass the variable by reference
+  // CHECK: {{.*}} = partial_apply [[SPECIALIZED_FUNC]]([[BOX1_COPY]], [[LOADBAZ]])
+  %21 = partial_apply %17(%19, %20) : $@convention(thin) (@owned <τ_0_0> { var τ_0_0 } <Baz>, @owned <τ_0_0> { var τ_0_0 } <Baz>) -> ()
+
+  destroy_value %2 : $<τ_0_0> { var τ_0_0 } <Baz>
+  destroy_value %5 : $<τ_0_0> { var τ_0_0 } <Baz>
+
+  return %21 : $@callee_owned () -> ()
+}
+
+// CHECK-LABEL: sil @_T023closure_projection_testTf2ni_n : $@convention(thin) (@owned <τ_0_0> { var τ_0_0 } <Baz>, @owned Baz) -> () {
+// CHECK: bb0([[UNPROMOTED_BAZ:%.*]] : @owned $<τ_0_0> { var τ_0_0 } <Baz>, [[BAZ:%.*]] : @owned $Baz):
+// CHECK:   [[BORROWED_BAZ:%.*]] = begin_borrow [[BAZ]] : $Baz
+// CHECK:   [[X:%.*]] = struct_extract [[BORROWED_BAZ]] : $Baz, #Baz.x
+// CHECK:   [[BAR:%.*]] = struct_extract [[BORROWED_BAZ]] : $Baz, #Baz.bar
+// CHECK:   [[BAR_COPY:%.*]] = copy_value [[BAR]]
+// CHECK:   [[BAR2:%.*]] = struct_extract [[BORROWED_BAZ]] : $Baz, #Baz.bar
+// CHECK:   [[BAR2_COPY:%.*]] = copy_value [[BAR2]]
+// CHECK:   [[BAR2_COPY_BORROW:%.*]] = begin_borrow [[BAR2_COPY]]
+// CHECK:   apply {{%.*}}([[BAR_COPY]], [[BAR2_COPY_BORROW]], [[X]])
+// CHECK:   end_borrow [[BAR2_COPY_BORROW]] from [[BAR2_COPY]]
+// CHECK:   destroy_value [[BAR2_COPY]]
+// CHECK:   end_borrow [[BORROWED_BAZ]] from [[BAZ]]
+// CHECK:   destroy_value [[BAZ]]
+// CHECK: } // end sil function '_T023closure_projection_testTf2ni_n'
+sil @closure_projection_test : $@convention(thin) (@owned <τ_0_0> { var τ_0_0 } <Baz>, @owned <τ_0_0> { var τ_0_0 } <Baz>) -> () {
+bb0(%0 : @owned $<τ_0_0> { var τ_0_0 } <Baz>, %1 : @owned $<τ_0_0> { var τ_0_0 } <Baz>):
+  %0a = project_box %0 : $<τ_0_0> { var τ_0_0 } <Baz>, 0
+  %2 = struct_element_addr %0a : $*Baz, #Baz.x
+  %3 = struct_element_addr %0a : $*Baz, #Baz.bar
+  %4 = load [trivial] %2 : $*Int
+  %5 = load [take] %3 : $*Bar
+  %6 = load [copy] %3 : $*Bar
+  %7 = begin_borrow %6 : $Bar
+  %8 = function_ref @destructured_baz_user : $@convention(thin) (@owned Bar, @guaranteed Bar, Int) -> ()
+  apply %8(%5, %7, %4) : $@convention(thin) (@owned Bar, @guaranteed Bar, Int) -> ()
+  end_borrow %7 from %6 : $Bar, $Bar
+  destroy_value %6 : $Bar
+
+  %1a = project_box %1 : $<τ_0_0> { var τ_0_0 } <Baz>, 0
+  %9 = struct_element_addr %1a : $*Baz, #Baz.x
+  %10 = struct_element_addr %1a : $*Baz, #Baz.bar
+  %11 = load [trivial] %9 : $*Int
+  %12 = load [copy] %10 : $*Bar
+  %13 = load [copy] %10 : $*Bar
+  %14 = begin_borrow %13 : $Bar
+  %15 = function_ref @destructured_baz_user : $@convention(thin) (@owned Bar, @guaranteed Bar, Int) -> ()
+  apply %15(%12, %14, %11) : $@convention(thin) (@owned Bar, @guaranteed Bar, Int) -> ()
+  end_borrow %14 from %13 : $Bar, $Bar
+  destroy_value %13 : $Bar
+
+  destroy_value %1 : $<τ_0_0> { var τ_0_0 } <Baz>
+  destroy_value %0 : $<τ_0_0> { var τ_0_0 } <Baz>
+  %t = tuple()
+  return %t : $()
+}
diff --git a/test/SILOptimizer/capture_promotion_ownership.swift b/test/SILOptimizer/capture_promotion_ownership.swift
index 0df9923..d9be04b 100644
--- a/test/SILOptimizer/capture_promotion_ownership.swift
+++ b/test/SILOptimizer/capture_promotion_ownership.swift
@@ -1,4 +1,4 @@
-// RUN: %target-swift-frontend %s -enable-sil-ownership -disable-sil-linking -emit-sil -o - -verify | %FileCheck %s
+// RUN: %target-swift-frontend %s -enable-sil-ownership -disable-sil-linking -emit-sil -o - | %FileCheck %s
 
 // NOTE: We add -disable-sil-linking to the compile line to ensure that we have
 // access to declarations for standard library types, but not definitions. This
diff --git a/test/SILOptimizer/capture_propagation_linkage.swift b/test/SILOptimizer/capture_propagation_linkage.swift
index 0af6223..f9b0b8c 100644
--- a/test/SILOptimizer/capture_propagation_linkage.swift
+++ b/test/SILOptimizer/capture_propagation_linkage.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t 
+// RUN: %empty-directory(%t) 
 // RUN: %target-build-swift %S/Inputs/capture_propagation_linkage/main.swift %s -O -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/SILOptimizer/cast_folding.swift b/test/SILOptimizer/cast_folding.swift
index daa86f2..4305260 100644
--- a/test/SILOptimizer/cast_folding.swift
+++ b/test/SILOptimizer/cast_folding.swift
@@ -7,6 +7,7 @@
 // which returns either true or false, i.e. all type checks should folded statically.
 
 public protocol P {}
+public protocol R {}
 
 protocol Q: P {}
 
@@ -950,6 +951,87 @@
     return cast42(p)
 }
 
+// CHECK-LABEL: sil [noinline] @{{.*}}test43{{.*}}
+// CHECK: bb0
+// CHECK-NEXT: %0 = integer_literal $Builtin.Int1, -1
+// CHECK-NEXT: %1 = struct $Bool
+// CHECK-NEXT: return %1
+@inline(never)
+public func test43() -> Bool {
+  return P.self is Any.Type
+}
+
+// CHECK-LABEL: sil [noinline] @{{.*}}test44{{.*}}
+// CHECK: bb0
+// CHECK-NEXT: %0 = integer_literal $Builtin.Int1, -1
+// CHECK-NEXT: %1 = struct $Bool
+// CHECK-NEXT: return %1
+@inline(never)
+public func test44() -> Bool {
+  return Any.self is Any.Type
+}
+
+// CHECK-LABEL: sil [noinline] @{{.*}}test45{{.*}}
+// CHECK: bb0
+// CHECK-NEXT: %0 = integer_literal $Builtin.Int1, -1
+// CHECK-NEXT: %1 = struct $Bool
+// CHECK-NEXT: return %1
+@inline(never)
+public func test45() -> Bool {
+  return (P & R).self is Any.Type
+}
+
+// CHECK-LABEL: sil [noinline] @{{.*}}test46{{.*}}
+// CHECK: bb0
+// CHECK-NEXT: %0 = integer_literal $Builtin.Int1, -1
+// CHECK-NEXT: %1 = struct $Bool
+// CHECK-NEXT: return %1
+@inline(never)
+public func test46() -> Bool {
+  return AnyObject.self is Any.Type
+}
+
+// CHECK-LABEL: sil [noinline] @{{.*}}test47{{.*}}
+// CHECK: bb0
+// CHECK-NEXT: %0 = integer_literal $Builtin.Int1, -1
+// CHECK-NEXT: %1 = struct $Bool
+// CHECK-NEXT: return %1
+@inline(never)
+public func test47() -> Bool {
+  return Any.Type.self is Any.Type
+}
+
+// CHECK-LABEL: sil [noinline] @{{.*}}test48{{.*}}
+// CHECK: bb0
+// CHECK-NEXT: %0 = integer_literal $Builtin.Int1, 0
+// CHECK-NEXT: %1 = struct $Bool
+// CHECK-NEXT: return %1
+@inline(never)
+public func test48() -> Bool {
+  return Any.Type.self is Any.Type.Type
+}
+
+func cast<U, V>(_ u: U.Type) -> V? {
+  return u as? V
+}
+
+// CHECK-LABEL: sil [noinline] @{{.*}}testCastAnyObjectProtocolTo{{.*}}Type
+// CHECK: %0 = enum $Optional{{.*}}, #Optional.none!enumelt
+// CHECK-NEXT: return %0
+@inline(never)
+public func testCastAnyObjectProtocolToAnyObjectType() -> AnyObject.Type? {
+  return cast(AnyObject.self)
+}
+
+// CHECK-LABEL: // testCastProtocolTypeProtocolToProtocolTypeType
+// CHECK: sil [noinline] @{{.*}}testCastProtocol{{.*}}$@convention(thin) () -> Optional<@thick P.Type.Type>
+// CHECK: %0 = enum $Optional{{.*}}, #Optional.none!enumelt
+// CHECK-NEXT: return %0
+@inline(never)
+public func testCastProtocolTypeProtocolToProtocolTypeType() -> P.Type.Type? {
+  return P.Type.self as? P.Type.Type
+}
+
 print("test0=\(test0())")
 
 print("test1=\(test1())")
diff --git a/test/SILOptimizer/cast_folding_objc.swift b/test/SILOptimizer/cast_folding_objc.swift
index 5f268c6..8f98198 100644
--- a/test/SILOptimizer/cast_folding_objc.swift
+++ b/test/SILOptimizer/cast_folding_objc.swift
@@ -196,6 +196,38 @@
   return o as! Int.Type
 }
 
+func cast<U, V>(_ u: U.Type) -> V? {
+  return u as? V
+}
+
+public protocol P {
+}
+
+// Any casts from P.Protocol to P.Type should fail.
+@inline(never)
+public func testCastPProtocolToPType() -> ObjCP.Type? {
+  return cast(ObjCP.self)
+}
+
+@objc
+public protocol ObjCP {
+}
+
+@inline(never)
+public func testCastObjCPProtocolToObjCPType() -> ObjCP.Type? {
+  return cast(ObjCP.self)
+}
+
+@inline(never)
+public func testCastProtocolCompositionProtocolToProtocolCompositionType() -> (P & ObjCP).Type? {
+  return cast((P & ObjCP).self)
+}
+
+@inline(never)
+public func testCastProtocolCompositionProtocolToProtocolType () -> P.Type? {
+  return (P & ObjCP).self as? P.Type
+}
+
 print("test0=\(test0())")
 
 
@@ -241,7 +273,17 @@
 // CHECK-LABEL: sil [noinline] @{{.*}}testCastEveryToNonClassType
 // CHECK:         unconditional_checked_cast_addr
 
+// CHECK-LABEL: sil [noinline] @{{.*}}testCastPProtocolToPType
+// CHECK: %0 = enum $Optional{{.*}}, #Optional.none!enumelt
+// CHECK-NEXT: return %0
 
+// CHECK-LABEL: sil [noinline] @{{.*}}testCastObjCPProtocolTo{{.*}}PType
+// CHECK: %0 = enum $Optional{{.*}}, #Optional.none!enumelt
+// CHECK-NEXT: return %0
+
+// CHECK-LABEL: sil [noinline] @{{.*}}testCastProtocolComposition{{.*}}Type
+// CHECK: %0 = enum $Optional{{.*}}, #Optional.none!enumelt
+// CHECK-NEXT: return %0
 
 // Check that compiler understands that this cast always succeeds.
 // Since it is can be statically proven that NSString is bridgeable to String,
diff --git a/test/SILOptimizer/character_literals.swift b/test/SILOptimizer/character_literals.swift
index 696626d..3254167 100644
--- a/test/SILOptimizer/character_literals.swift
+++ b/test/SILOptimizer/character_literals.swift
@@ -5,28 +5,23 @@
 // a simple literal for character literals.
 
 // CHECK-LABEL: define {{.*}}charArray
-// CHECK-NOT: {{^}}[^ ]
-// CHECK:       store i64 9223372036854775649, i64*
-// CHECK-NOT: {{^}}[^ ]
-// CHECK:       store i64 9223372036854775650, i64*
-// CHECK-NOT: {{^}}[^ ]
-// CHECK:       store i64 9223372036854775651, i64*
-// CHECK-NOT: {{^}}[^ ]
-// CHECK:       store i64 9223372036854775652, i64*
-// CHECK-NOT: {{^}}[^ ]
-// CHECK:       ret
+// CHECK:  store <2 x i64> <i64 97, i64 98>
+// CHECK:  store <2 x i64> <i64 99, i64 100>
+// CHECK:  ret
 public func charArray(_ i: Int) -> [Character] {
   return [ "a", "b", "c", "d" ]
 }
 
 // CHECK-LABEL: define {{.*}}singleChar
-// CHECK: ret {{.*}} 9223372036854775649
+// CHECK: ret {{.*}} 97
 public func singleChar() -> Character {
   return "a"
 }
 
+// FIXME: The following part of this test is temporarily disabled.
+
 // CHECK-LABEL: define {{.*}}singleNonAsciiChar
-// CHECK: ret {{.*}} 9223372036848850918
+// CHECK: ret {{.*}} 26085
 public func singleNonAsciiChar() -> Character {
   return "日"
 }
diff --git a/test/SILOptimizer/closure_specialize.sil b/test/SILOptimizer/closure_specialize.sil
index d8609ac..35aa8b1 100644
--- a/test/SILOptimizer/closure_specialize.sil
+++ b/test/SILOptimizer/closure_specialize.sil
@@ -127,7 +127,9 @@
 }
 
 // We don't handle closures that close over address types (*NOTE* this includes
-// address and non-address only types). This is a temporary limitation.
+// address and non-address only types) taken as @in or @in_guaranteed.
+
+// This is a temporary limitation.
 // CHECK-LABEL: sil @address_closure : $@convention(thin) (@in Int) -> () {
 sil @address_closure : $@convention(thin) (@in Int) -> () {
 bb0(%0 : $*Int):
diff --git a/test/SILOptimizer/closure_specialize_consolidated.sil b/test/SILOptimizer/closure_specialize_consolidated.sil
index 775616e..5f815e2 100644
--- a/test/SILOptimizer/closure_specialize_consolidated.sil
+++ b/test/SILOptimizer/closure_specialize_consolidated.sil
@@ -12,6 +12,20 @@
   func foo(f: (Int32)->Int32, _ j: Int32) -> Int32
 }
 
+protocol Q {
+}
+
+public class C {
+  @sil_stored var c: C? { get set }
+  init()
+}
+
+public struct S: Q {
+  @sil_stored var c: C? { get set }
+  init(c: C?)
+  init()
+}
+
 // = Test Summary =
 // We test the following things here:
 //
@@ -28,19 +42,73 @@
 // Address Argument Tests //
 ////////////////////////////
 //
-// Make sure that we do not specialize if we have address arguments. We do not
-// handle them correctly so there is a special check to not perform any action.
+// Make sure that we can specialize even if we have address arguments.
 //
-
-// We don't handle closures that close over address types (*NOTE* this includes
-// address and non-address only types). This is a temporary limitation.
-// CHECK-LABEL: sil @address_closure : $@convention(thin) (@in Int) -> () {
-sil @address_closure : $@convention(thin) (@in Int) -> () {
-bb0(%0 : $*Int):
+// But we don't handle closures that close over address types passed as @in or
+// @in_guaranteed.
+// (*NOTE* this includes address and non-address only types).
+// This is a temporary limitation.
+// CHECK-LABEL: sil @address_closure : $@convention(thin) (@in Int32) -> () {
+sil @address_closure : $@convention(thin) (@in Int32) -> () {
+bb0(%0 : $*Int32):
   %6 = tuple()
   return %6 : $()
 }
 
+sil @address_closure_struct_complex : $@convention(thin) (@in S) -> () {
+bb0(%0 : $*S):
+  %6 = tuple()
+  return %6 : $()
+}
+
+// Check that a specialization of address_closure_user was generated which does not
+// take a closure as a parameter anymore.
+// CHECK-LABEL: sil shared @{{.*}}address_closure_user{{.*}} : $@convention(thin) (Int32, @inout_aliasable Int32) -> ()
+// CHECK: function_ref @address_closure_trivial : $@convention(thin) (Int32, @inout_aliasable Int32) -> ()
+// CHECK: partial_apply %{{.*}} : $@convention(thin) (Int32, @inout_aliasable Int32) -> ()
+// CHECK: apply
+// CHECK: return
+
+// Check that a specialization of address_closure_user was generated which does not
+// take a closure as a parameter anymore.
+// CHECK-LABEL: sil shared @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@inout_aliasable Int32) -> ()
+// CHECK: function_ref @address_closure_trivial_mutating : $@convention(thin) (@inout_aliasable Int32) -> ()
+// CHECK: partial_apply %{{.*}} : $@convention(thin) (@inout_aliasable Int32) -> ()
+// CHECK: apply
+// CHECK: return
+
+// Check that a specialization of address_closure_user was generated which does not
+// take a closure as a parameter anymore.
+// CHECK-LABEL: sil shared @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@inout_aliasable P) -> ()
+// CHECK: function_ref @address_closure_existential : $@convention(thin) (@inout_aliasable P) -> ()
+// CHECK: partial_apply %{{.*}} : $@convention(thin) (@inout_aliasable P) -> ()
+// CHECK: apply
+// CHECK: return
+
+// Check that a specialization of address_closure_user was generated which does not
+// take a closure as a parameter anymore.
+// CHECK-LABEL: sil shared @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@inout_aliasable S, @owned S) -> ()
+// CHECK: function_ref @address_closure_struct1 : $@convention(thin) (@inout_aliasable S, @owned S) -> ()
+// CHECK: partial_apply %{{.*}} : $@convention(thin) (@inout_aliasable S, @owned S) -> ()
+// CHECK: apply
+// CHECK: return
+
+// Check that a specialization of address_closure_user was generated which does not
+// take a closure as a parameter anymore.
+// CHECK-LABEL: sil shared @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@inout_aliasable S, @owned S) -> ()
+// CHECK: function_ref @address_closure_struct2 : $@convention(thin) (@inout_aliasable S, @owned S) -> ()
+// CHECK: partial_apply %{{.*}} : $@convention(thin) (@inout_aliasable S, @owned S) -> ()
+// CHECK: apply
+// CHECK: return
+
+// Check that a specialization of address_closure_user was generated which does not
+// take a closure as a parameter anymore.
+// CHECK-LABEL: sil shared @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@inout_aliasable C, @owned C) -> ()
+// CHECK: function_ref @address_closure_class1 : $@convention(thin) (@inout_aliasable C, @owned C) -> ()
+// CHECK: partial_apply %{{.*}} : $@convention(thin) (@inout_aliasable C, @owned C) -> ()
+// CHECK: apply
+// CHECK: return
+
 // CHECK-LABEL: sil @address_closure_user : $@convention(thin) (@owned @callee_owned () -> ()) -> () {
 sil @address_closure_user : $@convention(thin) (@owned @callee_owned () -> ()) -> () {
 bb0(%0 : $@callee_owned () -> ()):
@@ -49,18 +117,358 @@
   return %9999 : $()
 }
 
-// CHECK-LABEL: sil @address_caller : $@convention(thin) (@in Int) -> () {
+// CHECK-LABEL: sil @address_caller : $@convention(thin) (@in Int32) -> () {
 // CHECK-NOT: _TTSf1cl15address_closureSi__address_closure_user
-sil @address_caller : $@convention(thin) (@in Int) -> () {
-bb0(%0 : $*Int):
-  %1 = function_ref @address_closure : $@convention(thin) (@in Int) -> ()
-  %2 = partial_apply %1(%0) : $@convention(thin) (@in Int) -> ()
+sil @address_caller : $@convention(thin) (@in Int32) -> () {
+bb0(%0 : $*Int32):
+  %1 = function_ref @address_closure : $@convention(thin) (@in Int32) -> ()
+  %2 = partial_apply %1(%0) : $@convention(thin) (@in Int32) -> ()
   %3 = function_ref @address_closure_user : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
   %4 = apply %3(%2) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
   %9999 = tuple()
   return %9999 : $()
 }
 
+// We don't handle closures that close over address types passed as @in or
+// @in_guaranteed.
+// (*NOTE* this includes address and non-address only types).
+// This is a temporary limitation.
+//
+// CHECK-LABEL: sil @address_caller_complex : $@convention(thin) (@in Int32) -> ()
+// CHECK-NOT: function_ref @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@in Int32) -> ()
+// CHECK: partial_apply
+// CHECK-NOT: function_ref @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@in Int32) -> ()
+// CHECK: return
+sil @address_caller_complex : $@convention(thin) (@in Int32) -> () {
+bb0(%0 : $*Int32):
+  %00 = alloc_stack $Int32
+  %01 = load %0 : $*Int32
+  store %01 to %00 : $*Int32
+  %1 = function_ref @address_closure : $@convention(thin) (@in Int32) -> ()
+  %2 = partial_apply %1(%00) : $@convention(thin) (@in Int32) -> ()
+  %3 = function_ref @address_closure_user : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %4 = apply %3(%2) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  dealloc_stack %00 : $*Int32
+  br bb1
+
+bb1:
+  %6 = apply %3(%2) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %9999 = tuple()
+  return %9999 : $()
+}
+
+// We don't handle closures that close over address types passed as @in or
+// @in_guaranteed.
+// (*NOTE* this includes address and non-address only types).
+// This is a temporary limitation.
+//
+// CHECK-LABEL: sil @address_caller_struct_complex : $@convention(thin) (@in S) -> ()
+// CHECK-NOT:  [[SPECIALIZED_FN1:%.*]] = function_ref @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@in S) -> ()
+// CHECK: partial_apply 
+// CHECK-NOT:  [[SPECIALIZED_FN1:%.*]] = function_ref @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@in S) -> ()
+// CHECK: return
+sil @address_caller_struct_complex : $@convention(thin) (@in S) -> () {
+bb0(%0 : $*S):
+  %00 = alloc_stack $S
+  %01 = load %0 : $*S
+  retain_value %01 : $S
+  store %01 to %00 : $*S
+  %1 = function_ref @address_closure_struct_complex : $@convention(thin) (@in S) -> ()
+  %2 = partial_apply %1(%00) : $@convention(thin) (@in S) -> ()
+  %3 = function_ref @address_closure_user : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %4 = apply %3(%2) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %5  = load %00 : $*S
+  release_value %5 : $S
+  dealloc_stack %00 : $*S
+  br bb1
+
+bb1:
+  %6 = apply %3(%2) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %9999 = tuple()
+  return %9999 : $()
+}
+
+// More complex tests involving address arguments.
+
+sil @address_closure_trivial : $@convention(thin) (Int32, @inout_aliasable Int32) -> () {
+bb0(%0 : $Int32, %1 : $*Int32):
+  %9 = integer_literal $Builtin.Int32, 42
+  %10 = struct $Int32 (%9 : $Builtin.Int32)
+  store %10 to %1 : $*Int32
+  %12 = tuple ()
+  return %12 : $()
+}
+
+// CHECK-LABEL: sil @address_caller_trivial
+// CHECK-NOT: partial_apply
+// CHECK:  [[SPECIALIZED_FN1:%.*]] = function_ref @{{.*}}address_closure_user{{.*}} : $@convention(thin) (Int32, @inout_aliasable Int32) -> ()
+// CHECK: apply [[SPECIALIZED_FN1]]{{.*}}
+// CHECK-NOT: partial_apply
+// CHECK: return
+sil @address_caller_trivial: $@convention(thin) (Int32) -> Int32 {
+bb0(%0 : $Int32):
+  %2 = alloc_stack $Int32, var, name "xx"
+  store %0 to %2 : $*Int32
+  // function_ref address_closure_user(f:)
+  %4 = function_ref @address_closure_user : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  // function_ref address_closure_trivial(x:)
+  %5 = function_ref @address_closure_trivial : $@convention(thin) (Int32, @inout_aliasable Int32) -> ()
+  %6 = partial_apply %5(%0, %2) : $@convention(thin) (Int32, @inout_aliasable Int32) -> ()
+  %7 = apply %4(%6) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %8 = load %2 : $*Int32
+  dealloc_stack %2 : $*Int32
+  return %8 : $Int32
+}
+
+sil @address_closure_trivial_mutating : $@convention(thin) (@inout_aliasable Int32) -> () {
+bb0(%0 : $*Int32):
+  %2 = struct_element_addr %0 : $*Int32, #Int32._value
+  %3 = load %2 : $*Builtin.Int32
+  %4 = integer_literal $Builtin.Int32, 1
+  %5 = integer_literal $Builtin.Int1, -1
+  %6 = builtin "sadd_with_overflow_Int32"(%3 : $Builtin.Int32, %4 : $Builtin.Int32, %5 : $Builtin.Int1) : $(Builtin.Int32, Builtin.Int1)
+  %7 = tuple_extract %6 : $(Builtin.Int32, Builtin.Int1), 0
+  %8 = tuple_extract %6 : $(Builtin.Int32, Builtin.Int1), 1
+  cond_fail %8 : $Builtin.Int1
+  %10 = struct $Int32 (%7 : $Builtin.Int32)
+  store %10 to %0 : $*Int32
+  %12 = tuple ()
+  return %12 : $()
+}
+
+// CHECK-LABEL: sil @address_caller_trivial_mutating
+// CHECK-NOT: partial_apply
+// CHECK:  [[SPECIALIZED_FN1:%.*]] = function_ref @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@inout_aliasable Int32) -> ()
+// CHECK: apply [[SPECIALIZED_FN1]]{{.*}}
+// CHECK-NOT: partial_apply
+// CHECK: return
+sil @address_caller_trivial_mutating: $@convention(thin) (Int32) -> Int32 {
+bb0(%0 : $Int32):
+  %2 = alloc_stack $Int32, var, name "xx"
+  store %0 to %2 : $*Int32
+  %4 = function_ref @address_closure_user : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %5 = function_ref @address_closure_trivial_mutating : $@convention(thin) (@inout_aliasable Int32) -> ()
+  %6 = partial_apply %5(%2) : $@convention(thin) (@inout_aliasable Int32) -> ()
+  %7 = apply %4(%6) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %8 = load %2 : $*Int32
+  dealloc_stack %2 : $*Int32
+  return %8 : $Int32
+}
+
+sil @S_init : $@convention(method) (@thin S.Type) -> @owned S
+
+sil hidden @address_closure_body_out_result : $@convention(thin) (@in Q, @in Q) -> @out Q {
+bb0(%0 : $*Q, %1 : $*Q, %2 : $*Q):
+  %5 = init_existential_addr %0 : $*Q, $S
+  // function_ref S.init()
+  %6 = function_ref @S_init : $@convention(method) (@thin S.Type) -> @owned S
+  %7 = metatype $@thin S.Type
+  %8 = apply %6(%7) : $@convention(method) (@thin S.Type) -> @owned S
+  store %8 to %5 : $*S
+  destroy_addr %2 : $*Q
+  destroy_addr %1 : $*Q
+  %12 = tuple ()
+  return %12 : $()
+}
+
+sil @address_closure_out_result : $@convention(thin) (@in Q, @inout_aliasable Q, @inout_aliasable Q) -> @out Q {
+bb0(%0 : $*Q, %1 : $*Q, %2 : $*Q, %3 : $*Q):
+  %7 = function_ref @address_closure_body_out_result : $@convention(thin) (@in Q, @in Q) -> @out Q
+  %8 = alloc_stack $Q
+  copy_addr %2 to [initialization] %8 : $*Q
+  %10 = alloc_stack $Q
+  copy_addr %3 to [initialization] %10 : $*Q
+  %12 = apply %7(%0, %8, %10) : $@convention(thin) (@in Q, @in Q) -> @out Q
+  dealloc_stack %10 : $*Q
+  dealloc_stack %8 : $*Q
+  destroy_addr %1 : $*Q
+  %16 = tuple ()
+  return %16 : $()
+}
+
+// Check that a specialization of address_closure_user_out_result was generated which does not
+// take a closure as a parameter anymore.
+// CHECK-LABEL: sil shared @{{.*}}address_closure_user_out_result{{.*}} : $@convention(thin) (@inout_aliasable Q, @inout_aliasable Q) -> @out Q
+// CHECK: function_ref @address_closure_out_result : $@convention(thin) (@in Q, @inout_aliasable Q, @inout_aliasable Q) -> @out Q
+// CHECK: [[PARTIAL_APPLY:%.*]] = partial_apply %{{.*}} : $@convention(thin) (@in Q, @inout_aliasable Q, @inout_aliasable Q) -> @out Q
+// CHECK: apply [[PARTIAL_APPLY]]
+// CHECK: return
+
+sil @address_closure_user_out_result : $@convention(thin) (@owned @callee_owned (@in Q) -> @out Q) -> @out Q {
+bb0(%0 : $*Q, %1 : $@callee_owned (@in Q) -> @out Q):
+  %4 = alloc_stack $Q
+  %5 = init_existential_addr %4 : $*Q, $S
+  %6 = function_ref @S_init : $@convention(method) (@thin S.Type) -> @owned S
+  %7 = metatype $@thin S.Type
+  %8 = apply %6(%7) : $@convention(method) (@thin S.Type) -> @owned S
+  store %8 to %5 : $*S
+  %10 = apply %1(%0, %4) : $@callee_owned (@in Q) -> @out Q
+  dealloc_stack %4 : $*Q
+  strong_release %1 : $@callee_owned (@in Q) -> @out Q
+  %13 = tuple ()
+  return %13 : $()
+}
+
+// Check that closure specialization can handle cases where the full closure type may have
+// unsupported address type arguments (e.g. @in or @out), but the partial_apply has only
+// supported address type arguments, i.e. @inout or @inout_aliasable.
+//
+// CHECK-LABEL: sil @address_caller_out_result : $@convention(thin) (@in Q, @in Q) -> @out Q
+// CHECK-NOT: partial_apply
+// CHECK:  [[SPECIALIZED_FN1:%.*]] = function_ref @{{.*}}address_closure_user_out_result{{.*}} : $@convention(thin) (@inout_aliasable Q, @inout_aliasable Q) -> @out Q
+// CHECK: apply [[SPECIALIZED_FN1]]{{.*}}
+// CHECK-NOT: partial_apply
+// CHECK: return
+sil @address_caller_out_result: $@convention(thin) (@in Q, @in Q) -> @out Q {
+bb0(%0 : $*Q, %1 : $*Q, %2 : $*Q):
+  %5 = function_ref @address_closure_user_out_result : $@convention(thin) (@owned @callee_owned (@in Q) -> @out Q) -> @out Q
+  %6 = function_ref @address_closure_out_result : $@convention(thin) (@in Q, @inout_aliasable Q, @inout_aliasable Q) -> @out Q
+  %7 = partial_apply %6(%1, %2) : $@convention(thin) (@in Q, @inout_aliasable Q, @inout_aliasable Q) -> @out Q 
+  %8 = apply %5(%0, %7) : $@convention(thin) (@owned @callee_owned (@in Q) -> @out Q) -> @out Q
+  destroy_addr %2 : $*Q
+  destroy_addr %1 : $*Q
+  %11 = tuple ()
+  return %11 : $()
+}
+
+// CHECK-LABEL: sil @address_caller_existential
+// CHECK-NOT: partial_apply
+// CHECK:  [[SPECIALIZED_FN1:%.*]] = function_ref @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@inout_aliasable P) -> ()
+// CHECK:  [[SPECIALIZED_FN2:%.*]] = function_ref @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@inout_aliasable P) -> ()
+// CHECK: apply [[SPECIALIZED_FN2]]{{.*}}
+// CHECK: apply [[SPECIALIZED_FN1]]{{.*}}
+// CHECK-NOT: partial_apply
+// CHECK: return
+sil @address_caller_existential : $@convention(thin) (@in P, @in P, Int32) -> @out P {
+bb0(%0 : $*P, %1 : $*P, %2 : $*P, %3 : $Int32):
+  %7 = alloc_stack $P
+  copy_addr %1 to [initialization] %7 : $*P
+  %9 = function_ref @address_closure_existential : $@convention(thin) (@inout_aliasable P) -> ()
+  %10 = partial_apply %9(%7) : $@convention(thin) (@inout_aliasable P) -> ()
+  %12 = function_ref @address_closure_user : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  strong_retain %10 : $@callee_owned () -> ()
+  %14 = apply %12(%10) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  strong_retain %10 : $@callee_owned () -> ()
+  %16 = apply %12(%10) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %17 = integer_literal $Builtin.Int32, 10
+  %18 = struct_extract %3 : $Int32, #Int32._value
+  %19 = builtin "cmp_slt_Int32"(%17 : $Builtin.Int32, %18 : $Builtin.Int32) : $Builtin.Int1
+  cond_br %19, bb1, bb2
+
+bb1:
+  destroy_addr %2 : $*P
+  copy_addr %1 to [initialization] %0 : $*P
+  destroy_addr %1 : $*P
+  strong_release %10 : $@callee_owned () -> ()
+  br bb3
+
+bb2:
+  destroy_addr %1 : $*P
+  copy_addr %2 to [initialization] %0 : $*P
+  destroy_addr %2 : $*P
+  strong_release %10 : $@callee_owned () -> ()
+  br bb3
+
+bb3:
+  destroy_addr %7 : $*P
+  dealloc_stack %7 : $*P
+  %33 = tuple ()
+  return %33 : $()
+}
+
+sil shared @address_closure_existential : $@convention(thin) (@inout_aliasable P) -> () {
+bb0(%0 : $*P):
+  %7 = tuple ()
+  return %7 : $()
+}
+
+sil @address_closure_struct1 : $@convention(thin) (@inout_aliasable S, @owned S) -> () {
+bb0(%0 : $*S, %1 : $S):
+  %4 = struct_element_addr %0 : $*S, #S.c
+  %5 = load %4 : $*Optional<C>
+  store %1 to %0 : $*S
+  release_value %5 : $Optional<C>
+  %8 = tuple ()
+  return %8 : $()
+}
+
+sil @address_closure_struct2 : $@convention(thin) (@inout_aliasable S, @owned S) -> () {
+bb0(%0 : $*S, %1 : $S):
+  %4 = struct_element_addr %0 : $*S, #S.c
+  %5 = load %4 : $*Optional<C>
+  store %1 to %0 : $*S
+  release_value %5 : $Optional<C>
+  %8 = tuple ()
+  return %8 : $()
+}
+
+// CHECK-LABEL: sil @address_caller_struct
+// CHECK-NOT: partial_apply
+// CHECK: [[SPECIALIZED_FN1:%.*]] = function_ref @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@inout_aliasable S, @owned S) -> () 
+// CHECK: apply [[SPECIALIZED_FN1]]
+// CHECK: [[SPECIALIZED_FN2:%.*]] = function_ref @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@inout_aliasable S, @owned S) -> () 
+// CHECK: apply [[SPECIALIZED_FN2]]
+// CHECK-NOT: partial_apply
+// CHECK: return
+sil @address_caller_struct : $@convention(thin) (@guaranteed S, @guaranteed S) -> @owned S {
+bb0(%0 : $S, %1 : $S):
+  %4 = alloc_stack $S, var, name "xx"
+  %5 = struct_extract %0 : $S, #S.c
+  store %0 to %4 : $*S
+  %7 = function_ref @address_closure_user : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %8 = function_ref @address_closure_struct1 : $@convention(thin) (@inout_aliasable S, @owned S) -> ()
+  %9 = partial_apply %8(%4, %1) : $@convention(thin) (@inout_aliasable S, @owned S) -> ()
+  retain_value %0 : $S
+  retain_value %1 : $S
+  %12 = apply %7(%9) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %13 = function_ref @address_closure_struct2 : $@convention(thin) (@inout_aliasable S, @owned S) -> ()
+  %14 = partial_apply %13(%4, %0) : $@convention(thin) (@inout_aliasable S, @owned S) -> ()
+  retain_value %5 : $Optional<C>
+  %16 = apply %7(%14) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %17 = load %4 : $*S
+  dealloc_stack %4 : $*S
+  return %17 : $S
+}
+
+sil shared @address_closure_class1 : $@convention(thin) (@inout_aliasable C, @owned C) -> () {
+bb0(%0 : $*C, %1 : $C):
+  %4 = load %0 : $*C
+  store %1 to %0 : $*C
+  strong_release %4 : $C
+  %7 = tuple ()
+  return %7 : $()
+}
+
+// CHECK-LABEL: sil @address_caller_class1
+// CHECK-NOT: partial_apply
+// CHECK:  [[SPECIALIZED_FN1:%.*]] = function_ref @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@inout_aliasable C, @owned C) -> ()
+// CHECK:  [[SPECIALIZED_FN2:%.*]] = function_ref @{{.*}}address_closure_user{{.*}} : $@convention(thin) (@inout_aliasable C, @owned C) -> ()
+// CHECK: apply [[SPECIALIZED_FN2]]{{.*}}
+// CHECK: apply [[SPECIALIZED_FN1]]{{.*}}
+// CHECK-NOT: partial_apply
+// CHECK: return
+sil @address_caller_class1 : $@convention(thin) (@guaranteed C, @guaranteed C) -> @owned C {
+bb0(%0 : $C, %1 : $C):
+  %4 = alloc_stack $C, var, name "xx"
+  store %0 to %4 : $*C
+  %7 = function_ref @address_closure_class1 : $@convention(thin) (@inout_aliasable C, @owned C) -> ()
+  %8 = partial_apply %7(%4, %1) : $@convention(thin) (@inout_aliasable C, @owned C) -> ()
+  %10 = function_ref @address_closure_user : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  strong_retain %0 : $C
+  strong_retain %1 : $C
+  strong_retain %8 : $@callee_owned () -> ()
+  %14 = apply %10(%8) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  strong_retain %8 : $@callee_owned () -> ()
+  %16 = apply %10(%8) : $@convention(thin) (@owned @callee_owned () -> ()) -> ()
+  %17 = load %4 : $*C
+  strong_retain %17 : $C
+  strong_release %8 : $@callee_owned () -> ()
+  %20 = load %4 : $*C
+  strong_release %20 : $C
+  dealloc_stack %4 : $*C
+  return %17 : $C
+}
+
 /////////////////////////////////////
 // Thin To Thick and Partial Apply //
 /////////////////////////////////////
@@ -135,9 +543,15 @@
   %9999 = tuple ()
   return %9999 : $()
 }
-
-// CHECK-LABEL: sil @thin_thick_and_partial_apply_test : $@convention(thin) (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> () {
-// CHECK: bb0([[ARG0:%.*]] : $Builtin.NativeObject, [[ARG1:%.*]] : $Builtin.Int32, [[ARG2:%.*]] : $Builtin.NativeObject, [[ARG3:%.*]] : $Builtin.NativeObject):
+sil @guaranteed_apply_callee_throw : $@convention(thin) (@guaranteed @callee_owned (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> (), Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject, @owned Error) -> @error Error {
+bb0(%0 : $@callee_owned (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> (), %1 : $Builtin.NativeObject, %2 : $Builtin.Int32, %3 : $Builtin.NativeObject, %4 : $Builtin.NativeObject, %5: $Error):
+  retain_value %3 : $Builtin.NativeObject
+  apply %0(%1, %2, %3, %4) : $@callee_owned (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> ()
+  release_value %3 : $Builtin.NativeObject
+  throw %5 : $Error
+}
+// CHECK-LABEL: sil @thin_thick_and_partial_apply_test : $@convention(thin) (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject, @owned Error) -> () {
+// CHECK: bb0([[ARG0:%.*]] : $Builtin.NativeObject, [[ARG1:%.*]] : $Builtin.Int32, [[ARG2:%.*]] : $Builtin.NativeObject, [[ARG3:%.*]] : $Builtin.NativeObject, [[ARG4:%.*]] : $Error):
 // CHECK: [[OLD_CLOSURE_CALLEE1:%.*]] = function_ref @large_closure_callee
 // CHECK: [[OLD_CLOSURE_CALLEE2:%.*]] = function_ref @small_closure_callee
 // CHECK: retain_value [[ARG0]] : $Builtin.NativeObject
@@ -172,8 +586,8 @@
 // CHECK-NEXT: release_value [[DEAD_CLOSURE_1]]
 // CHECK-NOT: release_value [[DEAD_CLOSURE_2]]
 
-// REMOVECLOSURES-LABEL: sil @thin_thick_and_partial_apply_test : $@convention(thin) (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> () {
-// REMOVECLOSURES: bb0([[ARG0:%.*]] : $Builtin.NativeObject, [[ARG1:%.*]] : $Builtin.Int32, [[ARG2:%.*]] : $Builtin.NativeObject, [[ARG3:%.*]] : $Builtin.NativeObject):
+// REMOVECLOSURES-LABEL: sil @thin_thick_and_partial_apply_test : $@convention(thin) (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject, @owned Error) -> () {
+// REMOVECLOSURES: bb0([[ARG0:%.*]] : $Builtin.NativeObject, [[ARG1:%.*]] : $Builtin.Int32, [[ARG2:%.*]] : $Builtin.NativeObject, [[ARG3:%.*]] : $Builtin.NativeObject, [[ARG4:%.*]] : $Error):
 // REMOVECLOSURES: [[OLD_CLOSURE_CALLEE1:%.*]] = function_ref @large_closure_callee
 // REMOVECLOSURES: [[OLD_CLOSURE_CALLEE2:%.*]] = function_ref @small_closure_callee
 // REMOVECLOSURES: retain_value [[ARG0]] : $Builtin.NativeObject
@@ -188,6 +602,7 @@
 // REMOVECLOSURES-NEXT: retain_value [[ARG2]] : $Builtin.NativeObject
 // REMOVECLOSURES-NEXT: retain_value [[ARG3]] : $Builtin.NativeObject
 // REMOVECLOSURES-NOT: partial_apply [[OLD_CLOSURE_CALLEE1]]
+// REMOVECLOSURES: [[SPECFUN4:%.*]] = function_ref @_T029guaranteed_apply_callee_throw014small_closure_C0Tf1cnnnnn_n
 // REMOVECLOSURES: [[SPECFUN2:%.*]] = function_ref @_T023guaranteed_apply_callee014small_closure_C0Tf1cnnnn_n
 // REMOVECLOSURES: [[SPECFUN3:%.*]] = function_ref @_T018owned_apply_callee014small_closure_C0Tf1cnnnn_n
 // REMOVECLOSURES-NOT: thin_to_thick_function [[OLD_CLOSURE_CALLEE2]]
@@ -198,13 +613,14 @@
 // REMOVECLOSURES-NEXT: strong_release [[ARG0]] : $Builtin.NativeObject
 // REMOVECLOSURES-NEXT: strong_release [[ARG2]] : $Builtin.NativeObject
 // REMOVECLOSURES-NEXT: strong_release [[ARG3]] : $Builtin.NativeObject
-
-sil @thin_thick_and_partial_apply_test : $@convention(thin) (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> () {
-bb0(%0 : $Builtin.NativeObject, %1 : $Builtin.Int32, %2 : $Builtin.NativeObject, %3 : $Builtin.NativeObject):
+// REMOVECLOSURES-NEXT: try_apply [[SPECFUN4]](
+sil @thin_thick_and_partial_apply_test : $@convention(thin) (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject, @owned Error) -> () {
+bb0(%0 : $Builtin.NativeObject, %1 : $Builtin.Int32, %2 : $Builtin.NativeObject, %3 : $Builtin.NativeObject, %11: $Error):
   %4 = function_ref @owned_apply_callee : $@convention(thin) (@owned @callee_owned (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> (), Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> ()
   %5 = function_ref @guaranteed_apply_callee : $@convention(thin) (@guaranteed @callee_owned (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> (), Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> ()
   %6 = function_ref @large_closure_callee : $@convention(thin) (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject, Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> ()
   %7 = function_ref @small_closure_callee : $@convention(thin) (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> ()
+  %10 = function_ref @guaranteed_apply_callee_throw : $@convention(thin) (@guaranteed @callee_owned (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> (), Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject, @owned Error) -> @error Error
 
   retain_value %0 : $Builtin.NativeObject
   retain_value %2 : $Builtin.NativeObject
@@ -219,6 +635,15 @@
   apply %5(%9, %0, %1, %2, %3) : $@convention(thin) (@guaranteed @callee_owned (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> (), Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> ()
 
   release_value %8 : $@callee_owned (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> ()
+  try_apply %10(%9, %0, %1, %2, %3, %11) : $@convention(thin) (@guaranteed @callee_owned (Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject) -> (), Builtin.NativeObject, Builtin.Int32, @owned Builtin.NativeObject, @guaranteed Builtin.NativeObject, @owned Error) -> @error Error, normal bb2, error bb3
+
+bb2(%n : $()):
+  br bb4
+
+bb3(%e : $Error):
+  br bb4
+
+bb4:
   %9999 = tuple()
   return %9999 : $()
 }
diff --git a/test/SILOptimizer/closure_specialize_simple.sil b/test/SILOptimizer/closure_specialize_simple.sil
index f231a86..5dce016 100644
--- a/test/SILOptimizer/closure_specialize_simple.sil
+++ b/test/SILOptimizer/closure_specialize_simple.sil
@@ -190,7 +190,7 @@
 // CHECK: [[INLINEDCLOSURE_CALLER1:%.*]] = function_ref @_T040indirect_parameter_partial_apply_caller10a1_b1_c1_D4_funTf1c_n
 // CHECK-NOT: partial_apply [[CLOSUREFUN]]()
 
-// We don't handle captured indirect parameters yet.
+// We don't handle captured indirect @in and @in_guaranteed parameters yet.
 // CHECK: [[CLOSURE2:%.*]] = partial_apply [[CLOSUREFUN]](%{{.*}})
 // CHECK: [[CLOSURE3:%.*]] = partial_apply [[CLOSUREFUN]](%{{.*}})
 // CHECK: [[CLOSURE4:%.*]] = partial_apply [[CLOSUREFUN]](%{{.*}})
diff --git a/test/SILOptimizer/dead_witness_module.swift b/test/SILOptimizer/dead_witness_module.swift
index 676a430..e0796a7 100644
--- a/test/SILOptimizer/dead_witness_module.swift
+++ b/test/SILOptimizer/dead_witness_module.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -Onone -parse-stdlib -parse-as-library  -module-name TestModule -sil-serialize-all %S/Inputs/TestModule.swift -emit-module-path %t/TestModule.swiftmodule 
 // RUN: %target-swift-frontend -O %s -I %t -emit-sil | %FileCheck %s
 
diff --git a/test/SILOptimizer/definite_init_diagnostics.swift b/test/SILOptimizer/definite_init_diagnostics.swift
index f9b623f..3f609b8 100644
--- a/test/SILOptimizer/definite_init_diagnostics.swift
+++ b/test/SILOptimizer/definite_init_diagnostics.swift
@@ -85,6 +85,7 @@
   
   let b5: Any
   b5 = "x"   
+  { takes_inout_any(&b5) }()   // expected-error {{immutable value 'b5' may not be passed inout}}
   ({ takes_inout_any(&b5) })()   // expected-error {{immutable value 'b5' may not be passed inout}}
 
   // Structs
diff --git a/test/SILOptimizer/definite_init_failable_initializers.swift b/test/SILOptimizer/definite_init_failable_initializers.swift
index b74e2cc..8c9344b 100644
--- a/test/SILOptimizer/definite_init_failable_initializers.swift
+++ b/test/SILOptimizer/definite_init_failable_initializers.swift
@@ -745,7 +745,9 @@
 // CHECK:       bb0(%0 : $FailableBaseClass):
 // CHECK:         [[CANARY:%.*]] = apply
 // CHECK-NEXT:    [[MEMBER_ADDR:%.*]] = ref_element_addr %0
-// CHECK-NEXT:    store [[CANARY]] to [[MEMBER_ADDR]]
+// CHECK-NEXT:    [[WRITE:%.*]] = begin_access [modify] [dynamic] [[MEMBER_ADDR]] : $*Canary
+// CHECK-NEXT:    store [[CANARY]] to [[WRITE]]
+// CHECK-NEXT:    end_access [[WRITE]] : $*Canary
 // CHECK-NEXT:    br bb1
 // CHECK:       bb1:
 // CHECK-NEXT:    strong_release %0
@@ -876,7 +878,9 @@
 // CHECK:         store %0 to [[SELF_BOX]]
 // CHECK:         [[CANARY:%.*]] = apply
 // CHECK-NEXT:    [[MEMBER_ADDR:%.*]] = ref_element_addr %0
-// CHECK-NEXT:    store [[CANARY]] to [[MEMBER_ADDR]]
+// CHECK-NEXT:    [[WRITE:%.*]] = begin_access [modify] [dynamic] [[MEMBER_ADDR]] : $*Canary
+// CHECK-NEXT:    store [[CANARY]] to [[WRITE]]
+// CHECK-NEXT:    end_access [[WRITE]] : $*Canary
 // CHECK-NEXT:    [[BASE_SELF:%.*]] = upcast %0
 // CHECK:         [[INIT_FN:%.*]] = function_ref @_T035definite_init_failable_initializers17FailableBaseClassCACSgyt28failBeforeFullInitialization_tcfc
 // CHECK-NEXT:    [[SELF_OPTIONAL:%.*]] = apply [[INIT_FN]]([[BASE_SELF]])
diff --git a/test/SILOptimizer/definite_init_objc_factory_init.swift b/test/SILOptimizer/definite_init_objc_factory_init.swift
index 30e6524c..855a990 100644
--- a/test/SILOptimizer/definite_init_objc_factory_init.swift
+++ b/test/SILOptimizer/definite_init_objc_factory_init.swift
@@ -52,3 +52,20 @@
     self.init(value: double)
   }
 }
+
+class SubHive : Hive {
+  // CHECK-LABEL: sil hidden @_T0027definite_init_objc_factory_B07SubHiveCACyt20delegatesToInherited_tcfc : $@convention(method) (@owned SubHive) -> @owned SubHive
+  convenience init(delegatesToInherited: ()) {
+    // CHECK: [[UPCAST:%.*]] = upcast %0 : $SubHive to $Hive
+    // CHECK: [[METATYPE:%.*]] = value_metatype $@thick Hive.Type, [[UPCAST]] : $Hive
+    // CHECK: [[METHOD:%.*]] = class_method [volatile] [[METATYPE]] : $@thick Hive.Type, #Hive.init!allocator.1.foreign : (Hive.Type) -> (Bee!) -> Hive!
+    // CHECK: [[OBJC:%.*]] = thick_to_objc_metatype [[METATYPE]] : $@thick Hive.Type to $@objc_metatype Hive.Type
+    // CHECK: apply [[METHOD]]({{.*}}, [[OBJC]])
+
+    // CHECK: [[METATYPE:%.*]] = value_metatype $@thick SubHive.Type, %0 : $SubHive
+    // CHECK-NEXT: dealloc_partial_ref %0 : $SubHive, [[METATYPE]] : $@thick SubHive.Type
+
+    // CHECK: return {{%.*}} : $SubHive
+    self.init(queen: Bee())
+  }
+}
diff --git a/test/SILOptimizer/devirt_access.swift b/test/SILOptimizer/devirt_access.swift
index 5823b56..adab588 100644
--- a/test/SILOptimizer/devirt_access.swift
+++ b/test/SILOptimizer/devirt_access.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -Onone -o %t %S/Inputs/devirt_access_other_module.swift
 
 // RUN: %target-swift-frontend -O -primary-file %s %S/Inputs/devirt_access_helper.swift -I %t -emit-sil -sil-inline-threshold 1000 -sil-verify-all | %FileCheck -check-prefix=WHOLE-MODULE %s
diff --git a/test/SILOptimizer/exclusivity_static_diagnostics.sil b/test/SILOptimizer/exclusivity_static_diagnostics.sil
index 21b1762..df80454 100644
--- a/test/SILOptimizer/exclusivity_static_diagnostics.sil
+++ b/test/SILOptimizer/exclusivity_static_diagnostics.sil
@@ -38,7 +38,7 @@
   %3 = project_box %2 : ${ var Int }, 0
   store %0 to [trivial] %3 : $*Int
   %4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
-  %5 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{simultaneous accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %5 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
   %6 = begin_access [modify] [unknown] %3 : $*Int  // expected-note {{conflicting access is here}}
   %7 = apply %4(%5, %6) : $@convention(thin) (@inout Int, @inout Int) -> ()
   end_access %6 : $*Int
@@ -55,7 +55,7 @@
   %3 = project_box %2 : ${ var Int }, 0
   store %0 to [trivial] %3 : $*Int
   %4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
-  %5 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{simultaneous accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %5 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
   %6 = begin_access [modify] [unknown] %5 : $*Int
   %7 = begin_access [modify] [unknown] %3 : $*Int  // expected-note {{conflicting access is here}}
   %8 = apply %4(%5, %6) : $@convention(thin) (@inout Int, @inout Int) -> ()
@@ -147,7 +147,7 @@
   br bb1
 bb1:
   // Make sure we don't diagnose twice.
-  %4 = begin_access [modify] [unknown] %3 : $*Int // expected-error {{simultaneous accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %4 = begin_access [modify] [unknown] %3 : $*Int // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
   %5 = begin_access [modify] [unknown] %3 : $*Int // expected-note {{conflicting access is here}}
   end_access %5: $*Int
   end_access %4: $*Int
@@ -199,7 +199,7 @@
   %2 = project_box %1 : ${ var Int }, 0
   store %0 to [trivial] %2 : $*Int
   %4 = begin_access [read] [unknown] %2 : $*Int // expected-note {{conflicting access is here}}
-  %5 = begin_access [modify] [unknown] %2 : $*Int // expected-error {{simultaneous accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %5 = begin_access [modify] [unknown] %2 : $*Int // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
   end_access %5 : $*Int
   end_access %4: $*Int
   destroy_value %1 : ${ var Int }
@@ -213,7 +213,7 @@
   %1 = alloc_box ${ var Int }
   %2 = project_box %1 : ${ var Int }, 0
   store %0 to [trivial] %2 : $*Int
-  %4 = begin_access [modify] [unknown] %2 : $*Int // expected-error {{simultaneous accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %4 = begin_access [modify] [unknown] %2 : $*Int // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
   %5 = begin_access [read] [unknown] %2 : $*Int // expected-note {{conflicting access is here}}
   end_access %5 : $*Int
   end_access %4: $*Int
@@ -232,7 +232,7 @@
 bb0(%0 : $ClassWithStoredProperty):
   %1 = ref_element_addr %0 : $ClassWithStoredProperty, #ClassWithStoredProperty.f
 
-  // expected-error@+1{{simultaneous accesses to var 'f', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-error@+1{{overlapping accesses to 'f', but modification requires exclusive access; consider copying to a local variable}}
   %2 = begin_access [modify] [dynamic] %1 : $*Int
   %3 = ref_element_addr %0 : $ClassWithStoredProperty, #ClassWithStoredProperty.f
 
@@ -252,7 +252,7 @@
   %2 = begin_borrow %0 : $ClassWithStoredProperty
   %3 = ref_element_addr %1 : $ClassWithStoredProperty, #ClassWithStoredProperty.f
 
-  // expected-error@+1{{simultaneous accesses to var 'f', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-error@+1{{overlapping accesses to 'f', but modification requires exclusive access; consider copying to a local variable}}
   %4 = begin_access [modify] [dynamic] %3 : $*Int
   %5 = ref_element_addr %2 : $ClassWithStoredProperty, #ClassWithStoredProperty.f
 
@@ -279,7 +279,7 @@
   store %0 to [trivial] %3 : $*Int
   %4 = copy_value %2 : ${ var Int }
   %5 = project_box %4 : ${ var Int }, 0
-  %6 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{simultaneous accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %6 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
   %7 = begin_access [modify] [unknown] %5 : $*Int  // expected-note {{conflicting access is here}}
   end_access %7 : $*Int
   end_access %6: $*Int
@@ -297,7 +297,7 @@
   %3 = project_box %2 : ${ var Int }, 0
   store %0 to [trivial] %3 : $*Int
   %4 = project_box %2 : ${ var Int }, 0
-  %5 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{simultaneous accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %5 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
   %6 = begin_access [modify] [unknown] %4 : $*Int  // expected-note {{conflicting access is here}}
   end_access %6 : $*Int
   end_access %5: $*Int
@@ -315,7 +315,7 @@
 bb0(%0 : $Int):
   %1 = global_addr @global1 :$*Int
   %2 = global_addr @global1 :$*Int
-  %3 = begin_access [modify] [unknown] %1 : $*Int  // expected-error {{simultaneous accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %3 = begin_access [modify] [unknown] %1 : $*Int  // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
   %4 = begin_access [modify] [unknown] %2 : $*Int  // expected-note {{conflicting access is here}}
   end_access %4 : $*Int
   end_access %3: $*Int
@@ -348,7 +348,7 @@
   store %0 to [trivial] %3 : $*Int
   %4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
   %5 = begin_access [read] [unknown] %3 : $*Int  // expected-note {{conflicting access is here}}
-  %6 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{simultaneous accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %6 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
   %7 = begin_access [read] [unknown] %3 : $*Int // no-error
   %8 = apply %4(%5, %6) : $@convention(thin) (@inout Int, @inout Int) -> ()
   end_access %7 : $*Int
@@ -368,7 +368,7 @@
   %3 = project_box %2 : ${ var Int }, 0
   store %0 to [trivial] %3 : $*Int
   %4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
-  %5 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{simultaneous accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %5 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
   %6 = begin_access [modify] [unknown] %3 : $*Int  // expected-note {{conflicting access is here}}
   %7 = begin_access [modify] [unknown] %3 : $*Int  // no-error
   %8 = apply %4(%5, %6) : $@convention(thin) (@inout Int, @inout Int) -> ()
@@ -392,7 +392,7 @@
   %4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
   %5 = begin_access [modify] [unknown] %3 : $*Int  // no-note
   end_access %5 : $*Int
-  %6 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{simultaneous accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %6 = begin_access [modify] [unknown] %3 : $*Int  // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
   %7 = begin_access [modify] [unknown] %3 : $*Int  // expected-note {{conflicting access is here}}
   %8 = apply %4(%5, %6) : $@convention(thin) (@inout Int, @inout Int) -> ()
   end_access %7 : $*Int
@@ -545,3 +545,146 @@
   end_access %3 : $*UInt
   return %8 : $Int
 }
+
+// Stored property relaxation.
+
+struct NestedStructWithStoredProps {
+  var a: Int
+  var b: Int
+}
+
+struct StructWithStoredProps {
+  var x: Int
+  var y: Int
+
+  var n: NestedStructWithStoredProps
+}
+
+sil @takesInoutIntAndStructWithStoredProps : $@convention(thin) (@inout Int, @inout StructWithStoredProps) -> ()
+
+// CHECK-LABEL: sil hidden @twoSeparateStoredProperties
+sil hidden @twoSeparateStoredProperties : $@convention(thin) (Int) -> () {
+bb0(%0 : $Int):
+  %2 = alloc_box ${ var StructWithStoredProps }
+  %3 = project_box %2 : ${ var StructWithStoredProps }, 0
+  %4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
+  %5 = begin_access [modify] [unknown] %3 : $*StructWithStoredProps
+  %6 = struct_element_addr %5 : $*StructWithStoredProps, #StructWithStoredProps.x
+  %7 = begin_access [modify] [unknown] %3 : $*StructWithStoredProps // no-error
+  %8 = struct_element_addr %7 : $*StructWithStoredProps, #StructWithStoredProps.y
+  %9 = apply %4(%6, %8) : $@convention(thin) (@inout Int, @inout Int) -> ()
+  end_access %7 : $*StructWithStoredProps
+  end_access %5: $*StructWithStoredProps
+  destroy_value %2 : ${ var StructWithStoredProps }
+  %10 = tuple ()
+  return %10 : $()
+}
+
+// CHECK-LABEL: sil hidden @twoSeparateNestedStoredProperties
+sil hidden @twoSeparateNestedStoredProperties : $@convention(thin) (Int) -> () {
+bb0(%0 : $Int):
+  %2 = alloc_box ${ var StructWithStoredProps }
+  %3 = project_box %2 : ${ var StructWithStoredProps }, 0
+  %4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
+  %5 = begin_access [modify] [unknown] %3 : $*StructWithStoredProps
+  %6 = struct_element_addr %5 : $*StructWithStoredProps, #StructWithStoredProps.n
+  %7 = struct_element_addr %6 : $*NestedStructWithStoredProps, #NestedStructWithStoredProps.a
+  %8 = begin_access [modify] [unknown] %3 : $*StructWithStoredProps // no-error
+  %9 = struct_element_addr %8 : $*StructWithStoredProps, #StructWithStoredProps.n
+  %10 = struct_element_addr %9 : $*NestedStructWithStoredProps, #NestedStructWithStoredProps.b
+  %11 = apply %4(%7, %10) : $@convention(thin) (@inout Int, @inout Int) -> ()
+  end_access %8 : $*StructWithStoredProps
+  end_access %5: $*StructWithStoredProps
+  destroy_value %2 : ${ var StructWithStoredProps }
+  %12 = tuple ()
+  return %12 : $()
+}
+
+// CHECK-LABEL: sil hidden @theSameStoredProperty
+sil hidden @theSameStoredProperty : $@convention(thin) (Int) -> () {
+bb0(%0 : $Int):
+  %2 = alloc_box ${ var StructWithStoredProps }
+  %3 = project_box %2 : ${ var StructWithStoredProps }, 0
+  %4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
+  %5 = begin_access [modify] [unknown] %3 : $*StructWithStoredProps // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %6 = struct_element_addr %5 : $*StructWithStoredProps, #StructWithStoredProps.x
+  %7 = begin_access [modify] [unknown] %3 : $*StructWithStoredProps // expected-note {{conflicting access is here}}
+  %8 = struct_element_addr %7 : $*StructWithStoredProps, #StructWithStoredProps.x
+  %9 = apply %4(%6, %8) : $@convention(thin) (@inout Int, @inout Int) -> ()
+  end_access %7 : $*StructWithStoredProps
+  end_access %5: $*StructWithStoredProps
+  destroy_value %2 : ${ var StructWithStoredProps }
+  %10 = tuple ()
+  return %10 : $()
+}
+
+// CHECK-LABEL: sil hidden @storedPropertyAndAggregate
+sil hidden @storedPropertyAndAggregate : $@convention(thin) (Int) -> () {
+bb0(%0 : $Int):
+  %2 = alloc_box ${ var StructWithStoredProps }
+  %3 = project_box %2 : ${ var StructWithStoredProps }, 0
+  %4 = function_ref @takesInoutIntAndStructWithStoredProps : $@convention(thin) (@inout Int, @inout StructWithStoredProps) -> ()
+  %5 = begin_access [modify] [unknown] %3 : $*StructWithStoredProps // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %6 = struct_element_addr %5 : $*StructWithStoredProps, #StructWithStoredProps.x
+  %7 = begin_access [modify] [unknown] %3 : $*StructWithStoredProps // expected-note {{conflicting access is here}}
+  %8 = apply %4(%6, %7) : $@convention(thin) (@inout Int, @inout StructWithStoredProps) -> ()
+  end_access %7 : $*StructWithStoredProps
+  end_access %5: $*StructWithStoredProps
+  destroy_value %2 : ${ var StructWithStoredProps }
+  %9 = tuple ()
+  return %9 : $()
+}
+
+// CHECK-LABEL: sil hidden @nestedStoredPropertyAndAggregate
+sil hidden @nestedStoredPropertyAndAggregate : $@convention(thin) (Int) -> () {
+bb0(%0 : $Int):
+  %2 = alloc_box ${ var StructWithStoredProps }
+  %3 = project_box %2 : ${ var StructWithStoredProps }, 0
+  %4 = function_ref @takesInoutIntAndStructWithStoredProps : $@convention(thin) (@inout Int, @inout StructWithStoredProps) -> ()
+  %5 = begin_access [modify] [unknown] %3 : $*StructWithStoredProps // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %6 = struct_element_addr %5 : $*StructWithStoredProps, #StructWithStoredProps.n
+  %7 = struct_element_addr %6 : $*NestedStructWithStoredProps, #NestedStructWithStoredProps.a
+  %8 = begin_access [modify] [unknown] %3 : $*StructWithStoredProps // expected-note {{conflicting access is here}}
+  %9 = struct_element_addr %8 : $*StructWithStoredProps, #StructWithStoredProps.n
+  end_access %8 : $*StructWithStoredProps
+  end_access %5: $*StructWithStoredProps
+  destroy_value %2 : ${ var StructWithStoredProps }
+  %10 = tuple ()
+  return %10 : $()
+}
+
+// CHECK-LABEL: sil hidden @twoSeparateTupleElements
+sil hidden @twoSeparateTupleElements : $@convention(thin) (Int) -> () {
+bb0(%0 : $Int):
+  %2 = alloc_box ${ var (Int, Int) }
+  %3 = project_box %2 : ${ var (Int, Int) }, 0
+  %4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
+  %5 = begin_access [modify] [unknown] %3 : $*(Int, Int)
+  %6 = tuple_element_addr %5 : $*(Int, Int), 0
+  %7 = begin_access [modify] [unknown] %3 : $*(Int, Int) // no-error
+  %8 = tuple_element_addr %7 : $*(Int, Int), 1
+  %9 = apply %4(%6, %8) : $@convention(thin) (@inout Int, @inout Int) -> ()
+  end_access %7 : $*(Int, Int)
+  end_access %5: $*(Int, Int)
+  destroy_value %2 : ${ var (Int, Int) }
+  %10 = tuple ()
+  return %10 : $()
+}
+
+// CHECK-LABEL: sil hidden @sameTupleElement
+sil hidden @sameTupleElement : $@convention(thin) (Int) -> () {
+bb0(%0 : $Int):
+  %2 = alloc_box ${ var (Int, Int) }
+  %3 = project_box %2 : ${ var (Int, Int) }, 0
+  %4 = function_ref @takesTwoInouts : $@convention(thin) (@inout Int, @inout Int) -> ()
+  %5 = begin_access [modify] [unknown] %3 : $*(Int, Int) // expected-error {{overlapping accesses, but modification requires exclusive access; consider copying to a local variable}}
+  %6 = tuple_element_addr %5 : $*(Int, Int), 0
+  %7 = begin_access [modify] [unknown] %3 : $*(Int, Int) // expected-note {{conflicting access is here}}
+  %8 = tuple_element_addr %7 : $*(Int, Int), 0
+  %9 = apply %4(%6, %8) : $@convention(thin) (@inout Int, @inout Int) -> ()
+  end_access %7 : $*(Int, Int)
+  end_access %5: $*(Int, Int)
+  destroy_value %2 : ${ var (Int, Int) }
+  %10 = tuple ()
+  return %10 : $()
+}
diff --git a/test/SILOptimizer/exclusivity_static_diagnostics.swift b/test/SILOptimizer/exclusivity_static_diagnostics.swift
index 89858d3..4be7db8 100644
--- a/test/SILOptimizer/exclusivity_static_diagnostics.swift
+++ b/test/SILOptimizer/exclusivity_static_diagnostics.swift
@@ -11,7 +11,7 @@
   // turned on by default.
   // expected-error@+4{{inout arguments are not allowed to alias each other}}
   // expected-note@+3{{previous aliasing argument}}
-  // expected-error@+2{{simultaneous accesses to var 'i', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-error@+2{{overlapping accesses to 'i', but modification requires exclusive access; consider copying to a local variable}}
   // expected-note@+1{{conflicting access is here}}
   takesTwoInouts(&i, &i)
 }
@@ -19,7 +19,7 @@
 func inoutOnInoutParameter(p: inout Int) {
   // expected-error@+4{{inout arguments are not allowed to alias each other}}
   // expected-note@+3{{previous aliasing argument}}
-  // expected-error@+2{{simultaneous accesses to parameter 'p', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-error@+2{{overlapping accesses to 'p', but modification requires exclusive access; consider copying to a local variable}}
   // expected-note@+1{{conflicting access is here}}
   takesTwoInouts(&p, &p)
 }
@@ -27,7 +27,7 @@
 func swapNoSuppression(_ i: Int, _ j: Int) {
   var a: [Int] = [1, 2, 3]
 
-  // expected-error@+2{{simultaneous accesses to var 'a', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-error@+2{{overlapping accesses to 'a', but modification requires exclusive access; consider copying to a local variable}}
   // expected-note@+1{{conflicting access is here}}
   swap(&a[i], &a[j]) // no-warning
 }
@@ -42,13 +42,13 @@
   mutating func callMutatingMethodThatTakesSelfInout() {
     // expected-error@+4{{inout arguments are not allowed to alias each other}}
     // expected-note@+3{{previous aliasing argument}}
-    // expected-error@+2{{simultaneous accesses to parameter 'self', but modification requires exclusive access; consider copying to a local variable}}
+    // expected-error@+2{{overlapping accesses to 'self', but modification requires exclusive access; consider copying to a local variable}}
     // expected-note@+1{{conflicting access is here}}
     mutate(&self)
   }
 
   mutating func callMutatingMethodThatTakesSelfStoredPropInout() {
-    // expected-error@+2{{simultaneous accesses to parameter 'self', but modification requires exclusive access; consider copying to a local variable}}
+    // expected-error@+2{{overlapping accesses to 'self', but modification requires exclusive access; consider copying to a local variable}}
     // expected-note@+1{{conflicting access is here}}
     mutate(&self.f)
   }
@@ -56,7 +56,7 @@
 
 var globalStruct1 = StructWithMutatingMethodThatTakesSelfInout()
 func callMutatingMethodThatTakesGlobalStoredPropInout() {
-  // expected-error@+2{{simultaneous accesses to var 'globalStruct1', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-error@+2{{overlapping accesses to 'globalStruct1', but modification requires exclusive access; consider copying to a local variable}}
   // expected-note@+1{{conflicting access is here}}
   globalStruct1.mutate(&globalStruct1.f)
 }
@@ -68,13 +68,13 @@
   func callMutatingMethodThatTakesClassStoredPropInout() {
     s1.mutate(&s2.f) // no-warning
 
-    // expected-error@+2{{simultaneous accesses to var 's1', but modification requires exclusive access; consider copying to a local variable}}
+    // expected-error@+2{{overlapping accesses to 's1', but modification requires exclusive access; consider copying to a local variable}}
     // expected-note@+1{{conflicting access is here}}
     s1.mutate(&s1.f)
 
     let local1 = self
 
-    // expected-error@+2{{simultaneous accesses to var 's1', but modification requires exclusive access; consider copying to a local variable}}
+    // expected-error@+2{{overlapping accesses to 's1', but modification requires exclusive access; consider copying to a local variable}}
     // expected-note@+1{{conflicting access is here}}
     local1.s1.mutate(&local1.s1.f)
   }
@@ -84,7 +84,7 @@
   var local = p
   // expected-error@+4{{inout arguments are not allowed to alias each other}}
   // expected-note@+3{{previous aliasing argument}}
-  // expected-error@+2{{simultaneous accesses to var 'local', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-error@+2{{overlapping accesses to 'local', but modification requires exclusive access; consider copying to a local variable}}
   // expected-note@+1{{conflicting access is here}}
   takesTwoInouts(&local, &local)
 }
@@ -92,8 +92,8 @@
 
 // Helper.
 struct StructWithTwoStoredProp {
-  var f1: Int
-  var f2: Int
+  var f1: Int = 7
+  var f2: Int = 8
 }
 
 // Take an unsafe pointer to a stored property while accessing another stored property.
@@ -121,20 +121,20 @@
   mutating
   func shouldHaveFixIts<T>(_ i: Int, _ j: Int, _ param: T, _ paramIndex: T.Index) where T : MutableCollection {
     var array1 = [1, 2, 3]
-    // expected-error@+2{{simultaneous accesses}}{{5-41=array1.swapAt(i + 5, j - 2)}}
+    // expected-error@+2{{overlapping accesses}}{{5-41=array1.swapAt(i + 5, j - 2)}}
     // expected-note@+1{{conflicting access is here}}
     swap(&array1[i + 5], &array1[j - 2])
 
-    // expected-error@+2{{simultaneous accesses}}{{5-49=self.arrayProp.swapAt(i, j)}}
+    // expected-error@+2{{overlapping accesses}}{{5-49=self.arrayProp.swapAt(i, j)}}
     // expected-note@+1{{conflicting access is here}}
     swap(&self.arrayProp[i], &self.arrayProp[j])
 
     var localOfGenericType = param
-    // expected-error@+2{{simultaneous accesses}}{{5-75=localOfGenericType.swapAt(paramIndex, paramIndex)}}
+    // expected-error@+2{{overlapping accesses}}{{5-75=localOfGenericType.swapAt(paramIndex, paramIndex)}}
     // expected-note@+1{{conflicting access is here}}
     swap(&localOfGenericType[paramIndex], &localOfGenericType[paramIndex])
 
-    // expected-error@+2{{simultaneous accesses}}{{5-39=array1.swapAt(i, j)}}
+    // expected-error@+2{{overlapping accesses}}{{5-39=array1.swapAt(i, j)}}
     // expected-note@+1{{conflicting access is here}}
     Swift.swap(&array1[i], &array1[j]) // no-crash
   }
@@ -142,7 +142,7 @@
   mutating
   func shouldHaveNoFixIts(_ i: Int, _ j: Int) {
     var s = StructWithField()
-    // expected-error@+2{{simultaneous accesses}}{{none}}
+    // expected-error@+2{{overlapping accesses}}{{none}}
     // expected-note@+1{{conflicting access is here}}
     swap(&s.f, &s.f)
 
@@ -155,13 +155,13 @@
     swap(&array1[i], &self.arrayProp[j]) // no-warning no-fixit
 
     // Dictionaries aren't MutableCollections so don't support swapAt().
-    // expected-error@+2{{simultaneous accesses}}{{none}}
+    // expected-error@+2{{overlapping accesses}}{{none}}
     // expected-note@+1{{conflicting access is here}}
     swap(&dictionaryProp[i], &dictionaryProp[j])
 
     // We could safely Fix-It this but don't now because the left and
     // right bases are not textually identical.
-    // expected-error@+2{{simultaneous accesses}}{{none}}
+    // expected-error@+2{{overlapping accesses}}{{none}}
     // expected-note@+1{{conflicting access is here}}
     swap(&self.arrayProp[i], &arrayProp[j])
 
@@ -169,7 +169,7 @@
     // We don't suppress when swap() is used as a value
     let mySwap: (inout Int, inout Int) -> () = swap
 
-    // expected-error@+2{{simultaneous accesses}}{{none}}
+    // expected-error@+2{{overlapping accesses}}{{none}}
     // expected-note@+1{{conflicting access is here}}
     mySwap(&array1[i], &array1[j])
 
@@ -177,8 +177,46 @@
       swap(&a, &b) // no-warning
     }
 
-    // expected-error@+2{{simultaneous accesses}}{{none}}
+    // expected-error@+2{{overlapping accesses}}{{none}}
     // expected-note@+1{{conflicting access is here}}
     mySwap(&array1[i], &array1[j])
   }
 }
+
+func inoutSeparateStructStoredProperties() {
+  var s = StructWithTwoStoredProp()
+  takesTwoInouts(&s.f1, &s.f2) // no-error
+}
+
+func inoutSameStoredProperty() {
+  var s = StructWithTwoStoredProp()
+  takesTwoInouts(&s.f1, &s.f1)
+  // expected-error@-1{{overlapping accesses to 's.f1', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-note@-2{{conflicting access is here}}
+}
+
+func inoutSeparateTupleElements() {
+  var t = (1, 4)
+  takesTwoInouts(&t.0, &t.1) // no-error
+}
+
+func inoutSameTupleElement() {
+  var t = (1, 4)
+  takesTwoInouts(&t.0, &t.0)
+  // expected-error@-1{{overlapping accesses to 't.0', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-note@-2{{conflicting access is here}}
+}
+
+func inoutSameTupleNamedElement() {
+  var t = (name1: 1, name2: 4)
+  takesTwoInouts(&t.name2, &t.name2)
+  // expected-error@-1{{overlapping accesses to 't.name2', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-note@-2{{conflicting access is here}}
+}
+
+func inoutSamePropertyInSameTuple() {
+  var t = (name1: 1, name2: StructWithTwoStoredProp())
+  takesTwoInouts(&t.name2.f1, &t.name2.f1)
+  // expected-error@-1{{overlapping accesses to 't.name2.f1', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-note@-2{{conflicting access is here}}
+}
diff --git a/test/SILOptimizer/exclusivity_static_diagnostics_swift3.swift b/test/SILOptimizer/exclusivity_static_diagnostics_swift3.swift
index cf37f51..76170fd 100644
--- a/test/SILOptimizer/exclusivity_static_diagnostics_swift3.swift
+++ b/test/SILOptimizer/exclusivity_static_diagnostics_swift3.swift
@@ -12,7 +12,7 @@
 
   // expected-error@+4{{inout arguments are not allowed to alias each other}}
   // expected-note@+3{{previous aliasing argument}}
-  // expected-warning@+2{{simultaneous accesses to var 'i', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-warning@+2{{overlapping accesses to 'i', but modification requires exclusive access; consider copying to a local variable}}
   // expected-note@+1{{conflicting access is here}}
   takesTwoInouts(&i, &i)
 }
@@ -24,7 +24,7 @@
 func diagnoseOnSameField() {
   var x = X()
 
-  // expected-warning@+2{{simultaneous accesses to var 'x', but modification requires exclusive access; consider copying to a local variable}}
+  // expected-warning@+2{{overlapping accesses to 'x.f', but modification requires exclusive access; consider copying to a local variable}}
   // expected-note@+1{{conflicting access is here}}
   takesTwoInouts(&x.f, &x.f)
 }
diff --git a/test/SILOptimizer/guaranteed_arc_opts_qualified.sil b/test/SILOptimizer/guaranteed_arc_opts_qualified.sil
index cda4fc2..d8e5d21 100644
--- a/test/SILOptimizer/guaranteed_arc_opts_qualified.sil
+++ b/test/SILOptimizer/guaranteed_arc_opts_qualified.sil
@@ -137,3 +137,24 @@
   %9999 = tuple()
   return %9999 : $()
 }
+
+class C {
+  var val: Builtin.Int32
+  init(i: Builtin.Int32)
+  deinit
+}
+
+// CHECK-LABEL: sil @access_test : $@convention(thin) (@owned C, Builtin.Int32) -> ()
+// CHECK-NOT: strong_retain
+// CHECK-NOT: strong_release
+sil @access_test : $@convention(thin) (@owned C, Builtin.Int32) -> () {
+bb0(%0 : $C, %1 : $Builtin.Int32):
+  strong_retain %0 : $C
+  %valadr = ref_element_addr %0 : $C, #C.val
+  %access = begin_access [modify] [dynamic] %valadr : $*Builtin.Int32
+  store %1 to %access : $*Builtin.Int32
+  end_access %access : $*Builtin.Int32
+  strong_release %0 : $C
+  %9999 = tuple()
+  return %9999 : $()
+}
diff --git a/test/SILOptimizer/inline_heuristics.sil b/test/SILOptimizer/inline_heuristics.sil
index 947d648..69eabd0 100644
--- a/test/SILOptimizer/inline_heuristics.sil
+++ b/test/SILOptimizer/inline_heuristics.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all %s -inline -sil-inline-generics=true -sil-partial-specialization=false -debug-only=sil-inliner 2>%t/log | %FileCheck %s
 // RUN: %FileCheck %s --check-prefix=CHECK-LOG <%t/log
 // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all %s -inline -sil-inline-generics=true -sil-partial-specialization=true -generic-specializer -debug-only=sil-inliner 2>%t/log | %FileCheck %s --check-prefix=CHECK-PARTIAL-SPECIALIZATION
diff --git a/test/SILOptimizer/inline_self.swift b/test/SILOptimizer/inline_self.swift
index 31a1e82..79e657b 100644
--- a/test/SILOptimizer/inline_self.swift
+++ b/test/SILOptimizer/inline_self.swift
@@ -33,6 +33,12 @@
   fn()
 }
 
+protocol Use {
+  func use<T>(_ t: T)
+}
+
+var user: Use? = nil
+
 class BaseZ {
   final func baseCapturesSelf() -> Self {
     let fn = { [weak self] in _ = self }
@@ -41,11 +47,14 @@
   }
 }
 
-// Do not inline C.capturesSelf() into main either.
+// Do not inline C.capturesSelf() into main either. Doing so would lose the ability
+// to materialize local Self metadata.
 class Z : BaseZ {
+  @inline(__always)
   final func capturesSelf() -> Self {
     let fn = { [weak self] in _ = self }
     callIt(fn: fn)
+    user?.use(self)
     return self
   }
 
diff --git a/test/SILOptimizer/inline_semantics.sil b/test/SILOptimizer/inline_semantics.sil
index 0b06397..c025b87 100644
--- a/test/SILOptimizer/inline_semantics.sil
+++ b/test/SILOptimizer/inline_semantics.sil
@@ -7,28 +7,94 @@
 
 sil [_semantics "no_inline_plz"] @callee_func : $@convention(thin) () -> Int32 {
 bb0:
-  %0 = integer_literal $Builtin.Int32, 3           // user: %1
-  %1 = struct $Int32 (%0 : $Builtin.Int32)         // user: %2
-  return %1 : $Int32                               // id: %2
+  %0 = integer_literal $Builtin.Int32, 3
+  %1 = struct $Int32 (%0 : $Builtin.Int32)
+  return %1 : $Int32
 }
 
+//Not every @_semantics should be skipped during the early inlining pass, but
+//only those ones which are explicitly listed in shouldSkipApplyDuringEarlyInlining.
+
 //CHECK-LABEL: caller_func
-//CHECK: function_ref
-//CHECK: apply
-//CHECK-NEXT: ret
+//CHECK-NOT: function_ref
+//CHECK-NOT: apply
+//CHECK: end sil function 'caller_func'
 sil @caller_func : $@convention(thin) () -> Int32 {
 bb0:
-  %0 = function_ref @callee_func : $@convention(thin) () -> Int32 // user: %1
-  %1 = apply %0() : $@convention(thin) () -> Int32                // user: %2
-  return %1 : $Int32                                  // id: %2
+  %0 = function_ref @callee_func : $@convention(thin) () -> Int32
+  %1 = apply %0() : $@convention(thin) () -> Int32
+  return %1 : $Int32
+}
+
+sil [_semantics "array.make_mutable"] @callee_func_with_to_be_skipped_during_inlining_semantics : $@convention(method) (@inout Int32) -> Int32 {
+bb0(%self : $*Int32):
+  %0 = integer_literal $Builtin.Int32, 3
+  %1 = struct $Int32 (%0 : $Builtin.Int32)
+  return %1 : $Int32
+}
+
+//Not every @_semantics should be skipped during the early inlining pass, but
+//only those ones which are explicitly listed in shouldSkipApplyDuringEarlyInlining.
+
+//CHECK-LABEL: caller_func2
+//CHECK: function_ref
+//CHECK: apply
+//CHECK: end sil function 'caller_func2'
+sil @caller_func2 : $@convention(thin) () -> Int32 {
+bb0:
+  %self = alloc_stack $Int32
+  %0 = function_ref @callee_func_with_to_be_skipped_during_inlining_semantics  : $@convention(method) (@inout Int32) -> Int32 // user: %1
+  %1 = apply %0(%self) : $@convention(method) (@inout Int32) -> Int32
+  dealloc_stack %self : $*Int32
+  return %1 : $Int32
+}
+
+sil [_semantics "pair_no_escaping_closure"] @callee_func_with_pair_no_escaping_closure_semantics : $@convention(method) (@inout Int32) -> Int32 {
+bb0(%self : $*Int32):
+  %0 = integer_literal $Builtin.Int32, 3
+  %1 = struct $Int32 (%0 : $Builtin.Int32)
+  return %1 : $Int32
+}
+
+//CHECK-LABEL: caller_func3
+//CHECK: function_ref
+//CHECK: apply
+//CHECK: end sil function 'caller_func3'
+sil @caller_func3 : $@convention(thin) () -> Int32 {
+bb0:
+  %self = alloc_stack $Int32
+  %0 = function_ref @callee_func_with_pair_no_escaping_closure_semantics  : $@convention(method) (@inout Int32) -> Int32 // user: %1
+  %1 = apply %0(%self) : $@convention(method) (@inout Int32) -> Int32
+  dealloc_stack %self : $*Int32
+  return %1 : $Int32
+}
+
+sil [_semantics "self_no_escaping_closure"] @callee_func_with_self_no_escaping_closure_semantics : $@convention(method) (@inout Int32) -> Int32 {
+bb0(%self : $*Int32):
+  %0 = integer_literal $Builtin.Int32, 3
+  %1 = struct $Int32 (%0 : $Builtin.Int32)
+  return %1 : $Int32
+}
+
+//CHECK-LABEL: caller_func4
+//CHECK: function_ref
+//CHECK: apply
+//CHECK: end sil function 'caller_func4'
+sil @caller_func4 : $@convention(thin) () -> Int32 {
+bb0:
+  %self = alloc_stack $Int32
+  %0 = function_ref @callee_func_with_self_no_escaping_closure_semantics  : $@convention(method) (@inout Int32) -> Int32 // user: %1
+  %1 = apply %0(%self) : $@convention(method) (@inout Int32) -> Int32
+  dealloc_stack %self : $*Int32
+  return %1 : $Int32
 }
 
 // A function annotated with the @effects(readonly) attribute.
 sil [readonly] @callee_func2 : $@convention(thin) () -> Int32 {
 bb0:
-  %0 = integer_literal $Builtin.Int32, 3           // user: %1
-  %1 = struct $Int32 (%0 : $Builtin.Int32)         // user: %2
-  return %1 : $Int32                               // id: %2
+  %0 = integer_literal $Builtin.Int32, 3
+  %1 = struct $Int32 (%0 : $Builtin.Int32)
+  return %1 : $Int32 
 }
 
 //CHECK-LABEL: caller_func1
@@ -37,8 +103,8 @@
 //CHECK-NEXT: ret
 sil @caller_func1 : $@convention(thin) () -> Int32 {
 bb0:
-  %0 = function_ref @callee_func2 : $@convention(thin) () -> Int32 // user: %1
-  %1 = apply %0() : $@convention(thin) () -> Int32                 // user: %2
-  return %1 : $Int32                                   // id: %2
+  %0 = function_ref @callee_func2 : $@convention(thin) () -> Int32
+  %1 = apply %0() : $@convention(thin) () -> Int32
+  return %1 : $Int32
 }
 
diff --git a/test/SILOptimizer/inliner_coldblocks.sil b/test/SILOptimizer/inliner_coldblocks.sil
index c5f8e10..2f2603d9 100644
--- a/test/SILOptimizer/inliner_coldblocks.sil
+++ b/test/SILOptimizer/inliner_coldblocks.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all %s -inline | %FileCheck %s
 
 sil_stage canonical
diff --git a/test/SILOptimizer/inliner_spa.sil b/test/SILOptimizer/inliner_spa.sil
index 053bb89..4de4986 100644
--- a/test/SILOptimizer/inliner_spa.sil
+++ b/test/SILOptimizer/inliner_spa.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil %s -inline -print-shortest-path-info 2>%t/log >/dev/null
 // RUN: %FileCheck %s <%t/log
 // REQUIRES: asserts
diff --git a/test/SILOptimizer/let_properties_opts_runtime.swift b/test/SILOptimizer/let_properties_opts_runtime.swift
index 24d053b..3f7e1df 100644
--- a/test/SILOptimizer/let_properties_opts_runtime.swift
+++ b/test/SILOptimizer/let_properties_opts_runtime.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -O  %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s -check-prefix=CHECK-OUTPUT
 // RUN: %target-build-swift -O -wmo %s -o %t/a.out
diff --git a/test/SILOptimizer/linker.swift b/test/SILOptimizer/linker.swift
index cbdd968..df23ad7 100644
--- a/test/SILOptimizer/linker.swift
+++ b/test/SILOptimizer/linker.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module %S/Inputs/linker_pass_input.swift -o %t/Swift.swiftmodule -parse-stdlib -parse-as-library -module-name Swift -sil-serialize-all -module-link-name swiftCore
 // RUN: %target-swift-frontend %s -O -I %t -sil-debug-serialization -o - -emit-sil | %FileCheck %s
 
diff --git a/test/SILOptimizer/sil_combine_objc.sil b/test/SILOptimizer/sil_combine_objc.sil
index ed1e877..a3f72e5 100644
--- a/test/SILOptimizer/sil_combine_objc.sil
+++ b/test/SILOptimizer/sil_combine_objc.sil
@@ -4,6 +4,9 @@
 // FIXME: https://bugs.swift.org/browse/SR-2808
 // XFAIL: resilient_stdlib
 
+// See https://bugs.swift.org/browse/SR-5065, rdar://32511494
+// XFAIL: *
+
 sil_stage canonical
 
 import Builtin
diff --git a/test/SILOptimizer/sil_witness_tables_external_witnesstable.swift b/test/SILOptimizer/sil_witness_tables_external_witnesstable.swift
index 5217e2f..9f765a4 100644
--- a/test/SILOptimizer/sil_witness_tables_external_witnesstable.swift
+++ b/test/SILOptimizer/sil_witness_tables_external_witnesstable.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module %S/Inputs/sil_witness_tables_external_input.swift -o %t/Swift.swiftmodule -parse-stdlib -parse-as-library -module-name Swift -sil-serialize-all -module-link-name swiftCore
 // RUN: %target-swift-frontend -O -I %t %s -emit-sil | %FileCheck %s
 
diff --git a/test/SILOptimizer/specialize_cg_update_crash.sil b/test/SILOptimizer/specialize_cg_update_crash.sil
index 0c6c772..830e845 100644
--- a/test/SILOptimizer/specialize_cg_update_crash.sil
+++ b/test/SILOptimizer/specialize_cg_update_crash.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -parse-stdlib -parse-as-library  -module-name TestMod -sil-serialize-all %S/Inputs/TestMod.sil -emit-module-path %t/TestMod.swiftmodule
 // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all -inline -I %t %s | %FileCheck %s
 
diff --git a/test/SILOptimizer/specialize_partial_apply.swift b/test/SILOptimizer/specialize_partial_apply.swift
index d8a930c..c2a9230 100644
--- a/test/SILOptimizer/specialize_partial_apply.swift
+++ b/test/SILOptimizer/specialize_partial_apply.swift
@@ -2,7 +2,7 @@
 // RUN: %target-swift-frontend -O -Xllvm -sil-disable-pass="Function Signature Optimization" -module-name=test -emit-sil -primary-file %s | %FileCheck %s
 
 // Also do an end-to-end test to check all components, including IRGen.
-// RUN: rm -rf %t && mkdir -p %t 
+// RUN: %empty-directory(%t) 
 // RUN: %target-build-swift -O -Xllvm -sil-disable-pass="Function Signature Optimization" -module-name=test %s -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s -check-prefix=CHECK-OUTPUT
 // REQUIRES: executable_test
diff --git a/test/SILOptimizer/verifier_reject.sil b/test/SILOptimizer/verifier_reject.sil
index 366f12a..0aba723 100644
--- a/test/SILOptimizer/verifier_reject.sil
+++ b/test/SILOptimizer/verifier_reject.sil
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: not --crash %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all %s 2> %t/err.txt
 // RUN: %FileCheck %s < %t/err.txt
 
diff --git a/test/Sanitizers/sanitizer_coverage.swift b/test/Sanitizers/sanitizer_coverage.swift
index e24c71d..eb2ddb3 100644
--- a/test/Sanitizers/sanitizer_coverage.swift
+++ b/test/Sanitizers/sanitizer_coverage.swift
@@ -1,6 +1,5 @@
 // RUN: %target-build-swift -sanitize=address -sanitize-coverage=edge %s -o %t_binary
-// RUN: rm -rf %t_coverage_dir
-// RUN: mkdir -p %t_coverage_dir
+// RUN: %empty-directory(%t_coverage_dir)
 // RUN: ASAN_OPTIONS=abort_on_error=0,coverage=1,coverage_dir=%t_coverage_dir %t_binary
 // check the coverage file exists
 // RUN: ls %t_coverage_dir/sanitizer_coverage.swift.tmp_binary.*.sancov > /dev/null
diff --git a/test/Sanitizers/tsan.swift b/test/Sanitizers/tsan.swift
index 2cffe26..bafb8d4 100644
--- a/test/Sanitizers/tsan.swift
+++ b/test/Sanitizers/tsan.swift
@@ -4,7 +4,6 @@
 // REQUIRES: objc_interop
 // REQUIRES: CPU=x86_64
 // REQUIRES: tsan_runtime
-// XFAIL: linux
 
 // Make sure we can handle swifterror and don't bail during the LLVM
 // threadsanitizer pass.
diff --git a/test/Sema/accessibility_private.swift b/test/Sema/accessibility_private.swift
index 01a4072..c78b4b3 100644
--- a/test/Sema/accessibility_private.swift
+++ b/test/Sema/accessibility_private.swift
@@ -163,51 +163,51 @@
   }
 }
 
-// All of these should be errors, but didn't have the correct behavior in Swift 
-// 3.0GM.
+// All of these are errors in Swift 4, but didn't have the correct behavior in 
+// Swift 3.0GM.
 extension Container {
   private struct VeryPrivateStruct { // expected-note * {{type declared here}}
     private typealias VeryPrivateType = Int // expected-note * {{type declared here}}
-    var privateVar: VeryPrivateType { fatalError() } // expected-warning {{property should be declared private because its type uses a private type}}
-    var privateVar2 = VeryPrivateType() // expected-warning {{property should be declared private because its type 'Container.VeryPrivateStruct.VeryPrivateType' (aka 'Int') uses a private type}}
-    typealias PrivateAlias = VeryPrivateType // expected-warning {{type alias should be declared private because its underlying type uses a private type}}
-    subscript(_: VeryPrivateType) -> Void { return () } // expected-warning {{subscript should be declared private because its index uses a private type}}
-    func privateMethod(_: VeryPrivateType) -> Void {} // expected-warning {{method should be declared private because its parameter uses a private type}} {{none}}
-    enum PrivateRawValue: VeryPrivateType { // expected-warning {{enum should be declared private because its raw type uses a private type}} {{none}}
+    var privateVar: VeryPrivateType { fatalError() } // expected-error {{property must be declared private because its type uses a private type}}
+    var privateVar2 = VeryPrivateType() // expected-error {{property must be declared private because its type 'Container.VeryPrivateStruct.VeryPrivateType' (aka 'Int') uses a private type}}
+    typealias PrivateAlias = VeryPrivateType // expected-error {{type alias must be declared private because its underlying type uses a private type}}
+    subscript(_: VeryPrivateType) -> Void { return () } // expected-error {{subscript must be declared private because its index uses a private type}}
+    func privateMethod(_: VeryPrivateType) -> Void {} // expected-error {{method must be declared private because its parameter uses a private type}} {{none}}
+    enum PrivateRawValue: VeryPrivateType { // expected-error {{enum must be declared private because its raw type uses a private type}} {{none}}
       case A
     }
     enum PrivatePayload {
-      case A(VeryPrivateType) // expected-warning {{enum case in an internal enum uses a private type}} {{none}}
+      case A(VeryPrivateType) // expected-error {{enum case in an internal enum uses a private type}} {{none}}
     }
 
     private class PrivateInnerClass {} // expected-note * {{declared here}}
-    class PrivateSuper: PrivateInnerClass {} // expected-warning {{class should be declared private because its superclass is private}} {{none}}
+    class PrivateSuper: PrivateInnerClass {} // expected-error {{class must be declared private because its superclass is private}} {{none}}
   }
 
-  fileprivate var privateVar: VeryPrivateStruct { fatalError() } // expected-warning {{property should not be declared fileprivate because its type uses a private type}} {{none}}
-  fileprivate typealias PrivateAlias = VeryPrivateStruct // expected-warning {{type alias should not be declared fileprivate because its underlying type uses a private type}} {{none}}
-  fileprivate subscript(_: VeryPrivateStruct) -> Void { return () } // expected-warning {{subscript should not be declared fileprivate because its index uses a private type}} {{none}}
-  fileprivate func privateMethod(_: VeryPrivateStruct) -> Void {} // expected-warning {{method should not be declared fileprivate because its parameter uses a private type}} {{none}}
-  fileprivate enum PrivateRawValue: VeryPrivateStruct {} // expected-warning {{enum should not be declared fileprivate because its raw type uses a private type}} {{none}}
+  fileprivate var privateVar: VeryPrivateStruct { fatalError() } // expected-error {{property cannot be declared fileprivate because its type uses a private type}} {{none}}
+  fileprivate typealias PrivateAlias = VeryPrivateStruct // expected-error {{type alias cannot be declared fileprivate because its underlying type uses a private type}} {{none}}
+  fileprivate subscript(_: VeryPrivateStruct) -> Void { return () } // expected-error {{subscript cannot be declared fileprivate because its index uses a private type}} {{none}}
+  fileprivate func privateMethod(_: VeryPrivateStruct) -> Void {} // expected-error {{method cannot be declared fileprivate because its parameter uses a private type}} {{none}}
+  fileprivate enum PrivateRawValue: VeryPrivateStruct {} // expected-error {{enum cannot be declared fileprivate because its raw type uses a private type}} {{none}}
   // expected-error@-1 {{raw type 'Container.VeryPrivateStruct' is not expressible by any literal}}
   // expected-error@-2 {{'Container.PrivateRawValue' declares raw type 'Container.VeryPrivateStruct', but does not conform to RawRepresentable and conformance could not be synthesized}}
   // expected-error@-3 {{RawRepresentable conformance cannot be synthesized because raw type 'Container.VeryPrivateStruct' is not Equatable}}
   fileprivate enum PrivatePayload {
-    case A(VeryPrivateStruct) // expected-warning {{enum case in an internal enum uses a private type}} {{none}}
+    case A(VeryPrivateStruct) // expected-error {{enum case in an internal enum uses a private type}} {{none}}
   }
 
   private class PrivateInnerClass {} // expected-note * {{declared here}}
-  fileprivate class PrivateSuperClass: PrivateInnerClass {} // expected-warning {{class should not be declared fileprivate because its superclass is private}} {{none}}
-  fileprivate class PrivateGenericUser<T> where T: PrivateInnerClass {} // expected-warning {{generic class should not be declared fileprivate because its generic requirement uses a private type}} {{none}}
+  fileprivate class PrivateSuperClass: PrivateInnerClass {} // expected-error {{class cannot be declared fileprivate because its superclass is private}} {{none}}
+  fileprivate class PrivateGenericUser<T> where T: PrivateInnerClass {} // expected-error {{generic class cannot be declared fileprivate because its generic requirement uses a private type}} {{none}}
 }
 
 fileprivate struct SR2579 {
   private struct Inner {
     private struct InnerPrivateType {}
-    var innerProperty = InnerPrivateType() // expected-warning {{property should be declared private because its type 'SR2579.Inner.InnerPrivateType' uses a private type}}
+    var innerProperty = InnerPrivateType() // expected-error {{property must be declared private because its type 'SR2579.Inner.InnerPrivateType' uses a private type}}
   }
   // FIXME: We need better errors when one access violation results in more
   // downstream.
-  private var outerProperty = Inner().innerProperty // expected-warning {{property should not be declared in this context because its type 'SR2579.Inner.InnerPrivateType' uses a private type}}
-  var outerProperty2 = Inner().innerProperty // expected-warning {{property should be declared private because its type 'SR2579.Inner.InnerPrivateType' uses a private type}}
+  private var outerProperty = Inner().innerProperty // expected-error {{property cannot be declared in this context because its type 'SR2579.Inner.InnerPrivateType' uses a private type}}
+  var outerProperty2 = Inner().innerProperty // expected-error {{property must be declared private because its type 'SR2579.Inner.InnerPrivateType' uses a private type}}
 }
diff --git a/test/Sema/accessibility_shared_private.swift b/test/Sema/accessibility_shared_private.swift
index 7fae278..e552447 100644
--- a/test/Sema/accessibility_shared_private.swift
+++ b/test/Sema/accessibility_shared_private.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -swift-version 4 -typecheck %t/declarations.swift %t/other_file_extensions.swift -verify
 
diff --git a/test/Sema/circular_decl_checking.swift b/test/Sema/circular_decl_checking.swift
index 1e556fb..efe76cd 100644
--- a/test/Sema/circular_decl_checking.swift
+++ b/test/Sema/circular_decl_checking.swift
@@ -43,9 +43,10 @@
 var TopLevelVar: TopLevelVar? { return nil } // expected-error 2 {{use of undeclared type 'TopLevelVar'}}
 
 
-protocol AProtocol {
-  // FIXME: Should produce an error here, but it's currently causing problems.
-  associatedtype e : e
+// FIXME: The first error is redundant, isn't correct in what it states, and
+// also should be emitted on the inheritance clause.
+protocol AProtocol { // expected-error {{first type 'Self.e' in conformance requirement does not refer to a generic parameter or associated type}}
+  associatedtype e : e // expected-error {{inheritance from non-protocol, non-class type 'Self.e'}}
 }
 
 
diff --git a/test/Sema/complex_expressions.swift b/test/Sema/complex_expressions.swift
index 8ad6c52..27e02e3 100644
--- a/test/Sema/complex_expressions.swift
+++ b/test/Sema/complex_expressions.swift
@@ -117,3 +117,12 @@
      8: { $0 != $1 },  9: { $0 != $1 }, 10: { $0 != $1 }, 11: { $0 != $1 },
     12: { $0 != $1 }, 13: { $0 != $1 }, 14: { $0 != $1 }, 15: { $0 != $1 },
     16: { $0 != $1 }, 17: { $0 != $1 }, 18: { $0 != $1 }, 19: { $0 != $1 } ]
+
+// rdar://problem/32034560 - type-checker hangs trying to solve expression
+struct R32034560 {
+  private var R32034560: Array<Array<UInt32>>
+  private func foo(x: UInt32) -> UInt32 {
+    return ((self.R32034560[0][Int(x >> 24) & 0xFF] &+ self.R32034560[1][Int(x >> 16) & 0xFF]) ^ self.R32034560[2][Int(x >> 8) & 0xFF]) &+ self.R32034560[3][Int(x & 0xFF)]
+    // expected-error@-1 {{expression was too complex to be solved in reasonable time; consider breaking up the expression into distinct sub-expressions}}
+  }
+}
diff --git a/test/Sema/enum_equatable_hashable.swift b/test/Sema/enum_equatable_hashable.swift
index 8cdc338..f14ef38 100644
--- a/test/Sema/enum_equatable_hashable.swift
+++ b/test/Sema/enum_equatable_hashable.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-swift-frontend -typecheck -verify -primary-file %t/main.swift %S/Inputs/enum_equatable_hashable_other.swift -verify-ignore-unknown
 
diff --git a/test/Sema/enum_raw_representable.swift b/test/Sema/enum_raw_representable.swift
index 1b338cd..d8ee2f0 100644
--- a/test/Sema/enum_raw_representable.swift
+++ b/test/Sema/enum_raw_representable.swift
@@ -83,3 +83,66 @@
     case a
   }
 }
+
+// rdar://problem/32431736 - Conversion fix-it from String to String raw value enum can't look through optionals
+
+func rdar32431736() {
+  enum E : String {
+    case A = "A"
+    case B = "B"
+  }
+
+  let items1: [String] = ["A", "a"]
+  let items2: [String]? = ["A"]
+
+  let myE1: E = items1.first
+  // expected-error@-1 {{cannot convert value of type 'String?' to specified type 'E'}}
+  // expected-note@-2 {{construct 'E' from unwrapped 'String' value}} {{17-17=E(rawValue: }} {{24-24=!)}}
+
+  let myE2: E = items2?.first
+  // expected-error@-1 {{cannot convert value of type 'String?' to specified type 'E'}}
+  // expected-note@-2 {{construct 'E' from unwrapped 'String' value}} {{17-17=E(rawValue: (}} {{25-25=)!)}}
+}
+
+// rdar://problem/32431165 - improve diagnostic for raw representable argument mismatch
+
+enum E_32431165 : String {
+  case foo = "foo"
+  case bar = "bar" // expected-note {{did you mean 'bar'?}}
+}
+
+func rdar32431165_1(_: E_32431165) {}
+func rdar32431165_1(_: Int) {}
+func rdar32431165_1(_: Int, _: E_32431165) {}
+
+rdar32431165_1(E_32431165.baz)
+// expected-error@-1 {{type 'E_32431165' has no member 'baz'}}
+
+rdar32431165_1(.baz) // FIXME: the error should be {{reference to member 'baz' cannot be resolved without a contextual type}}
+// expected-error@-1 {{expression type '()' is ambiguous without more context}}
+
+rdar32431165_1("")
+// expected-error@-1 {{cannot convert value of type 'String' to expected argument type 'E_32431165'}} {{15-15=E_32431165(rawValue: }} {{19-19=)}}
+rdar32431165_1(42, "")
+// expected-error@-1 {{cannot convert value of type 'String' to expected argument type 'E_32431165'}} {{20-20=E_32431165(rawValue: }} {{22-22=)}}
+
+func rdar32431165_2(_: String) {}
+func rdar32431165_2(_: Int) {}
+func rdar32431165_2(_: Int, _: String) {}
+
+rdar32431165_2(E_32431165.bar)
+// expected-error@-1 {{cannot convert value of type 'E_32431165' to expected argument type 'String'}} {{15-15=}} {{31-31=.rawValue}}
+rdar32431165_2(42, E_32431165.bar)
+// expected-error@-1 {{cannot convert value of type 'E_32431165' to expected argument type 'String'}} {{20-20=}} {{34-34=.rawValue}}
+
+E_32431165.bar == "bar"
+// expected-error@-1 {{cannot convert value of type 'E_32431165' to expected argument type 'String}} {{1-1=}} {{15-15=.rawValue}}
+
+"bar" == E_32431165.bar
+// expected-error@-1 {{cannot convert value of type 'E_32431165' to expected argument type 'String}} {{10-10=}} {{24-24=.rawValue}}
+
+func rdar32432253(_ condition: Bool = false) {
+  let choice: E_32431165 = condition ? .foo : .bar
+  let _ = choice == "bar"
+  // expected-error@-1 {{cannot convert value of type 'E_32431165' to expected argument type 'String'}} {{11-11=}} {{17-17=.rawValue}}
+}
diff --git a/test/Sema/exhaustive_switch.swift b/test/Sema/exhaustive_switch.swift
index 0ea73f2..360ce0c 100644
--- a/test/Sema/exhaustive_switch.swift
+++ b/test/Sema/exhaustive_switch.swift
@@ -6,6 +6,19 @@
   case (_, .none): return 2
   case (.some(_), .some(_)): return 3
   }
+    
+  switch (a, b) {
+  case (.none, _): return 1
+  case (_, .none): return 2
+  case (_?, _?): return 3
+  }
+  
+  switch Optional<(Int?, Int?)>.some((a, b)) {
+  case .none: return 1
+  case let (_, x?)?: return x
+  case let (x?, _)?: return x
+  case (.none, .none)?: return 0
+  }
 }
 
 func bar(a: Bool, b: Bool) -> Int {
@@ -47,6 +60,15 @@
   case (_, .B(_)):
     ()
   }
+  
+  switch (Foo.A(1), Optional<(Int, Int)>.some((0, 0))) {
+  case (.A(_), _):
+    break
+  case (.B(_), (let q, _)?):
+    print(q)
+  case (.B(_), nil):
+    break
+  }
 }
 
 class C {}
@@ -329,7 +351,7 @@
   case (.hat, .spoon):
     break
   }
-  
+
   switch (x!, x!) { // expected-error {{switch must be exhaustive}}
   // expected-note@-1 {{add missing case: '(.fork, _)'}}
   // expected-note@-2 {{add missing case: '(.hat, .spoon)'}}
@@ -343,3 +365,171 @@
     break
   }
 }
+
+enum LargeSpaceEnum {
+  case case0
+  case case1
+  case case2
+  case case3
+  case case4
+  case case5
+  case case6
+  case case7
+  case case8
+  case case9
+  case case10
+}
+
+func notQuiteBigEnough() -> Bool {
+  switch (LargeSpaceEnum.case1, LargeSpaceEnum.case2) { // expected-error {{switch must be exhaustive}}
+  // expected-note@-1 110 {{add missing case:}}
+  case (.case0, .case0): return true
+  case (.case1, .case1): return true
+  case (.case2, .case2): return true
+  case (.case3, .case3): return true
+  case (.case4, .case4): return true
+  case (.case5, .case5): return true
+  case (.case6, .case6): return true
+  case (.case7, .case7): return true
+  case (.case8, .case8): return true
+  case (.case9, .case9): return true
+  case (.case10, .case10): return true
+  }
+}
+
+enum OverlyLargeSpaceEnum {
+  case case0
+  case case1
+  case case2
+  case case3
+  case case4
+  case case5
+  case case6
+  case case7
+  case case8
+  case case9
+  case case10
+  case case11
+}
+
+enum ContainsOverlyLargeEnum {
+  case one(OverlyLargeSpaceEnum)
+  case two(OverlyLargeSpaceEnum)
+  case three(OverlyLargeSpaceEnum, OverlyLargeSpaceEnum)
+}
+
+func quiteBigEnough() -> Bool {
+  switch (OverlyLargeSpaceEnum.case1, OverlyLargeSpaceEnum.case2) { // expected-error {{switch must be exhaustive}}
+  // expected-note@-1 {{do you want to add a default clause?}}
+  case (.case0, .case0): return true
+  case (.case1, .case1): return true
+  case (.case2, .case2): return true
+  case (.case3, .case3): return true
+  case (.case4, .case4): return true
+  case (.case5, .case5): return true
+  case (.case6, .case6): return true
+  case (.case7, .case7): return true
+  case (.case8, .case8): return true
+  case (.case9, .case9): return true
+  case (.case10, .case10): return true
+  case (.case11, .case11): return true
+  }
+
+  // No diagnostic
+  switch (OverlyLargeSpaceEnum.case1, OverlyLargeSpaceEnum.case2) { // expected-error {{switch must be exhaustive}}
+  // expected-note@-1 {{do you want to add a default clause?}}
+  case (.case0, _): return true
+  case (.case1, _): return true
+  case (.case2, _): return true
+  case (.case3, _): return true
+  case (.case4, _): return true
+  case (.case5, _): return true
+  case (.case6, _): return true
+  case (.case7, _): return true
+  case (.case8, _): return true
+  case (.case9, _): return true
+  case (.case10, _): return true
+  }
+
+
+  // No diagnostic
+  switch (OverlyLargeSpaceEnum.case1, OverlyLargeSpaceEnum.case2) {
+  case (.case0, _): return true
+  case (.case1, _): return true
+  case (.case2, _): return true
+  case (.case3, _): return true
+  case (.case4, _): return true
+  case (.case5, _): return true
+  case (.case6, _): return true
+  case (.case7, _): return true
+  case (.case8, _): return true
+  case (.case9, _): return true
+  case (.case10, _): return true
+  case (.case11, _): return true
+  }
+
+  // No diagnostic
+  switch (OverlyLargeSpaceEnum.case1, OverlyLargeSpaceEnum.case2) {
+  case (_, .case0): return true
+  case (_, .case1): return true
+  case (_, .case2): return true
+  case (_, .case3): return true
+  case (_, .case4): return true
+  case (_, .case5): return true
+  case (_, .case6): return true
+  case (_, .case7): return true
+  case (_, .case8): return true
+  case (_, .case9): return true
+  case (_, .case10): return true
+  case (_, .case11): return true
+  }
+
+  // No diagnostic
+  switch (OverlyLargeSpaceEnum.case1, OverlyLargeSpaceEnum.case2) {
+  case (_, _): return true
+  }
+
+  // No diagnostic
+  switch (OverlyLargeSpaceEnum.case1, OverlyLargeSpaceEnum.case2) {
+  case (.case0, .case0): return true
+  case (.case1, .case1): return true
+  case (.case2, .case2): return true
+  case (.case3, .case3): return true
+  case _: return true
+  }
+  
+  // No diagnostic
+  switch ContainsOverlyLargeEnum.one(.case0) {
+  case .one: return true
+  case .two: return true
+  case .three: return true
+  }
+}
+
+indirect enum InfinitelySized {
+  case one
+  case two
+  case recur(InfinitelySized)
+  case mutualRecur(MutuallyRecursive, InfinitelySized)
+}
+
+indirect enum MutuallyRecursive {
+  case one
+  case two
+  case recur(MutuallyRecursive)
+  case mutualRecur(InfinitelySized, MutuallyRecursive)
+}
+
+func infinitelySized() -> Bool {
+  switch (InfinitelySized.one, InfinitelySized.one) { // expected-error {{switch must be exhaustive}}
+  // expected-note@-1 10 {{add missing case:}}
+  case (.one, .one): return true
+  case (.two, .two): return true
+  }
+  
+  switch (MutuallyRecursive.one, MutuallyRecursive.one) { // expected-error {{switch must be exhaustive}}
+  // expected-note@-1 10 {{add missing case:}}
+  case (.one, .one): return true
+  case (.two, .two): return true
+  }
+}
diff --git a/test/Serialization/Recovery/crash-recovery.swift b/test/Serialization/Recovery/crash-recovery.swift
index 7974a3c..733375a 100644
--- a/test/Serialization/Recovery/crash-recovery.swift
+++ b/test/Serialization/Recovery/crash-recovery.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t -module-name Lib -I %S/Inputs/custom-modules -swift-version 3 %s
 
 // RUN: echo 'import Lib; _ = Sub.disappearingMethod' | not --crash %target-swift-frontend -typecheck -I %t -I %S/Inputs/custom-modules -swift-version 3 -disable-deserialization-recovery -Xcc -DBAD - 2>&1 | %FileCheck -check-prefix CHECK-CRASH -check-prefix CHECK-CRASH-3 %s
diff --git a/test/Serialization/Recovery/overrides.swift b/test/Serialization/Recovery/overrides.swift
index 2a57489..c0b7b25 100644
--- a/test/Serialization/Recovery/overrides.swift
+++ b/test/Serialization/Recovery/overrides.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t -module-name Lib -I %S/Inputs/custom-modules %s
 
 // RUN: %target-swift-ide-test -source-filename=x -print-module -module-to-print Lib -I %t -I %S/Inputs/custom-modules | %FileCheck %s
diff --git a/test/Serialization/Recovery/type-removal-objc.swift b/test/Serialization/Recovery/type-removal-objc.swift
index 55944eb..c60a41d 100644
--- a/test/Serialization/Recovery/type-removal-objc.swift
+++ b/test/Serialization/Recovery/type-removal-objc.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t -module-name Lib -I %S/Inputs/custom-modules %s
 
 // RUN: %target-swift-ide-test -source-filename=x -print-module -module-to-print Lib -I %t -I %S/Inputs/custom-modules | %FileCheck %s
diff --git a/test/Serialization/Recovery/typedefs-in-enums.swift b/test/Serialization/Recovery/typedefs-in-enums.swift
index 8b18647..9789de9 100644
--- a/test/Serialization/Recovery/typedefs-in-enums.swift
+++ b/test/Serialization/Recovery/typedefs-in-enums.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-sil -o - -emit-module-path %t/Lib.swiftmodule -module-name Lib -I %S/Inputs/custom-modules -disable-objc-attr-requires-foundation-module %s > /dev/null
 
 // RUN: %target-swift-ide-test -source-filename=x -print-module -module-to-print Lib -I %t -I %S/Inputs/custom-modules | %FileCheck %s
diff --git a/test/Serialization/Recovery/typedefs-in-protocols.swift b/test/Serialization/Recovery/typedefs-in-protocols.swift
index fdb37c5..d52ec5e 100644
--- a/test/Serialization/Recovery/typedefs-in-protocols.swift
+++ b/test/Serialization/Recovery/typedefs-in-protocols.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-sil -o - -emit-module-path %t/Lib.swiftmodule -module-name Lib -I %S/Inputs/custom-modules -disable-objc-attr-requires-foundation-module %s | %FileCheck -check-prefix CHECK-WITNESS-TABLE %s
 
 // RUN: %target-swift-ide-test -source-filename=x -print-module -module-to-print Lib -I %t -I %S/Inputs/custom-modules | %FileCheck %s
diff --git a/test/Serialization/Recovery/typedefs.swift b/test/Serialization/Recovery/typedefs.swift
index baf8d80..b7c960b 100644
--- a/test/Serialization/Recovery/typedefs.swift
+++ b/test/Serialization/Recovery/typedefs.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-sil -o - -emit-module-path %t/Lib.swiftmodule -module-name Lib -I %S/Inputs/custom-modules -disable-objc-attr-requires-foundation-module %s | %FileCheck -check-prefix CHECK-VTABLE %s
 
 // RUN: %target-swift-ide-test -source-filename=x -print-module -module-to-print Lib -I %t -I %S/Inputs/custom-modules | %FileCheck %s
diff --git a/test/Serialization/Recovery/types-3-to-4.swift b/test/Serialization/Recovery/types-3-to-4.swift
index 9e4114b..0fd7ec3 100644
--- a/test/Serialization/Recovery/types-3-to-4.swift
+++ b/test/Serialization/Recovery/types-3-to-4.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t -module-name Lib -I %S/Inputs/custom-modules -swift-version 3 %s
 
 // RUN: %target-swift-ide-test -source-filename=x -print-module -module-to-print Lib -I %t -I %S/Inputs/custom-modules -swift-version 3 | %FileCheck -check-prefix=CHECK-3 %s
diff --git a/test/Serialization/Recovery/types-4-to-3.swift b/test/Serialization/Recovery/types-4-to-3.swift
index fdebb83..ca540c1 100644
--- a/test/Serialization/Recovery/types-4-to-3.swift
+++ b/test/Serialization/Recovery/types-4-to-3.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t -module-name Lib -I %S/Inputs/custom-modules -swift-version 4 %s
 
 // RUN: %target-swift-ide-test -source-filename=x -print-module -module-to-print Lib -I %t -I %S/Inputs/custom-modules -swift-version 4 | %FileCheck %s
diff --git a/test/Serialization/alignment.swift b/test/Serialization/alignment.swift
index f9ab8db..62d8f19 100644
--- a/test/Serialization/alignment.swift
+++ b/test/Serialization/alignment.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend %s -emit-module -parse-as-library -o %t
 // RUN: %target-sil-opt -disable-sil-linking -enable-sil-verify-all %t/alignment.swiftmodule -o - | %FileCheck %s
 
diff --git a/test/Serialization/always_inline.swift b/test/Serialization/always_inline.swift
index 9d825b5..e4af1e6 100644
--- a/test/Serialization/always_inline.swift
+++ b/test/Serialization/always_inline.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -sil-serialize-all -o %t %S/Inputs/def_always_inline.swift
 // RUN: llvm-bcanalyzer %t/def_always_inline.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -emit-silgen -sil-link-all -I %t %s | %FileCheck %s -check-prefix=SIL
diff --git a/test/Serialization/array.swift b/test/Serialization/array.swift
index 918b90e..7b2e91f 100644
--- a/test/Serialization/array.swift
+++ b/test/Serialization/array.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/has_array.swift
 // RUN: llvm-bcanalyzer %t/has_array.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -emit-silgen -I %t %s -o /dev/null
diff --git a/test/Serialization/autolinking.swift b/test/Serialization/autolinking.swift
index 71bae63..0e3755e 100644
--- a/test/Serialization/autolinking.swift
+++ b/test/Serialization/autolinking.swift
@@ -1,11 +1,10 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -parse-stdlib -o %t -module-name someModule -module-link-name module %S/../Inputs/empty.swift
 // RUN: %target-swift-frontend -emit-ir -lmagic %s -I %t > %t/out.txt
 // RUN: %FileCheck %s < %t/out.txt
 // RUN: %FileCheck -check-prefix=NO-FORCE-LOAD %s < %t/out.txt
 
-// RUN: mkdir -p %t/someModule.framework/Modules/someModule.swiftmodule/
+// RUN: %empty-directory(%t/someModule.framework/Modules/someModule.swiftmodule)
 // RUN: mv %t/someModule.swiftmodule %t/someModule.framework/Modules/someModule.swiftmodule/%target-swiftmodule-name
 // RUN: %target-swift-frontend -emit-ir -lmagic %s -F %t > %t/framework.txt
 // RUN: %FileCheck -check-prefix=FRAMEWORK %s < %t/framework.txt
diff --git a/test/Serialization/basic_sil.swift b/test/Serialization/basic_sil.swift
index c0ee524..63743ea 100644
--- a/test/Serialization/basic_sil.swift
+++ b/test/Serialization/basic_sil.swift
@@ -1,11 +1,9 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -Xfrontend -assume-parsing-unqualified-ownership-sil -emit-module -Xfrontend -disable-diagnostic-passes -Xfrontend -sil-serialize-all -force-single-frontend-invocation -o %t/def_basic.swiftmodule %S/Inputs/def_basic.sil
 // RUN: llvm-bcanalyzer %t/def_basic.swiftmodule | %FileCheck %s
 // RUN: %target-build-swift -emit-silgen -Xfrontend -sil-link-all -I %t %s | %FileCheck %S/Inputs/def_basic.sil
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift  -Xfrontend -assume-parsing-unqualified-ownership-sil -emit-module -Xfrontend -disable-diagnostic-passes -force-single-frontend-invocation -Xfrontend -sil-serialize-all -o %t/def_basic.swiftmodule %S/Inputs/def_basic.sil
 // RUN: %target-build-swift -emit-silgen -Xfrontend -sil-link-all -I %t %s | %FileCheck -check-prefix=CHECK_DECL %S/Inputs/def_basic.sil
 
diff --git a/test/Serialization/basic_sil_objc.swift b/test/Serialization/basic_sil_objc.swift
index a74ca4c..f54147c 100644
--- a/test/Serialization/basic_sil_objc.swift
+++ b/test/Serialization/basic_sil_objc.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -Xfrontend %clang-importer-sdk -I %S/../Inputs/clang-importer-sdk/swift-modules -emit-module -Xfrontend -disable-diagnostic-passes -Xfrontend -sil-serialize-all -force-single-frontend-invocation -o %t/def_basic_objc.swiftmodule %S/Inputs/def_basic_objc.sil
 // RUN: llvm-bcanalyzer %t/def_basic_objc.swiftmodule | %FileCheck %s
 // RUN: %target-build-swift -Xfrontend %clang-importer-sdk -emit-silgen -Xfrontend -sil-link-all -I %t %s | %FileCheck %S/Inputs/def_basic_objc.sil
diff --git a/test/Serialization/builtin.swift b/test/Serialization/builtin.swift
index 12412d2..8f8d017 100644
--- a/test/Serialization/builtin.swift
+++ b/test/Serialization/builtin.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -parse-stdlib -o %t %S/Inputs/alias_builtin.swift
 // RUN: llvm-bcanalyzer %t/alias_builtin.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -I %t -typecheck %s -verify
diff --git a/test/Serialization/class-determinism.swift b/test/Serialization/class-determinism.swift
index b932f8b..27f79e9 100644
--- a/test/Serialization/class-determinism.swift
+++ b/test/Serialization/class-determinism.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -module-name def_class -emit-module-path %t/def_class.1.swiftmodule %S/Inputs/def_class.swift -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend -module-name def_class -emit-module-path %t/def_class.2.swiftmodule %S/Inputs/def_class.swift -disable-objc-attr-requires-foundation-module
 // RUN: diff <(llvm-bcanalyzer -dump %t/def_class.1.swiftmodule | sed -e 's/\.[0-9]\.swiftmodule/\.x\.swiftmodule/g') <(llvm-bcanalyzer -dump %t/def_class.2.swiftmodule | sed -e 's/\.[0-9]\.swiftmodule/\.x\.swiftmodule/g')
diff --git a/test/Serialization/class-roundtrip-module.swift b/test/Serialization/class-roundtrip-module.swift
index bea5082..e6e4f20 100644
--- a/test/Serialization/class-roundtrip-module.swift
+++ b/test/Serialization/class-roundtrip-module.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -module-name def_class -o %t/stage1.swiftmodule %S/Inputs/def_class.swift -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend -emit-module -parse-as-library -o %t/def_class.swiftmodule %t/stage1.swiftmodule
 // RUN: %target-swift-frontend -emit-sil -Xllvm -sil-disable-pass="External Definition To Declaration" -sil-debug-serialization -I %t %S/class.swift | %FileCheck %s -check-prefix=SIL
diff --git a/test/Serialization/class.swift b/test/Serialization/class.swift
index 4e71c08..03b8627 100644
--- a/test/Serialization/class.swift
+++ b/test/Serialization/class.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-object -emit-module -o %t %S/Inputs/def_class.swift -disable-objc-attr-requires-foundation-module
 // RUN: llvm-bcanalyzer %t/def_class.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -emit-sil -Xllvm -sil-disable-pass="External Definition To Declaration" -sil-debug-serialization -I %t %s | %FileCheck %s -check-prefix=SIL
diff --git a/test/Serialization/comments-framework.swift b/test/Serialization/comments-framework.swift
index 1bbf3fc..abc6009 100644
--- a/test/Serialization/comments-framework.swift
+++ b/test/Serialization/comments-framework.swift
@@ -1,5 +1,5 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t/comments.framework/Modules/comments.swiftmodule/
+// RUN: %empty-directory(%t)
+// RUN: %empty-directory(%t/comments.framework/Modules/comments.swiftmodule)
 
 // RUN: %target-swift-frontend -module-name comments -emit-module -emit-module-path %t/comments.framework/Modules/comments.swiftmodule/%target-swiftmodule-name -emit-module-doc-path %t/comments.framework/Modules/comments.swiftmodule/%target-swiftdoc-name %s
 // RUN: %target-swift-ide-test -print-module-comments -module-to-print=comments -source-filename %s -F %t | %FileCheck %s
diff --git a/test/Serialization/comments-hidden.swift b/test/Serialization/comments-hidden.swift
index 4210dc5..3b2fcf9 100644
--- a/test/Serialization/comments-hidden.swift
+++ b/test/Serialization/comments-hidden.swift
@@ -1,7 +1,6 @@
 // Test the case when we compile normally
 //
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -module-name comments -emit-module -emit-module-path %t/comments.swiftmodule -emit-module-doc -emit-module-doc-path %t/comments.swiftdoc %s
 // RUN: %target-swift-ide-test -print-module-comments -module-to-print=comments -source-filename %s -I %t > %t.normal.txt
 // RUN: %FileCheck %s -check-prefix=NORMAL < %t.normal.txt
@@ -9,8 +8,7 @@
 
 // Test the case when we compile with -enable-testing
 //
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -enable-testing -module-name comments -emit-module -emit-module-path %t/comments.swiftmodule -emit-module-doc -emit-module-doc-path %t/comments.swiftdoc %s
 // RUN: %target-swift-ide-test -print-module-comments -module-to-print=comments -source-filename %s -I %t > %t.testing.txt
 // RUN: %FileCheck %s -check-prefix=TESTING < %t.testing.txt
diff --git a/test/Serialization/comments.swift b/test/Serialization/comments.swift
index d58f40f..c01dddb 100644
--- a/test/Serialization/comments.swift
+++ b/test/Serialization/comments.swift
@@ -1,7 +1,6 @@
 // Test the case when we have a single file in a module.
 //
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -module-name comments -emit-module -emit-module-path %t/comments.swiftmodule -emit-module-doc -emit-module-doc-path %t/comments.swiftdoc %s
 // RUN: llvm-bcanalyzer %t/comments.swiftmodule | %FileCheck %s -check-prefix=BCANALYZER
 // RUN: llvm-bcanalyzer %t/comments.swiftdoc | %FileCheck %s -check-prefix=BCANALYZER
@@ -9,8 +8,7 @@
 
 // Test the case when we have a multiple files in a module.
 //
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -module-name comments -emit-module -emit-module-path %t/first.swiftmodule -emit-module-doc -emit-module-doc-path %t/first.swiftdoc -primary-file %s %S/Inputs/def_comments.swift
 // RUN: %target-swift-frontend -module-name comments -emit-module -emit-module-path %t/second.swiftmodule -emit-module-doc -emit-module-doc-path %t/second.swiftdoc %s -primary-file %S/Inputs/def_comments.swift
 // RUN: %target-swift-frontend -module-name comments -emit-module -emit-module-path %t/comments.swiftmodule -emit-module-doc -emit-module-doc-path %t/comments.swiftdoc %t/first.swiftmodule %t/second.swiftmodule
diff --git a/test/Serialization/conformance-multi-file.swift b/test/Serialization/conformance-multi-file.swift
index 7382201..a293d94 100644
--- a/test/Serialization/conformance-multi-file.swift
+++ b/test/Serialization/conformance-multi-file.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/multi-file-1.swiftmodule -primary-file %s %S/Inputs/conformance-multi-file-other.swift
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/multi-file-2.swiftmodule %s -primary-file %S/Inputs/conformance-multi-file-other.swift
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/Multi.swiftmodule %t/multi-file-*.swiftmodule
diff --git a/test/Serialization/cross_module_optional_protocol_reqt.swift b/test/Serialization/cross_module_optional_protocol_reqt.swift
index 03cb88e..6f80ff5 100644
--- a/test/Serialization/cross_module_optional_protocol_reqt.swift
+++ b/test/Serialization/cross_module_optional_protocol_reqt.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -module-name cross_module_optional_protocol_reqt -c -emit-module-path %t/cross_module_optional_protocol_reqt~partial.swiftmodule -primary-file %s %S/Inputs/cross_module_optional_protocol_reqt_2.swift -import-objc-header %S/Inputs/cross_module_optional_protocol_reqt.h -o /dev/null
 // RUN: %target-swift-frontend -module-name cross_module_optional_protocol_reqt -c -emit-module-path %t/cross_module_optional_protocol_reqt_2~partial.swiftmodule %s -primary-file %S/Inputs/cross_module_optional_protocol_reqt_2.swift -import-objc-header %S/Inputs/cross_module_optional_protocol_reqt.h -o /dev/null
 // RUN: %target-swift-frontend -module-name cross_module_optional_protocol_reqt -emit-module -emit-module-path %t/cross_module_optional_protocol_reqt.swiftmodule %t/cross_module_optional_protocol_reqt~partial.swiftmodule %t/cross_module_optional_protocol_reqt_2~partial.swiftmodule -import-objc-header %S/Inputs/cross_module_optional_protocol_reqt.h
diff --git a/test/Serialization/duplicate_normalprotocolconformance.swift b/test/Serialization/duplicate_normalprotocolconformance.swift
index d05104b..1a33f32 100644
--- a/test/Serialization/duplicate_normalprotocolconformance.swift
+++ b/test/Serialization/duplicate_normalprotocolconformance.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend %S/Inputs/duplicate_normalprotocolconformance_input.swift -o %t/Swift.swiftmodule -sil-serialize-all -emit-module -parse-stdlib -parse-as-library -module-link-name swiftCore -module-name Swift
 // RUN: %target-swift-frontend -c %s -I %t -sil-link-all -o %t/out
 
diff --git a/test/Serialization/empty.swift b/test/Serialization/empty.swift
index 81176e0..c6c7dc7 100644
--- a/test/Serialization/empty.swift
+++ b/test/Serialization/empty.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -parse-stdlib -o %t %s
 // RUN: llvm-bcanalyzer -dump %t/empty.swiftmodule > %t/empty.dump.txt
 // RUN: %FileCheck %s < %t/empty.dump.txt
diff --git a/test/Serialization/enum-mutual-circularity.swift b/test/Serialization/enum-mutual-circularity.swift
index f924160..c36b1be 100644
--- a/test/Serialization/enum-mutual-circularity.swift
+++ b/test/Serialization/enum-mutual-circularity.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -module-name EnumCircularity -o %t/partial1.swiftmodule -primary-file %s %S/Inputs/enum-mutual-circularity-2.swift
 // RUN: %target-swift-frontend -emit-module -module-name EnumCircularity -o %t/partial2.swiftmodule %s -primary-file %S/Inputs/enum-mutual-circularity-2.swift
 // RUN: %target-swift-frontend -emit-module -module-name EnumCircularity -o %t/EnumCircularity.swiftmodule %t/partial1.swiftmodule %t/partial2.swiftmodule
diff --git a/test/Serialization/enum.swift b/test/Serialization/enum.swift
index ab61825..ceff8ab 100644
--- a/test/Serialization/enum.swift
+++ b/test/Serialization/enum.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -module-name def_enum -o %t %S/Inputs/def_enum.swift %S/Inputs/def_enum_derived.swift
 // RUN: llvm-bcanalyzer %t/def_enum.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -typecheck -I %t %s -o /dev/null
diff --git a/test/Serialization/extension-of-typealias.swift b/test/Serialization/extension-of-typealias.swift
index 30af931..2b49bf0 100644
--- a/test/Serialization/extension-of-typealias.swift
+++ b/test/Serialization/extension-of-typealias.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -module-name Library -o %t -D LIBRARY %s
 // RUN: %target-swift-ide-test -print-module -module-to-print=Library -I %t -source-filename=%s | %FileCheck %s
 // RUN: %target-swift-frontend -typecheck -I %t %s -verify
diff --git a/test/Serialization/failed-clang-module.swift b/test/Serialization/failed-clang-module.swift
index bb022c0..ab7a3b6 100644
--- a/test/Serialization/failed-clang-module.swift
+++ b/test/Serialization/failed-clang-module.swift
@@ -4,9 +4,9 @@
 // - there is a swift invocation that imports B but causes the ObjC part of A to fail to import
 
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t/MixModA.framework/Headers
-// RUN: mkdir -p %t/MixModA.framework/Modules/MixModA.swiftmodule
+// RUN: %empty-directory(%t)
+// RUN: %empty-directory(%t/MixModA.framework/Headers)
+// RUN: %empty-directory(%t/MixModA.framework/Modules/MixModA.swiftmodule)
 // RUN: cp %S/Inputs/MixModA.modulemap %t/MixModA.framework/Modules/module.modulemap
 
 // RUN: %target-swift-frontend -emit-module %S/Inputs/SwiftModA.swift -module-name MixModA -I %S/Inputs/objcfail -o %t/MixModA.framework/Modules/MixModA.swiftmodule/%target-swiftmodule-name -emit-objc-header -emit-objc-header-path %t/MixModA.framework/Headers/MixModA-Swift.h -module-cache-path %t/mcp
diff --git a/test/Serialization/function.swift b/test/Serialization/function.swift
index 415d567..982b74b 100644
--- a/test/Serialization/function.swift
+++ b/test/Serialization/function.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/def_func.swift
 // RUN: llvm-bcanalyzer %t/def_func.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -emit-silgen -I %t %s | %FileCheck %s -check-prefix=SIL
diff --git a/test/Serialization/generic_extension.swift b/test/Serialization/generic_extension.swift
index 40a7725..b9a58a1 100644
--- a/test/Serialization/generic_extension.swift
+++ b/test/Serialization/generic_extension.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/generic_extension_1.swift
 // RUN: %target-swift-frontend -emit-sil -I %t %s | %FileCheck %s
 
diff --git a/test/Serialization/generic_witness.swift b/test/Serialization/generic_witness.swift
index 2b39f49..a06b87b 100644
--- a/test/Serialization/generic_witness.swift
+++ b/test/Serialization/generic_witness.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/has_generic_witness.swift
 // RUN: llvm-bcanalyzer %t/has_generic_witness.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -emit-ir -I %t %s -o /dev/null
diff --git a/test/Serialization/global_init.swift b/test/Serialization/global_init.swift
index 2db8590..e341f33 100644
--- a/test/Serialization/global_init.swift
+++ b/test/Serialization/global_init.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -parse-as-library -sil-serialize-all -o %t %s
 // RUN: llvm-bcanalyzer %t/global_init.swiftmodule | %FileCheck %s -check-prefix=BCANALYZER
 // RUN: %target-sil-opt -enable-sil-verify-all -disable-sil-linking %t/global_init.swiftmodule | %FileCheck %s
diff --git a/test/Serialization/import.swift b/test/Serialization/import.swift
index 46cfbcd..d4c55f9 100644
--- a/test/Serialization/import.swift
+++ b/test/Serialization/import.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %s -module-name Import
 // RUN: %target-swift-frontend -typecheck -I %t %s -module-name main -DMAIN -verify
 
diff --git a/test/Serialization/inherited-conformance.swift b/test/Serialization/inherited-conformance.swift
index e905fb1..dd44cca 100644
--- a/test/Serialization/inherited-conformance.swift
+++ b/test/Serialization/inherited-conformance.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t -module-name Lib %S/Inputs/inherited-conformance-lib.swift
 // RUN: %target-swift-frontend -emit-module -o %t -module-name Base -I %t %S/Inputs/inherited-conformance-base.swift
 // RUN: %target-swift-frontend -emit-module -o %t -module-name User -I %t %S/Inputs/inherited-conformance-user.swift
diff --git a/test/Serialization/inherited-initializer.swift b/test/Serialization/inherited-initializer.swift
index 5969c55..7042b69 100644
--- a/test/Serialization/inherited-initializer.swift
+++ b/test/Serialization/inherited-initializer.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t -module-name InheritedInitializerBase %S/Inputs/inherited-initializer-base.swift
 // RUN: %target-swift-frontend -emit-silgen -I %t %s | %FileCheck %s
 
@@ -51,4 +51,4 @@
   // CHECK: apply [[DEFAULT]]<Reinitializable<Int>>({{%.+}})
   // CHECK: apply [[INIT]]({{%.+}}, [[TYPE]])
   _ = NonGenericSub()
-} // CHECK: end sil function '_T04main11testGenericyyF'
\ No newline at end of file
+} // CHECK: end sil function '_T04main11testGenericyyF'
diff --git a/test/Serialization/load-file-permissions.swift b/test/Serialization/load-file-permissions.swift
index cb0f6d4..42ee232 100644
--- a/test/Serialization/load-file-permissions.swift
+++ b/test/Serialization/load-file-permissions.swift
@@ -1,6 +1,6 @@
 // RUN: if [[ -d %t ]]; then chmod -R u+rwx %t && rm -rf %t; fi
-// RUN: mkdir -p %t/good
-// RUN: mkdir -p %t/bad
+// RUN: %empty-directory(%t/good)
+// RUN: %empty-directory(%t/bad)
 // RUN: chmod a-rx %t/bad
 // RUN: %target-swift-frontend -emit-module -o %t/good %S/../Inputs/empty.swift
 // RUN: not %target-swift-frontend %s -typecheck -I %t/bad -I %t/good -show-diagnostics-after-fatal 2>&1 | %FileCheck %s
diff --git a/test/Serialization/load-invalid.swift b/test/Serialization/load-invalid.swift
index 63bc72b..0f5cc81 100644
--- a/test/Serialization/load-invalid.swift
+++ b/test/Serialization/load-invalid.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: touch %t/new_module.swiftmodule
 // RUN: %target-swift-frontend %s -typecheck -I %t -verify -show-diagnostics-after-fatal
diff --git a/test/Serialization/load-missing-dependencies.swift b/test/Serialization/load-missing-dependencies.swift
index 9ad9280..bb02c2c 100644
--- a/test/Serialization/load-missing-dependencies.swift
+++ b/test/Serialization/load-missing-dependencies.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/../Inputs/empty.swift -module-name new_module
 // RUN: %target-swift-frontend -emit-module -o %t %S/../Inputs/empty.swift -module-name another_new_module
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/depends_on_new_module.swift -I %t
diff --git a/test/Serialization/load-missing-dependency.swift b/test/Serialization/load-missing-dependency.swift
index 81006de..b5e4d3d 100644
--- a/test/Serialization/load-missing-dependency.swift
+++ b/test/Serialization/load-missing-dependency.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-frontend -emit-module -o %t %S/../Inputs/empty.swift -module-name new_module
 // RUN: %target-swift-frontend -emit-module -o %t %S/../Inputs/empty.swift -module-name another_new_module
diff --git a/test/Serialization/load-wrong-name.swift b/test/Serialization/load-wrong-name.swift
index 12a144e..a892af4 100644
--- a/test/Serialization/load-wrong-name.swift
+++ b/test/Serialization/load-wrong-name.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/def_func.swift -module-name new_module
 // RUN: not %target-swift-frontend %s -typecheck -I %t -show-diagnostics-after-fatal 2>&1 | %FileCheck %s
 
diff --git a/test/Serialization/load.swift b/test/Serialization/load.swift
index c6f9fd9..bd8a7e9 100644
--- a/test/Serialization/load.swift
+++ b/test/Serialization/load.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend %s -typecheck -verify -show-diagnostics-after-fatal
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/def_func.swift -module-name new_module
 // RUN: %target-swift-frontend %s -typecheck -I %t
diff --git a/test/Serialization/multi-file-nested-type-circularity.swift b/test/Serialization/multi-file-nested-type-circularity.swift
index dcf93c0..a3a1fe7 100644
--- a/test/Serialization/multi-file-nested-type-circularity.swift
+++ b/test/Serialization/multi-file-nested-type-circularity.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/multi-file.swiftmodule -primary-file %s %S/Inputs/multi-file-nested-types.swift
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/multi-file-2.swiftmodule %s -primary-file %S/Inputs/multi-file-nested-types.swift
 
diff --git a/test/Serialization/multi-file-nested-type-extension.swift b/test/Serialization/multi-file-nested-type-extension.swift
index 7e27c97..7bf1699 100644
--- a/test/Serialization/multi-file-nested-type-extension.swift
+++ b/test/Serialization/multi-file-nested-type-extension.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/multi-file.swiftmodule -primary-file %s %S/Inputs/multi-file-nested-types.swift %S/Inputs/multi-file-nested-types-extensions.swift
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/multi-file-2.swiftmodule %s -primary-file %S/Inputs/multi-file-nested-types.swift %S/Inputs/multi-file-nested-types-extensions.swift
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/multi-file-3.swiftmodule %s %S/Inputs/multi-file-nested-types.swift -primary-file %S/Inputs/multi-file-nested-types-extensions.swift
diff --git a/test/Serialization/multi-file-nested-type-simple.swift b/test/Serialization/multi-file-nested-type-simple.swift
index 6220511..b41841f 100644
--- a/test/Serialization/multi-file-nested-type-simple.swift
+++ b/test/Serialization/multi-file-nested-type-simple.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/multi-file.swiftmodule -primary-file %s %S/Inputs/multi-file-nested-types.swift
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/multi-file-2.swiftmodule %s -primary-file %S/Inputs/multi-file-nested-types.swift
 
@@ -23,4 +23,4 @@
   _: Outer.Inner,
   _: Outer.InnerAlias,
   _: OuterClass.Inner,
-  _: OuterClass.InnerAlias) {}
\ No newline at end of file
+  _: OuterClass.InnerAlias) {}
diff --git a/test/Serialization/multi-file-protocol-circularity.swift b/test/Serialization/multi-file-protocol-circularity.swift
index 033533c..2f52465 100644
--- a/test/Serialization/multi-file-protocol-circularity.swift
+++ b/test/Serialization/multi-file-protocol-circularity.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/a.swiftmodule -primary-file %S/Inputs/circular-protocols/a.swift %S/Inputs/circular-protocols/b.swift %S/Inputs/circular-protocols/c.swift
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/b.swiftmodule -primary-file %S/Inputs/circular-protocols/b.swift %S/Inputs/circular-protocols/a.swift %S/Inputs/circular-protocols/c.swift
diff --git a/test/Serialization/multi-file.swift b/test/Serialization/multi-file.swift
index 3b87bc6..0110045 100644
--- a/test/Serialization/multi-file.swift
+++ b/test/Serialization/multi-file.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/multi-file.swiftmodule -primary-file %s %S/Inputs/multi-file-2.swift
 // RUN: %target-swift-frontend -emit-module -module-name Multi -o %t/multi-file-2.swiftmodule %s -primary-file %S/Inputs/multi-file-2.swift
 
diff --git a/test/Serialization/multi-module-nested-type-extension.swift b/test/Serialization/multi-module-nested-type-extension.swift
index 8f25707..dfdb76d 100644
--- a/test/Serialization/multi-module-nested-type-extension.swift
+++ b/test/Serialization/multi-module-nested-type-extension.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // Build the other module, which consists of a single source file.
 
diff --git a/test/Serialization/noinline.swift b/test/Serialization/noinline.swift
index 0e3ab3d..1f1a974 100644
--- a/test/Serialization/noinline.swift
+++ b/test/Serialization/noinline.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -sil-serialize-all -o %t %S/Inputs/def_noinline.swift
 // RUN: llvm-bcanalyzer %t/def_noinline.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -emit-silgen -sil-link-all -I %t %s | %FileCheck %s -check-prefix=SIL
diff --git a/test/Serialization/objc.swift b/test/Serialization/objc.swift
index ad87886..3aa1604 100644
--- a/test/Serialization/objc.swift
+++ b/test/Serialization/objc.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/def_objc.swift -disable-objc-attr-requires-foundation-module
 // RUN: llvm-bcanalyzer %t/def_objc.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -emit-silgen -I %t %s -o - | %FileCheck %s -check-prefix=SIL
diff --git a/test/Serialization/objc_method_table.swift b/test/Serialization/objc_method_table.swift
index 4c85944..e81fede 100644
--- a/test/Serialization/objc_method_table.swift
+++ b/test/Serialization/objc_method_table.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -disable-objc-attr-requires-foundation-module -o %t %S/Inputs/objc_method_decls.swift
 // RUN: llvm-bcanalyzer %t/objc_method_decls.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -typecheck -disable-objc-attr-requires-foundation-module -I %t %s -verify
diff --git a/test/Serialization/objc_xref.swift b/test/Serialization/objc_xref.swift
index ee43951..a1940fa 100644
--- a/test/Serialization/objc_xref.swift
+++ b/test/Serialization/objc_xref.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %clang-importer-sdk-path/swift-modules/Foundation.swift
diff --git a/test/Serialization/operator.swift b/test/Serialization/operator.swift
index e07ec5f..8e96d89 100644
--- a/test/Serialization/operator.swift
+++ b/test/Serialization/operator.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/def_operator.swift
 // RUN: llvm-bcanalyzer %t/def_operator.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -typecheck -I%t %s
diff --git a/test/Serialization/optimized.swift b/test/Serialization/optimized.swift
index 18a3ab0..37d9461 100644
--- a/test/Serialization/optimized.swift
+++ b/test/Serialization/optimized.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -O -emit-module -o %t %s
 
 // At one point this triggered deserialization of enough of the stdlib to cause
diff --git a/test/Serialization/override.swift b/test/Serialization/override.swift
index 4ba8986..ea870df 100644
--- a/test/Serialization/override.swift
+++ b/test/Serialization/override.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/def_class.swift -disable-objc-attr-requires-foundation-module
 // RUN: %target-swift-frontend -emit-module -o %t -I %t %S/Inputs/def_override.swift
 // RUN: llvm-bcanalyzer %t/def_override.swiftmodule | %FileCheck %s
diff --git a/test/Serialization/print.swift b/test/Serialization/print.swift
index 46192fb..c1ffbc6 100644
--- a/test/Serialization/print.swift
+++ b/test/Serialization/print.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %s
 // RUN: %target-swift-ide-test(mock-sdk: %clang-importer-sdk) -print-module -skip-deinit=false -module-to-print=print -I %t -source-filename=%s | %FileCheck %s
 
diff --git a/test/Serialization/resilience.swift b/test/Serialization/resilience.swift
index 4340c45..a668045 100644
--- a/test/Serialization/resilience.swift
+++ b/test/Serialization/resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // This test checks that we serialize the -enable-resilience and -sil-serialize-all
 // flags correctly.
diff --git a/test/Serialization/search-paths-relative.swift b/test/Serialization/search-paths-relative.swift
index fe1b263..b123785 100644
--- a/test/Serialization/search-paths-relative.swift
+++ b/test/Serialization/search-paths-relative.swift
@@ -1,6 +1,7 @@
-// RUN: rm -rf %t && mkdir -p %t/secret
+// RUN: %empty-directory(%t)
+// RUN: %empty-directory(%t/secret)
 // RUN: %target-swift-frontend -emit-module -o %t/secret %S/Inputs/struct_with_operators.swift
-// RUN: mkdir -p %t/Frameworks/has_alias.framework/Modules/has_alias.swiftmodule/
+// RUN: %empty-directory(%t/Frameworks/has_alias.framework/Modules/has_alias.swiftmodule)
 // RUN: %target-swift-frontend -emit-module -o %t/Frameworks/has_alias.framework/Modules/has_alias.swiftmodule/%target-swiftmodule-name %S/Inputs/alias.swift -module-name has_alias
 
 // RUN: cd %t/secret && %target-swiftc_driver -emit-module -o %t/has_xref.swiftmodule -I . -F ../Frameworks -parse-as-library %S/Inputs/has_xref.swift %S/../Inputs/empty.swift -Xfrontend -serialize-debugging-options -Xcc -ivfsoverlay -Xcc %S/../Inputs/unextended-module-overlay.yaml -Xcc -DDUMMY
diff --git a/test/Serialization/search-paths.swift b/test/Serialization/search-paths.swift
index fc27e60..a74f82c 100644
--- a/test/Serialization/search-paths.swift
+++ b/test/Serialization/search-paths.swift
@@ -1,6 +1,7 @@
-// RUN: rm -rf %t && mkdir -p %t/secret
+// RUN: %empty-directory(%t)
+// RUN: %empty-directory(%t/secret)
 // RUN: %target-swift-frontend -emit-module -o %t/secret %S/Inputs/struct_with_operators.swift
-// RUN: mkdir -p %t/Frameworks/has_alias.framework/Modules/has_alias.swiftmodule/
+// RUN: %empty-directory(%t/Frameworks/has_alias.framework/Modules/has_alias.swiftmodule)
 // RUN: %target-swift-frontend -emit-module -o %t/Frameworks/has_alias.framework/Modules/has_alias.swiftmodule/%target-swiftmodule-name %S/Inputs/alias.swift -module-name has_alias
 
 // RUN: %target-swift-frontend -emit-module -o %t -I %t/secret -F %t/Frameworks -Fsystem %t/SystemFrameworks -parse-as-library %S/Inputs/has_xref.swift
diff --git a/test/Serialization/serialize_attr.swift b/test/Serialization/serialize_attr.swift
index 688fdb9..e1e8a73 100644
--- a/test/Serialization/serialize_attr.swift
+++ b/test/Serialization/serialize_attr.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -parse-as-library -sil-serialize-all -o %t %s
 // RUN: llvm-bcanalyzer %t/serialize_attr.swiftmodule | %FileCheck %s -check-prefix=BCANALYZER
 // RUN: %target-sil-opt -enable-sil-verify-all -disable-sil-linking %t/serialize_attr.swiftmodule | %FileCheck %s
diff --git a/test/Serialization/sil-serialize-all-with-cross-module-conformance.swift b/test/Serialization/sil-serialize-all-with-cross-module-conformance.swift
index b799a66..38d19ca 100644
--- a/test/Serialization/sil-serialize-all-with-cross-module-conformance.swift
+++ b/test/Serialization/sil-serialize-all-with-cross-module-conformance.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -parse-as-library -module-name ProtoModule -o %t/ProtoModule.swiftmodule %s -DPROTO
 // RUN: %target-swift-frontend -emit-module -parse-as-library -module-name ModelModule -o %t/ModelModule.swiftmodule %s -DMODEL -I %t -sil-serialize-all
 // RUN: %target-swift-frontend -emit-sil -O -sil-verify-all -o /dev/null %s -DUSE -I %t
diff --git a/test/Serialization/struct.swift b/test/Serialization/struct.swift
index 430ecd9..73bafd6 100644
--- a/test/Serialization/struct.swift
+++ b/test/Serialization/struct.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/def_struct.swift
 // RUN: llvm-bcanalyzer %t/def_struct.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -emit-silgen -I %t %s -o /dev/null
diff --git a/test/Serialization/target-incompatible.swift b/test/Serialization/target-incompatible.swift
index fe327df..c246f90 100644
--- a/test/Serialization/target-incompatible.swift
+++ b/test/Serialization/target-incompatible.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %swift -target x86_64-unknown-darwin14 -o %t/mips-template.swiftmodule -parse-stdlib -emit-module -module-name mips %S/../Inputs/empty.swift
 // RUN: %S/Inputs/binary_sub.py x86_64-unknown-darwin14 mips64-unknown-darwin14 < %t/mips-template.swiftmodule > %t/mips.swiftmodule
diff --git a/test/Serialization/target-too-new.swift b/test/Serialization/target-too-new.swift
index 74a0ed1..c0c825c 100644
--- a/test/Serialization/target-too-new.swift
+++ b/test/Serialization/target-too-new.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -target x86_64-apple-macosx10.50 -emit-module -parse-stdlib %S/../Inputs/empty.swift -o %t
 // RUN: not %target-swift-frontend -I %t -typecheck %s 2>&1 | %FileCheck %s
 // RUN: %target-swift-frontend -I %t -typecheck %s -disable-target-os-checking
diff --git a/test/Serialization/testability.swift b/test/Serialization/testability.swift
index da20381..6afa9b5 100644
--- a/test/Serialization/testability.swift
+++ b/test/Serialization/testability.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // This test has two purposes. This first block just tests that we serialize
 // the -enable-testing flag correctly...
diff --git a/test/Serialization/top-level-code.swift b/test/Serialization/top-level-code.swift
index 786ac8a..92e29a6 100644
--- a/test/Serialization/top-level-code.swift
+++ b/test/Serialization/top-level-code.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %s -module-name Test
 // RUN: llvm-bcanalyzer %t/Test.swiftmodule | %FileCheck %s
 
diff --git a/test/Serialization/transparent-std.swift b/test/Serialization/transparent-std.swift
index 541870b..894e4bd 100644
--- a/test/Serialization/transparent-std.swift
+++ b/test/Serialization/transparent-std.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -parse-stdlib -o %t %S/Inputs/def_transparent_std.swift
 // RUN: llvm-bcanalyzer %t/def_transparent_std.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -emit-sil -Xllvm -sil-disable-pass="External Definition To Declaration" -sil-debug-serialization -parse-stdlib -I %t %s | %FileCheck %s -check-prefix=SIL
diff --git a/test/Serialization/transparent.swift b/test/Serialization/transparent.swift
index b8e8026..7932fbb 100644
--- a/test/Serialization/transparent.swift
+++ b/test/Serialization/transparent.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -sil-serialize-all -o %t %S/Inputs/def_transparent.swift
 // RUN: llvm-bcanalyzer %t/def_transparent.swiftmodule | %FileCheck %s
 // RUN: %target-swift-frontend -emit-silgen -sil-link-all -I %t %s | %FileCheck %s -check-prefix=SIL
diff --git a/test/Serialization/typealias.swift b/test/Serialization/typealias.swift
index 882da1b..bef65eb 100644
--- a/test/Serialization/typealias.swift
+++ b/test/Serialization/typealias.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -module-name alias -emit-module -o %t %S/Inputs/alias.swift
 // RUN: llvm-bcanalyzer %t/alias.swiftmodule | %FileCheck %s
 // RUN: %target-build-swift -I %t %s -o %t/a.out
diff --git a/test/Serialization/vtable-function-deserialization.swift b/test/Serialization/vtable-function-deserialization.swift
index 568a9dd..ffe3c34 100644
--- a/test/Serialization/vtable-function-deserialization.swift
+++ b/test/Serialization/vtable-function-deserialization.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o Swift.swiftmodule -O -sil-inline-threshold 0 -module-name Swift -module-link-name swiftCore -parse-as-library -parse-stdlib -emit-module -sil-serialize-all %S/Inputs/vtable-function-deserialization-input.swift -o %t/Swift.swiftmodule
 // RUN: %target-swift-frontend -I %t %s -emit-sil -o - -O -sil-link-all
 
diff --git a/test/Serialization/witnesstable-function-deserialization.swift b/test/Serialization/witnesstable-function-deserialization.swift
index 96a0861..a1a9f22 100644
--- a/test/Serialization/witnesstable-function-deserialization.swift
+++ b/test/Serialization/witnesstable-function-deserialization.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -O -module-name Swift -module-link-name swiftCore -parse-as-library -parse-stdlib -emit-module -sil-serialize-all %S/Inputs/witnesstable-function-deserialization-input.swift -o %t/Swift.swiftmodule -sil-inline-threshold 10
 // RUN: %target-swift-frontend -I %t %s -emit-sil -o - -O -sil-link-all
 
diff --git a/test/Serialization/write-to-locked-dir.swift b/test/Serialization/write-to-locked-dir.swift
index 73ffccf..4a08c82 100644
--- a/test/Serialization/write-to-locked-dir.swift
+++ b/test/Serialization/write-to-locked-dir.swift
@@ -1,5 +1,5 @@
 // RUN: test ! -d %t || chmod +w %t
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: touch %t/main.swiftmodule %t/main.swiftdoc
 // RUN: chmod -w %t
 
diff --git a/test/Serialization/xref-extensions.swift b/test/Serialization/xref-extensions.swift
index 9acd74f..ca19dbf 100644
--- a/test/Serialization/xref-extensions.swift
+++ b/test/Serialization/xref-extensions.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // This check uses -parse-stdlib in order to have an exact count of declarations
 // imported.
diff --git a/test/Serialization/xref-multi-file.swift b/test/Serialization/xref-multi-file.swift
index 0a5d906..d87d87a 100644
--- a/test/Serialization/xref-multi-file.swift
+++ b/test/Serialization/xref-multi-file.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/struct_with_operators.swift
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/alias.swift -module-name has_alias
 // RUN: %target-swift-frontend -emit-module -o %t -I %t %S/Inputs/has_xref.swift
diff --git a/test/Serialization/xref.swift b/test/Serialization/xref.swift
index 547976d..213e87e 100644
--- a/test/Serialization/xref.swift
+++ b/test/Serialization/xref.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/struct_with_operators.swift
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/alias.swift -module-name has_alias
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/xref_distraction.swift
diff --git a/test/SourceKit/CodeComplete/Inputs/filter-rules/hideDesc.json b/test/SourceKit/CodeComplete/Inputs/filter-rules/hideDesc.json
new file mode 100644
index 0000000..d892d80
--- /dev/null
+++ b/test/SourceKit/CodeComplete/Inputs/filter-rules/hideDesc.json
@@ -0,0 +1,10 @@
+[
+  {
+    key.kind: source.codecompletion.description,
+    key.hide: 1,
+    key.names: [
+      "over(Int)",
+      "[Int]"
+    ]
+  }
+]
diff --git a/test/SourceKit/CodeComplete/Inputs/filter-rules/showDesc.json b/test/SourceKit/CodeComplete/Inputs/filter-rules/showDesc.json
new file mode 100644
index 0000000..f04b926
--- /dev/null
+++ b/test/SourceKit/CodeComplete/Inputs/filter-rules/showDesc.json
@@ -0,0 +1,16 @@
+[
+  {
+    key.kind: source.codecompletion.identifier,
+    key.hide: 1,
+    key.names: [
+      "[]"
+    ]
+  },
+  {
+    key.kind: source.codecompletion.description,
+    key.hide: 0,
+    key.names: [
+      "[Float]"
+    ]
+  }
+]
diff --git a/test/SourceKit/CodeComplete/complete_filter_rules.swift b/test/SourceKit/CodeComplete/complete_filter_rules.swift
index 9e65fdb..8be3257 100644
--- a/test/SourceKit/CodeComplete/complete_filter_rules.swift
+++ b/test/SourceKit/CodeComplete/complete_filter_rules.swift
@@ -183,3 +183,50 @@
   struct local {}
   local#^HIDE_OP_10^#
 }
+
+// RUN: %complete-test -filter-rules=%S/Inputs/filter-rules/hideDesc.json -tok=HIDE_DESC_1 %s -- -F %S/../Inputs/libIDE-mock-sdk | %FileCheck %s -check-prefix=HIDE_DESC_1
+func testHideDesc1() {
+  struct Local {
+    func over(_: Int) {}
+    func over(_: Float) {}
+  }
+
+  Local().#^HIDE_DESC_1^#
+}
+// HIDE_DESC_1-NOT: over
+// HIDE_DESC_1: over(Float)
+// HIDE_DESC_1-NOT: over
+
+// RUN: %complete-test -filter-rules=%S/Inputs/filter-rules/hideDesc.json -tok=HIDE_DESC_2 %s -- -F %S/../Inputs/libIDE-mock-sdk | %FileCheck %s -check-prefix=HIDE_DESC_2
+// RUN: %complete-test -filter-rules=%S/Inputs/filter-rules/hideDesc.json -tok=HIDE_DESC_3 %s -- -F %S/../Inputs/libIDE-mock-sdk | %FileCheck %s -check-prefix=HIDE_DESC_2
+func testHideDesc2() {
+  struct Local {
+    subscript(_: Int) -> Int { return 0 }
+    subscript(_: Float) -> Float { return 0.0 }
+  }
+
+  Local()#^HIDE_DESC_2^#
+
+  let local = Local()
+  #^HIDE_DESC_3,local^#
+}
+// HIDE_DESC_2-NOT: [Int]
+// HIDE_DESC_2: [Float]
+// HIDE_DESC_2-NOT: [Int]
+
+// RUN: %complete-test -filter-rules=%S/Inputs/filter-rules/showDesc.json -tok=SHOW_DESC_2 %s -- -F %S/../Inputs/libIDE-mock-sdk | %FileCheck %s -check-prefix=SHOW_DESC_2
+// RUN: %complete-test -filter-rules=%S/Inputs/filter-rules/showDesc.json -tok=SHOW_DESC_3 %s -- -F %S/../Inputs/libIDE-mock-sdk | %FileCheck %s -check-prefix=SHOW_DESC_2
+func testHideDesc2() {
+  struct Local {
+    subscript(_: Int) -> Int { return 0 }
+    subscript(_: Float) -> Float { return 0.0 }
+  }
+
+  Local()#^SHOW_DESC_2^#
+
+  let local = Local()
+  #^SHOW_DESC_3,local^#
+}
+// SHOW_DESC_2-NOT: [Int]
+// SHOW_DESC_2: [Float]
+// SHOW_DESC_2-NOT: [Int]
diff --git a/test/SourceKit/CodeComplete/complete_import_module_flag.swift b/test/SourceKit/CodeComplete/complete_import_module_flag.swift
index 48c80db..392ff60 100644
--- a/test/SourceKit/CodeComplete/complete_import_module_flag.swift
+++ b/test/SourceKit/CodeComplete/complete_import_module_flag.swift
@@ -1,5 +1,5 @@
 // XFAIL: broken_std_regex
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %swift -Xcc -I%S/Inputs -emit-module -o %t/auxiliary_file.swiftmodule %S/Inputs/auxiliary_file.swift
 // RUN: %complete-test -group=none -hide-none -raw -tok=TOP_LEVEL_0 %s -- -import-module auxiliary_file  -I %t -I %S/Inputs | %FileCheck %s
 // RUN: %complete-test -group=none -tok=TOP_LEVEL_0 %s -- -import-module auxiliary_file  -I %t -I %S/Inputs | %FileCheck %s -check-prefix=WITH_HIDING
diff --git a/test/SourceKit/CodeComplete/complete_playground_symlink.swift b/test/SourceKit/CodeComplete/complete_playground_symlink.swift
index 5c44e86..afa61af 100644
--- a/test/SourceKit/CodeComplete/complete_playground_symlink.swift
+++ b/test/SourceKit/CodeComplete/complete_playground_symlink.swift
@@ -1,5 +1,5 @@
-// RUN: rm -rf %t.dir
-// RUN: mkdir -p %t.dir/test.playground
+// RUN: %empty-directory(%t.dir)
+// RUN: %empty-directory(%t.dir/test.playground)
 // RUN: echo "let foo_blah = 0" > %t.dir/input.swift
 // RUN: echo "" >> %t.dir/input.swift
 // RUN: ln -s %t.dir/test.playground %t.dir/linked.playground
diff --git a/test/SourceKit/CodeComplete/complete_structure.swift b/test/SourceKit/CodeComplete/complete_structure.swift
index 92ba93d..42a2268 100644
--- a/test/SourceKit/CodeComplete/complete_structure.swift
+++ b/test/SourceKit/CodeComplete/complete_structure.swift
@@ -117,7 +117,6 @@
 // INT_INNER_0: {name:x==}
 // INT_INNER_0: {name:x<}
 // INT_INNER_0: {name:x+}
-// INT_INNER_0: {name:x>>}
 // INT_INNER_0: {name:x..<}
 
 protocol P1 {
diff --git a/test/SourceKit/CursorInfo/cursor_info.swift b/test/SourceKit/CursorInfo/cursor_info.swift
index d207eb6..94ffd25 100644
--- a/test/SourceKit/CursorInfo/cursor_info.swift
+++ b/test/SourceKit/CursorInfo/cursor_info.swift
@@ -215,8 +215,7 @@
 func hasLocalizationKey2() {}
 
 // REQUIRES: objc_interop
-// RUN: rm -rf %t.tmp
-// RUN: mkdir -p %t.tmp
+// RUN: %empty-directory(%t.tmp)
 // RUN: %swiftc_driver -emit-module -o %t.tmp/FooSwiftModule.swiftmodule %S/Inputs/FooSwiftModule.swift
 // 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)
diff --git a/test/SourceKit/CursorInfo/cursor_symlink.swift b/test/SourceKit/CursorInfo/cursor_symlink.swift
index 5f5d31a..c917e71 100644
--- a/test/SourceKit/CursorInfo/cursor_symlink.swift
+++ b/test/SourceKit/CursorInfo/cursor_symlink.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t.dir
-// RUN: mkdir -p %t.dir
+// RUN: %empty-directory(%t.dir)
 // RUN: echo "let foo = 0" > %t.dir/real.swift
 // RUN: ln -s %t.dir/real.swift %t.dir/linked.swift
 // RUN: %sourcekitd-test -req=cursor -pos=1:5 %t.dir/linked.swift -- %t.dir/real.swift | %FileCheck %s
diff --git a/test/SourceKit/CursorInfo/cursor_usr.swift b/test/SourceKit/CursorInfo/cursor_usr.swift
index 89cd904..bfc6f7b 100644
--- a/test/SourceKit/CursorInfo/cursor_usr.swift
+++ b/test/SourceKit/CursorInfo/cursor_usr.swift
@@ -9,8 +9,7 @@
 func foo(x: FooStruct1) -> S1 {}
 
 // REQUIRES: objc_interop
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %swiftc_driver -emit-module -o %t/FooSwiftModule.swiftmodule %S/Inputs/FooSwiftModule.swift
 
 // Sanity check that we have identical responses when things work.
diff --git a/test/SourceKit/DocSupport/doc_swift_module.swift b/test/SourceKit/DocSupport/doc_swift_module.swift
index 8064b17..a7115c0 100644
--- a/test/SourceKit/DocSupport/doc_swift_module.swift
+++ b/test/SourceKit/DocSupport/doc_swift_module.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t.mod
-// RUN: mkdir -p %t.mod
+// RUN: %empty-directory(%t.mod)
 // RUN: %swift -emit-module -o %t.mod/cake.swiftmodule %S/Inputs/cake.swift -parse-as-library
 // RUN: %sourcekitd-test -req=doc-info -module cake -- -I %t.mod > %t.response
 // RUN: diff -u %s.response %t.response
diff --git a/test/SourceKit/Indexing/index_module_cycle.swift b/test/SourceKit/Indexing/index_module_cycle.swift
index 547a2e6..71f6980 100644
--- a/test/SourceKit/Indexing/index_module_cycle.swift
+++ b/test/SourceKit/Indexing/index_module_cycle.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %swift -emit-module -o %t %S/Inputs/cycle-depend/A.swift -I %S/Inputs/cycle-depend -enable-source-import
 // RUN: %swift -emit-module -o %t %S/Inputs/cycle-depend/B.swift -I %S/Inputs/cycle-depend -enable-source-import
 
diff --git a/test/SourceKit/Indexing/index_module_missing_depend.swift b/test/SourceKit/Indexing/index_module_missing_depend.swift
index 0a33289..4848e58 100644
--- a/test/SourceKit/Indexing/index_module_missing_depend.swift
+++ b/test/SourceKit/Indexing/index_module_missing_depend.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %swift -emit-module -o %t %S/Inputs/cycle-depend/A.swift -I %S/Inputs/cycle-depend -enable-source-import
 
 // RUN: not %sourcekitd-test -req=index %t/A.swiftmodule -- %t/A.swiftmodule 2>&1 | %FileCheck %s
diff --git a/test/SourceKit/Indexing/index_with_swift_module.swift b/test/SourceKit/Indexing/index_with_swift_module.swift
index d5911fb..fb0727f 100644
--- a/test/SourceKit/Indexing/index_with_swift_module.swift
+++ b/test/SourceKit/Indexing/index_with_swift_module.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %swift -emit-module -o %t/test_module.swiftmodule %S/Inputs/test_module.swift
 
 // RUN: %sourcekitd-test -req=index %s -- %s -I %t | %FileCheck %s
diff --git a/test/SourceKit/InterfaceGen/gen_clang_module.swift b/test/SourceKit/InterfaceGen/gen_clang_module.swift
index 6c673a0..1402395 100644
--- a/test/SourceKit/InterfaceGen/gen_clang_module.swift
+++ b/test/SourceKit/InterfaceGen/gen_clang_module.swift
@@ -4,8 +4,7 @@
 
 // REQUIRES: objc_interop
 
-// RUN: rm -rf %t.overlays
-// RUN: mkdir -p %t.overlays
+// RUN: %empty-directory(%t.overlays)
 //
 // RUN: %swift -emit-module -o %t.overlays -F %S/../Inputs/libIDE-mock-sdk %S/Inputs/Foo.swift
 //
diff --git a/test/SourceKit/InterfaceGen/gen_mixed_module.swift b/test/SourceKit/InterfaceGen/gen_mixed_module.swift
index a3c25ce..e11935b 100644
--- a/test/SourceKit/InterfaceGen/gen_mixed_module.swift
+++ b/test/SourceKit/InterfaceGen/gen_mixed_module.swift
@@ -1,8 +1,7 @@
 var x = 10
 
 // REQUIRES: objc_interop
-// RUN: rm -rf %t.overlays
-// RUN: mkdir -p %t.overlays
+// RUN: %empty-directory(%t.overlays)
 
 // RUN: %swift -emit-module -o %t.overlays -F %S/../Inputs/libIDE-mock-sdk %S/../Inputs/libIDE-mock-sdk/Mixed.swift -import-underlying-module -module-name Mixed -disable-objc-attr-requires-foundation-module
 // RUN: %sourcekitd-test -req=interface-gen -module Mixed -- -I %t.overlays -F %S/../Inputs/libIDE-mock-sdk %mcp_opt %clang-importer-sdk | %FileCheck -check-prefix=CHECK1 %s
diff --git a/test/SourceKit/InterfaceGen/gen_swift_module.swift b/test/SourceKit/InterfaceGen/gen_swift_module.swift
index 8f9fea1..33c4418 100644
--- a/test/SourceKit/InterfaceGen/gen_swift_module.swift
+++ b/test/SourceKit/InterfaceGen/gen_swift_module.swift
@@ -4,8 +4,7 @@
   s.sort()
 }
 
-// RUN: rm -rf %t.mod
-// RUN: mkdir -p %t.mod
+// RUN: %empty-directory(%t.mod)
 // RUN: %swift -emit-module -o %t.mod/swift_mod.swiftmodule %S/Inputs/swift_mod.swift -parse-as-library
 // RUN: %sourcekitd-test -req=interface-gen -module swift_mod -- -I %t.mod > %t.response
 // RUN: diff -u %s.response %t.response
diff --git a/test/SourceKit/Mixed/complete_twice_bridging_header.swift b/test/SourceKit/Mixed/complete_twice_bridging_header.swift
index e8a370c..8aec781 100644
--- a/test/SourceKit/Mixed/complete_twice_bridging_header.swift
+++ b/test/SourceKit/Mixed/complete_twice_bridging_header.swift
@@ -1,5 +1,5 @@
 // REQUIRES: objc_interop
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %sourcekitd-test -req=complete -pos=8:5 %s -- %s -module-name Mixed -pch-output-dir %t -import-objc-header %S/Inputs/header.h == -req=complete -pos=8:5 %s -- %s -module-name Mixed -pch-output-dir %t -import-objc-header %S/Inputs/header.h | %FileCheck %s --check-prefix=CHECK-MEMBERS
 // RUN: %sourcekitd-test -req=complete -pos=9:1 %s -- %s -module-name Mixed -pch-output-dir %t -import-objc-header %S/Inputs/header.h == -req=complete -pos=9:1 %s -- %s -module-name Mixed -pch-output-dir %t -import-objc-header %S/Inputs/header.h | %FileCheck %s --check-prefix=CHECK-GLOBALS
 // RUN: stat %t/*.pch
diff --git a/test/SourceKit/Mixed/cursor_mixed_header.swift b/test/SourceKit/Mixed/cursor_mixed_header.swift
index 4170257..30624df 100644
--- a/test/SourceKit/Mixed/cursor_mixed_header.swift
+++ b/test/SourceKit/Mixed/cursor_mixed_header.swift
@@ -10,7 +10,7 @@
 
 // RUN: %sourcekitd-test -req=cursor -pos=3:7 %s -- %s %mcp_opt -module-name Mixed -import-objc-header %S/Inputs/header.h | %FileCheck %s
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %sourcekitd-test -req=cursor -pos=3:7 %s -- %s %mcp_opt -module-name Mixed -pch-output-dir %t -import-objc-header %S/Inputs/header.h | %FileCheck %s
 // RUN: stat %t/*.pch
 
diff --git a/test/SourceKit/Sema/sema_symlink.swift b/test/SourceKit/Sema/sema_symlink.swift
index db28fc5..a58b703 100644
--- a/test/SourceKit/Sema/sema_symlink.swift
+++ b/test/SourceKit/Sema/sema_symlink.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t.dir
-// RUN: mkdir -p %t.dir
+// RUN: %empty-directory(%t.dir)
 // RUN: echo "let foo: Int = goo" > %t.dir/real.swift
 // RUN: ln -s %t.dir/real.swift %t.dir/linked.swift
 // RUN: %sourcekitd-test -req=sema %t.dir/linked.swift -- %t.dir/real.swift | %sed_clean > %t.link.response
diff --git a/test/Syntax/Inputs/serialize_struct_decl.json b/test/Syntax/Inputs/serialize_struct_decl.json
new file mode 100644
index 0000000..ccbdaff
--- /dev/null
+++ b/test/Syntax/Inputs/serialize_struct_decl.json
@@ -0,0 +1,270 @@
+{
+  "kind": "UnknownDecl",
+  "layout": [
+    {
+      "tokenKind": {
+        "kind": "kw_struct",
+        "text": "struct"
+      },
+      "leadingTrivia": [
+        {
+          "kind": "LineComment",
+          "value": "\/\/ RUN: %swift-syntax-test -input-source-filename %s -serialize-raw-tree > %t"
+        },
+        {
+          "kind": "Newline",
+          "value": 1
+        },
+        {
+          "kind": "LineComment",
+          "value": "\/\/ RUN: diff %t %S\/Inputs\/serialize_struct_decl.json"
+        },
+        {
+          "kind": "Newline",
+          "value": 2
+        }
+      ],
+      "trailingTrivia": [
+        {
+          "kind": "Space",
+          "value": 1
+        }
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "identifier",
+        "text": "Foo"
+      },
+      "leadingTrivia": [
+
+      ],
+      "trailingTrivia": [
+        {
+          "kind": "Space",
+          "value": 1
+        }
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "l_brace",
+        "text": "{"
+      },
+      "leadingTrivia": [
+
+      ],
+      "trailingTrivia": [
+
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "kw_let",
+        "text": "let"
+      },
+      "leadingTrivia": [
+        {
+          "kind": "Newline",
+          "value": 1
+        },
+        {
+          "kind": "Space",
+          "value": 2
+        }
+      ],
+      "trailingTrivia": [
+        {
+          "kind": "Space",
+          "value": 3
+        }
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "identifier",
+        "text": "bar"
+      },
+      "leadingTrivia": [
+
+      ],
+      "trailingTrivia": [
+        {
+          "kind": "Space",
+          "value": 1
+        }
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "colon",
+        "text": ":"
+      },
+      "leadingTrivia": [
+
+      ],
+      "trailingTrivia": [
+        {
+          "kind": "Space",
+          "value": 1
+        }
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "identifier",
+        "text": "Int"
+      },
+      "leadingTrivia": [
+
+      ],
+      "trailingTrivia": [
+
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "kw_let",
+        "text": "let"
+      },
+      "leadingTrivia": [
+        {
+          "kind": "Newline",
+          "value": 2
+        },
+        {
+          "kind": "Space",
+          "value": 2
+        }
+      ],
+      "trailingTrivia": [
+        {
+          "kind": "Space",
+          "value": 1
+        }
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "identifier",
+        "text": "baz"
+      },
+      "leadingTrivia": [
+
+      ],
+      "trailingTrivia": [
+        {
+          "kind": "Space",
+          "value": 1
+        }
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "colon",
+        "text": ":"
+      },
+      "leadingTrivia": [
+
+      ],
+      "trailingTrivia": [
+        {
+          "kind": "Space",
+          "value": 1
+        }
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "identifier",
+        "text": "Array"
+      },
+      "leadingTrivia": [
+
+      ],
+      "trailingTrivia": [
+        {
+          "kind": "Space",
+          "value": 1
+        }
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "oper_binary_spaced",
+        "text": "<"
+      },
+      "leadingTrivia": [
+
+      ],
+      "trailingTrivia": [
+        {
+          "kind": "Space",
+          "value": 1
+        }
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "identifier",
+        "text": "Int"
+      },
+      "leadingTrivia": [
+
+      ],
+      "trailingTrivia": [
+        {
+          "kind": "Space",
+          "value": 1
+        }
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "oper_binary_spaced",
+        "text": ">"
+      },
+      "leadingTrivia": [
+
+      ],
+      "trailingTrivia": [
+
+      ],
+      "presence": "Present"
+    },
+    {
+      "tokenKind": {
+        "kind": "r_brace",
+        "text": "}"
+      },
+      "leadingTrivia": [
+        {
+          "kind": "Newline",
+          "value": 1
+        },
+        {
+          "kind": "Space",
+          "value": 6
+        }
+      ],
+      "trailingTrivia": [
+
+      ],
+      "presence": "Present"
+    }
+  ],
+  "presence": "Present"
+}
diff --git a/test/Syntax/serialize_struct_decl.swift b/test/Syntax/serialize_struct_decl.swift
new file mode 100644
index 0000000..9ee30e8
--- /dev/null
+++ b/test/Syntax/serialize_struct_decl.swift
@@ -0,0 +1,8 @@
+// RUN: %swift-syntax-test -input-source-filename %s -serialize-raw-tree > %t
+// RUN: diff %t %S/Inputs/serialize_struct_decl.json
+
+struct Foo {
+  let   bar : Int
+
+  let baz : Array < Int >
+      }
diff --git a/test/TBD/extension.swift b/test/TBD/extension.swift
index 451fe9c..35f1316 100644
--- a/test/TBD/extension.swift
+++ b/test/TBD/extension.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %S/Inputs/extension_types.swift -module-name ExtensionTypes -emit-module -emit-module-path %t/ExtensionTypes.swiftmodule
 // RUN: %target-swift-frontend -emit-ir -o- -parse-as-library -module-name test -validate-tbd-against-ir=all -I %t %s
 
diff --git a/test/api-digester/Inputs/APINotesLeft/APINotesTest.apinotes b/test/api-digester/Inputs/APINotesLeft/APINotesTest.apinotes
new file mode 100644
index 0000000..23f7a5c
--- /dev/null
+++ b/test/api-digester/Inputs/APINotesLeft/APINotesTest.apinotes
@@ -0,0 +1,7 @@
+Name: APINotesTest
+Globals:
+  - Name: ANTGlobalValue
+    SwiftName: OldType.oldMember
+Protocols:
+  - Name: TypeWithMethod
+    SwiftName: SwiftTypeWithMethodLeft
diff --git a/test/api-digester/Inputs/APINotesLeft/APINotesTest.h b/test/api-digester/Inputs/APINotesLeft/APINotesTest.h
new file mode 100644
index 0000000..ab12619
--- /dev/null
+++ b/test/api-digester/Inputs/APINotesLeft/APINotesTest.h
@@ -0,0 +1,12 @@
+extern int ANTGlobalValue;
+
+@interface NewType
+@end
+@interface OldType
+@end
+
+@protocol TypeWithMethod
+  -(void) minusPrint;
+  +(void) plusPrint;
+  -(int) getPropertyA;
+@end
diff --git a/test/api-digester/Inputs/APINotesLeft/module.modulemap b/test/api-digester/Inputs/APINotesLeft/module.modulemap
new file mode 100644
index 0000000..afd875a
--- /dev/null
+++ b/test/api-digester/Inputs/APINotesLeft/module.modulemap
@@ -0,0 +1,3 @@
+module APINotesTest {
+  header "APINotesTest.h"
+}
diff --git a/test/api-digester/Inputs/APINotesRight/APINotesTest.apinotes b/test/api-digester/Inputs/APINotesRight/APINotesTest.apinotes
new file mode 100644
index 0000000..2c39c80
--- /dev/null
+++ b/test/api-digester/Inputs/APINotesRight/APINotesTest.apinotes
@@ -0,0 +1,7 @@
+Name: APINotesTest
+Globals:
+  - Name: ANTGlobalValue
+    SwiftName: NewType.newMember
+Protocols:
+  - Name: TypeWithMethod
+    SwiftName: SwiftTypeWithMethodRight
diff --git a/test/api-digester/Inputs/APINotesRight/APINotesTest.h b/test/api-digester/Inputs/APINotesRight/APINotesTest.h
new file mode 100644
index 0000000..a20dc5d
--- /dev/null
+++ b/test/api-digester/Inputs/APINotesRight/APINotesTest.h
@@ -0,0 +1,12 @@
+extern int ANTGlobalValue;
+
+@interface NewType
+@end
+@interface OldType
+@end
+
+@protocol TypeWithMethod
+  -(void) minusPrint;
+  +(void) plusPrint;
+  @property int PropertyA;
+@end
diff --git a/test/api-digester/Inputs/APINotesRight/module.modulemap b/test/api-digester/Inputs/APINotesRight/module.modulemap
new file mode 100644
index 0000000..afd875a
--- /dev/null
+++ b/test/api-digester/Inputs/APINotesRight/module.modulemap
@@ -0,0 +1,3 @@
+module APINotesTest {
+  header "APINotesTest.h"
+}
diff --git a/test/api-digester/Outputs/apinotes-migrator-gen.json b/test/api-digester/Outputs/apinotes-migrator-gen.json
new file mode 100644
index 0000000..86fd96d
--- /dev/null
+++ b/test/api-digester/Outputs/apinotes-migrator-gen.json
@@ -0,0 +1,40 @@
+[
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "Function",
+    "NodeAnnotation": "GetterToProperty",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)TypeWithMethod(im)getPropertyA",
+    "LeftComment": "",
+    "RightUsr": "",
+    "RightComment": "propertyA",
+    "ModuleName": "APINotesTest"
+  },
+  {
+    "DiffItemKind": "CommonDiffItem",
+    "NodeKind": "TypeDecl",
+    "NodeAnnotation": "Rename",
+    "ChildIndex": "0",
+    "LeftUsr": "c:objc(pl)TypeWithMethod",
+    "LeftComment": "SwiftTypeWithMethodLeft",
+    "RightUsr": "",
+    "RightComment": "SwiftTypeWithMethodRight",
+    "ModuleName": "APINotesTest"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:@ANTGlobalValue",
+    "OldPrintedName": "oldMember",
+    "OldTypeName": "OldType",
+    "NewPrintedName": "newMember",
+    "NewTypeName": "NewType"
+  },
+  {
+    "DiffItemKind": "TypeMemberDiffItem",
+    "Usr": "c:objc(pl)TypeWithMethod(cm)plusPrint",
+    "OldPrintedName": "plusPrint()",
+    "OldTypeName": "SwiftTypeWithMethodLeft",
+    "NewPrintedName": "plusPrint()",
+    "NewTypeName": "SwiftTypeWithMethodRight"
+  }
+]
\ No newline at end of file
diff --git a/test/api-digester/apinotes-migrator-gen.swift b/test/api-digester/apinotes-migrator-gen.swift
new file mode 100644
index 0000000..24a93c2
--- /dev/null
+++ b/test/api-digester/apinotes-migrator-gen.swift
@@ -0,0 +1,8 @@
+// REQUIRES: OS=macosx
+// RUN: %empty-directory(%t.mod)
+// RUN: %empty-directory(%t.sdk)
+// RUN: %empty-directory(%t.module-cache)
+// RUN: %api-digester -dump-sdk -module APINotesTest -o %t.dump1.json -module-cache-path %t.module-cache -sdk %t.sdk -swift-version 3 -I %S/Inputs/APINotesLeft
+// RUN: %api-digester -dump-sdk -module APINotesTest -o %t.dump2.json -module-cache-path %t.module-cache -sdk %t.sdk -swift-version 3 -I %S/Inputs/APINotesRight
+// RUN: %api-digester -compare-sdk --input-paths %t.dump1.json -input-paths %t.dump2.json -o %t.result -json
+// RUN: diff -u %S/Outputs/apinotes-migrator-gen.json %t.result
diff --git a/test/api-digester/compare-dump.swift b/test/api-digester/compare-dump.swift
index 1ae4e04..64fed0a 100644
--- a/test/api-digester/compare-dump.swift
+++ b/test/api-digester/compare-dump.swift
@@ -1,6 +1,6 @@
-// RUN: rm -rf %t.mod && mkdir -p %t.mod
-// RUN: rm -rf %t.sdk && mkdir -p %t.sdk
-// RUN: rm -rf %t.module-cache && mkdir -p %t.module-cache
+// RUN: %empty-directory(%t.mod)
+// RUN: %empty-directory(%t.sdk)
+// RUN: %empty-directory(%t.module-cache)
 // RUN: %swift -emit-module -o %t.mod/cake1.swiftmodule %S/Inputs/cake1.swift -parse-as-library
 // RUN: %swift -emit-module -o %t.mod/cake2.swiftmodule %S/Inputs/cake2.swift -parse-as-library
 // RUN: %api-digester -dump-sdk -module cake1 -o %t.dump1.json -module-cache-path %t.module-cache -sdk %t.sdk -swift-version 3 -I %t.mod
diff --git a/test/api-digester/dump-module.swift b/test/api-digester/dump-module.swift
index fc359a7..8e78927 100644
--- a/test/api-digester/dump-module.swift
+++ b/test/api-digester/dump-module.swift
@@ -1,6 +1,6 @@
-// RUN: rm -rf %t.mod && mkdir -p %t.mod
-// RUN: rm -rf %t.sdk && mkdir -p %t.sdk
-// RUN: rm -rf %t.module-cache && mkdir -p %t.module-cache
+// RUN: %empty-directory(%t.mod)
+// RUN: %empty-directory(%t.sdk)
+// RUN: %empty-directory(%t.module-cache)
 // RUN: %swift -emit-module -o %t.mod/cake.swiftmodule %S/Inputs/cake.swift -parse-as-library
 // RUN: %api-digester -dump-sdk -module cake -o %t.dump.json -module-cache-path %t.module-cache -sdk %t.sdk -swift-version 3 -I %t.mod
 // RUN: diff -u %t.dump.json %S/Outputs/cake.json
diff --git a/test/api-digester/macro-gen-json.swift b/test/api-digester/macro-gen-json.swift
index 54eb26c..a37953f 100644
--- a/test/api-digester/macro-gen-json.swift
+++ b/test/api-digester/macro-gen-json.swift
@@ -1,6 +1,6 @@
-// RUN: rm -rf %t.mod && mkdir -p %t.mod
-// RUN: rm -rf %t.sdk && mkdir -p %t.sdk
-// RUN: rm -rf %t.module-cache && mkdir -p %t.module-cache
+// RUN: %empty-directory(%t.mod)
+// RUN: %empty-directory(%t.sdk)
+// RUN: %empty-directory(%t.module-cache)
 // RUN: %swift -emit-module -o %t.mod/macrogenleft.swiftmodule %S/Inputs/macro-gen-left.swift -parse-as-library
 // RUN: %swift -emit-module -o %t.mod/macrogenright.swiftmodule %S/Inputs/macro-gen-right.swift -parse-as-library
 // RUN: %api-digester -dump-sdk -module macrogenleft -o %t.dump1.json -module-cache-path %t.module-cache -sdk %t.sdk -swift-version 3 -I %t.mod
diff --git a/test/api-digester/macro-gen.swift b/test/api-digester/macro-gen.swift
index aeef745..078eee8 100644
--- a/test/api-digester/macro-gen.swift
+++ b/test/api-digester/macro-gen.swift
@@ -1,6 +1,6 @@
-// RUN: rm -rf %t.mod && mkdir -p %t.mod
-// RUN: rm -rf %t.sdk && mkdir -p %t.sdk
-// RUN: rm -rf %t.module-cache && mkdir -p %t.module-cache
+// RUN: %empty-directory(%t.mod)
+// RUN: %empty-directory(%t.sdk)
+// RUN: %empty-directory(%t.module-cache)
 // RUN: %swift -emit-module -o %t.mod/macrogenleft.swiftmodule %S/Inputs/macro-gen-left.swift -parse-as-library
 // RUN: %swift -emit-module -o %t.mod/macrogenright.swiftmodule %S/Inputs/macro-gen-right.swift -parse-as-library
 // RUN: %api-digester -dump-sdk -module macrogenleft -o %t.dump1.json -module-cache-path %t.module-cache -sdk %t.sdk -swift-version 3 -I %t.mod
diff --git a/test/attr/accessibility_multifile.swift b/test/attr/accessibility_multifile.swift
index 85328c6..4ed13ce 100644
--- a/test/attr/accessibility_multifile.swift
+++ b/test/attr/accessibility_multifile.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %utils/split_file.py -o %t %s
 // RUN: %target-swift-frontend -typecheck %t/file1.swift -primary-file %t/file2.swift -verify
 
diff --git a/test/attr/accessibility_print.swift b/test/attr/accessibility_print.swift
index 519f669..dcc0cdb 100644
--- a/test/attr/accessibility_print.swift
+++ b/test/attr/accessibility_print.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-ide-test -skip-deinit=false -print-ast-typechecked -print-accessibility -source-filename=%s | %FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-SRC
 // RUN: %target-swift-frontend -emit-module-path %t/accessibility_print.swiftmodule %s
 // RUN: %target-swift-ide-test -skip-deinit=false -print-module -print-accessibility -module-to-print=accessibility_print -I %t -source-filename=%s | %FileCheck %s
diff --git a/test/attr/attr_autoclosure.swift b/test/attr/attr_autoclosure.swift
index 8add38d..f9edf79 100644
--- a/test/attr/attr_autoclosure.swift
+++ b/test/attr/attr_autoclosure.swift
@@ -55,7 +55,7 @@
 struct S : P2 {
   typealias Element = Int
   func each(_ closure: @autoclosure () -> ()) {
-    // expected-note@-1{{parameter 'closure' is implicitly non-escaping because it was declared @autoclosure}}
+    // expected-note@-1{{parameter 'closure' is implicitly non-escaping}}
 
     overloadedEach(self, closure) // expected-error {{passing non-escaping parameter 'closure' to function expecting an @escaping closure}}
   }
@@ -93,7 +93,7 @@
 func func12_sink(_ x: @escaping () -> Int) { }
 
 func func12a(_ x: @autoclosure () -> Int) {
-    // expected-note@-1{{parameter 'x' is implicitly non-escaping because it was declared @autoclosure}}
+    // expected-note@-1{{parameter 'x' is implicitly non-escaping}}
 
   func12_sink(x) // expected-error {{passing non-escaping parameter 'x' to function expecting an @escaping closure}}
 }
diff --git a/test/attr/attr_availability_swift_deserialize.swift b/test/attr/attr_availability_swift_deserialize.swift
index 80ec969..0997a44 100644
--- a/test/attr/attr_availability_swift_deserialize.swift
+++ b/test/attr/attr_availability_swift_deserialize.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -emit-module-path %t/OldAndNew.swiftmodule -module-name OldAndNew %S/Inputs/OldAndNew.swift 
 // RUN: not %target-swift-frontend -typecheck -I %t -swift-version 3 %s 2>&1 | %FileCheck -check-prefix THREE %s
 // RUN: not %target-swift-frontend -typecheck -I %t -swift-version 4 %s 2>&1 | %FileCheck -check-prefix FOUR %s
diff --git a/test/attr/attr_escaping.swift b/test/attr/attr_escaping.swift
index aae8d84..c20ef6b 100644
--- a/test/attr/attr_escaping.swift
+++ b/test/attr/attr_escaping.swift
@@ -160,3 +160,60 @@
     set(newValue) { stored = newValue } // expected-error{{cannot assign value of type '(@escaping () -> Int) -> Void' to type 'Optional<(() -> Int) -> Void>'}}
   }
 }
+
+// A call of a closure literal should be non-escaping
+func takesInOut(y: inout Int) {
+  _ = {
+    y += 1 // no-error
+  }()
+
+  _ = ({
+    y += 1 // no-error
+  })()
+
+  _ = { () in
+    y += 1 // no-error
+  }()
+
+  _ = ({ () in
+    y += 1 // no-error
+  })()
+
+  _ = { () -> () in
+    y += 1 // no-error
+  }()
+
+  _ = ({ () -> () in
+    y += 1 // no-error
+  })()
+}
+
+class HasIVarCaptures {
+  var x: Int = 0
+
+  func method() {
+    _ = {
+      x += 1 // no-error
+    }()
+
+    _ = ({
+      x += 1 // no-error
+    })()
+
+    _ = { () in
+      x += 1 // no-error
+    }()
+
+    _ = ({ () in
+      x += 1 // no-error
+    })()
+
+    _ = { () -> () in
+      x += 1 // no-error
+    }()
+
+    _ = ({ () -> () in
+      x += 1 // no-error
+    })()
+  }
+}
diff --git a/test/attr/attr_fixed_layout.swift b/test/attr/attr_fixed_layout.swift
index be40c16..5039217 100644
--- a/test/attr/attr_fixed_layout.swift
+++ b/test/attr/attr_fixed_layout.swift
@@ -1,5 +1,7 @@
 // RUN: %target-swift-frontend -typecheck -verify -dump-ast -enable-resilience %s 2>&1 | %FileCheck --check-prefix=RESILIENCE-ON %s
+// RUN: %target-swift-frontend -typecheck -verify -dump-ast -enable-resilience -enable-testing %s 2>&1 | %FileCheck --check-prefix=RESILIENCE-ON %s
 // RUN: %target-swift-frontend -typecheck -verify -dump-ast %s 2>&1 | %FileCheck --check-prefix=RESILIENCE-OFF %s
+// RUN: %target-swift-frontend -typecheck -verify -dump-ast %s -enable-testing 2>&1 | %FileCheck --check-prefix=RESILIENCE-OFF %s
 
 //
 // Public types with @_fixed_layout are always fixed layout
@@ -54,7 +56,6 @@
 // expected-error@-1 {{'@_fixed_layout' attribute can only be applied to '@_versioned' or public declarations, but 'InternalStruct' is internal}}
 
   @_fixed_layout public struct NestedStruct {}
-  // expected-error@-1 {{'@_fixed_layout' attribute can only be applied to '@_versioned' or public declarations, but 'NestedStruct' is internal}}
 }
 
 @_fixed_layout fileprivate struct FileprivateStruct {}
diff --git a/test/attr/attr_inlineable.swift b/test/attr/attr_inlineable.swift
index 2c659fa..fbfa2aa 100644
--- a/test/attr/attr_inlineable.swift
+++ b/test/attr/attr_inlineable.swift
@@ -1,20 +1,18 @@
 // RUN: %target-typecheck-verify-swift -swift-version 4
+// RUN: %target-typecheck-verify-swift -swift-version 4 -enable-testing
 
 @_inlineable struct TestInlineableStruct {}
 // expected-error@-1 {{@_inlineable cannot be applied to this declaration}}
 
 private func privateFunction() {}
-// expected-note@-1 5{{global function 'privateFunction()' is not '@_versioned' or public}}
+// expected-note@-1{{global function 'privateFunction()' is not '@_versioned' or public}}
 fileprivate func fileprivateFunction() {}
-// expected-note@-1 5{{global function 'fileprivateFunction()' is not '@_versioned' or public}}
+// expected-note@-1{{global function 'fileprivateFunction()' is not '@_versioned' or public}}
 func internalFunction() {}
-// expected-note@-1 5{{global function 'internalFunction()' is not '@_versioned' or public}}
+// expected-note@-1{{global function 'internalFunction()' is not '@_versioned' or public}}
 @_versioned func versionedFunction() {}
 public func publicFunction() {}
 
-func internalIntFunction() -> Int {}
-// expected-note@-1 2{{global function 'internalIntFunction()' is not '@_versioned' or public}}
-
 private struct PrivateStruct {}
 // expected-note@-1 3{{struct 'PrivateStruct' is not '@_versioned' or public}}
 struct InternalStruct {}
@@ -135,72 +133,6 @@
   }
 }
 
-func internalFunctionWithDefaultValue(
-    x: Int = {
-      struct Nested {}
-      // OK
-
-      publicFunction()
-      // OK
-      versionedFunction()
-      // OK
-      internalFunction()
-      // OK
-      fileprivateFunction()
-      // OK
-      privateFunction()
-      // OK
-
-      return 0
-    }(),
-    y: Int = internalIntFunction()) {}
-
-@_versioned func versionedFunctionWithDefaultValue(
-    x: Int = {
-      struct Nested {}
-      // expected-error@-1 {{type 'Nested' cannot be nested inside a default argument value}}
-
-      // FIXME: Some errors below are diagnosed twice
-
-      publicFunction()
-      // OK
-      versionedFunction()
-      // OK
-      internalFunction()
-      // expected-error@-1 2{{global function 'internalFunction()' is internal and cannot be referenced from a default argument value}}
-      fileprivateFunction()
-      // expected-error@-1 2{{global function 'fileprivateFunction()' is fileprivate and cannot be referenced from a default argument value}}
-      privateFunction()
-      // expected-error@-1 2{{global function 'privateFunction()' is private and cannot be referenced from a default argument value}}
-
-      return 0
-    }(),
-    y: Int = internalIntFunction()) {}
-    // expected-error@-1 {{global function 'internalIntFunction()' is internal and cannot be referenced from a default argument value}}
-
-public func publicFunctionWithDefaultValue(
-    x: Int = {
-      struct Nested {}
-      // expected-error@-1 {{type 'Nested' cannot be nested inside a default argument value}}
-
-      // FIXME: Some errors below are diagnosed twice
-
-      publicFunction()
-      // OK
-      versionedFunction()
-      // OK
-      internalFunction()
-      // expected-error@-1 2{{global function 'internalFunction()' is internal and cannot be referenced from a default argument value}}
-      fileprivateFunction()
-      // expected-error@-1 2{{global function 'fileprivateFunction()' is fileprivate and cannot be referenced from a default argument value}}
-      privateFunction()
-      // expected-error@-1 2{{global function 'privateFunction()' is private and cannot be referenced from a default argument value}}
-
-      return 0
-    }(),
-    y: Int = internalIntFunction()) {}
-    // expected-error@-1 {{global function 'internalIntFunction()' is internal and cannot be referenced from a default argument value}}
-
 // Make sure protocol extension members can reference protocol requirements
 // (which do not inherit the @_versioned attribute).
 @_versioned
diff --git a/test/attr/attr_noescape.swift b/test/attr/attr_noescape.swift
index e3c0936..de1434a 100644
--- a/test/attr/attr_noescape.swift
+++ b/test/attr/attr_noescape.swift
@@ -170,7 +170,7 @@
 
 // Autoclosure implies noescape, but produce nice diagnostics so people know
 // why noescape problems happen.
-func testAutoclosure(_ a : @autoclosure () -> Int) { // expected-note{{parameter 'a' is implicitly non-escaping because it was declared @autoclosure}}
+func testAutoclosure(_ a : @autoclosure () -> Int) { // expected-note{{parameter 'a' is implicitly non-escaping}}
   doesEscape { a() }  // expected-error {{closure use of non-escaping parameter 'a' may allow it to escape}}
 }
 
diff --git a/test/attr/attr_objc.swift b/test/attr/attr_objc.swift
index 674bdf3..20897b6 100644
--- a/test/attr/attr_objc.swift
+++ b/test/attr/attr_objc.swift
@@ -161,7 +161,7 @@
 class subject_class2 : Protocol_Class1, PlainProtocol { // no-error
 }
 
-@objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute because they are not directly visible from Objective-C}} {{1-7=}}
+@objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' because they are not directly visible from Objective-C}} {{1-7=}}
 class subject_genericClass<T> {
   @objc
   var subject_instanceVar: Int // no-error
@@ -173,7 +173,7 @@
   func subject_instanceFunc() {} // no_error
 }
 
-@objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute}} {{1-7=}}
+@objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc'}} {{1-7=}}
 class subject_genericClass2<T> : Class_ObjC1 {
   @objc
   var subject_instanceVar: Int // no-error
@@ -359,10 +359,10 @@
 }
 
 func genericContext1<T>(_: T) {
-  @objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute because they are not directly visible from Objective-C}} {{3-9=}}
+  @objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' because they are not directly visible from Objective-C}} {{3-9=}}
   class subject_inGenericContext {} // expected-error{{type 'subject_inGenericContext' cannot be nested in generic function 'genericContext1'}}
 
-  @objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute}} {{3-9=}}
+  @objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc'}} {{3-9=}}
   class subject_inGenericContext2 : Class_ObjC1 {} // expected-error{{type 'subject_inGenericContext2' cannot be nested in generic function 'genericContext1'}}
 
   class subject_constructor_inGenericContext { // expected-error{{type 'subject_constructor_inGenericContext' cannot be nested in generic function 'genericContext1'}}
@@ -382,10 +382,10 @@
 }
 
 class GenericContext2<T> {
-  @objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute because they are not directly visible from Objective-C}} {{3-9=}}
+  @objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' because they are not directly visible from Objective-C}} {{3-9=}}
   class subject_inGenericContext {}
 
-  @objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute}} {{3-9=}}
+  @objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc'}} {{3-9=}}
   class subject_inGenericContext2 : Class_ObjC1 {}
 
   @objc
@@ -394,10 +394,10 @@
 
 class GenericContext3<T> {
   class MoreNested {
-    @objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute because they are not directly visible from Objective-C}} {{5-11=}}
+    @objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' because they are not directly visible from Objective-C}} {{5-11=}}
     class subject_inGenericContext {}
 
-    @objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute}} {{5-11=}}
+    @objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc'}} {{5-11=}}
     class subject_inGenericContext2 : Class_ObjC1 {}
 
     @objc
@@ -405,20 +405,27 @@
   }
 }
 
-@objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute because they are not directly visible from Objective-C}} {{1-7=}}
+@objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' because they are not directly visible from Objective-C}} {{1-7=}}
 class ConcreteSubclassOfGeneric : GenericContext3<Int> {}
 
 extension ConcreteSubclassOfGeneric {
   @objc func foo() {} // expected-error {{@objc is not supported within extensions of generic classes}}
 }
 
-@objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute}} {{1-7=}}
+@objc // expected-error{{generic subclasses of '@objc' classes cannot have an explicit '@objc'}} {{1-7=}}
 class ConcreteSubclassOfGeneric2 : subject_genericClass2<Int> {}
 
 extension ConcreteSubclassOfGeneric2 {
   @objc func foo() {} // expected-error {{@objc is not supported within extensions of generic classes}}
 }
 
+@objc(CustomNameForSubclassOfGeneric) // okay
+class ConcreteSubclassOfGeneric3 : GenericContext3<Int> {}
+
+extension ConcreteSubclassOfGeneric3 {
+  @objc func foo() {} // expected-error {{@objc is not supported within extensions of generic classes}}
+}
+
 class subject_subscriptIndexed1 {
   @objc
   subscript(a: Int) -> Int { // no-error
diff --git a/test/attr/attr_objc_swift3_deprecated.swift b/test/attr/attr_objc_swift3_deprecated.swift
index 28bb52d..823f003 100644
--- a/test/attr/attr_objc_swift3_deprecated.swift
+++ b/test/attr/attr_objc_swift3_deprecated.swift
@@ -19,6 +19,21 @@
   dynamic var bar: NSObject? = nil // expected-warning{{inference of '@objc' for 'dynamic' members is deprecated}}{{3-3=@objc }}
 }
 
+class GenericClass<T>: NSObject {}
+
+class SubclassOfGeneric: GenericClass<Int> {
+  func foo() { } // expected-warning{{inference of '@objc' for members of Objective-C-derived classes is deprecated}}
+    // expected-note@-1{{add `@objc` to continue exposing an Objective-C entry point (Swift 3 behavior)}}{{3-3=@objc }}
+    // expected-note@-2{{add `@nonobjc` to suppress the Objective-C entry point (Swift 4 behavior)}}{{3-3=@nonobjc }}
+}
+
+@objc(SubclassOfGenericCustom)
+class SubclassOfGenericCustomName: GenericClass<Int> {
+  func foo() { } // expected-warning{{inference of '@objc' for members of Objective-C-derived classes is deprecated}}
+    // expected-note@-1{{add `@objc` to continue exposing an Objective-C entry point (Swift 3 behavior)}}{{3-3=@objc }}
+    // expected-note@-2{{add `@nonobjc` to suppress the Objective-C entry point (Swift 4 behavior)}}{{3-3=@nonobjc }}
+}
+
 // Suppress diagnostices about references to inferred @objc declarations
 // in this mode.
 func test(sc: ObjCSubclass, dm: DynamicMembers) {
diff --git a/test/attr/attr_objc_swift3_deprecated_uses.swift b/test/attr/attr_objc_swift3_deprecated_uses.swift
index eccd583..7e43597 100644
--- a/test/attr/attr_objc_swift3_deprecated_uses.swift
+++ b/test/attr/attr_objc_swift3_deprecated_uses.swift
@@ -73,16 +73,32 @@
 }
 
 func testSelector(sc: ObjCSubclass, dm: DynamicMembers) {
-  _ = #selector(sc.foo) // expected-warning{{argument of '#selector' refers to instance method 'foo()' in 'ObjCSubclass' that depends on '@objc' attribute inference deprecated in Swift 4}}
+  _ = #selector(sc.foo) // expected-warning{{argument of '#selector' refers to instance method 'foo()' in 'ObjCSubclass' that depends on '@objc' inference deprecated in Swift 4}}
   _ = #selector(getter: dm.bar) // okay, explicit dynamic
 }
 
 func testKeypath(dm: DynamicMembers) {
-  _ = #keyPath(ObjCSubclass.bar)   // expected-warning{{argument of '#keyPath' refers to property 'bar' in 'ObjCSubclass' that depends on '@objc' attribute inference deprecated in Swift 4}}
+  _ = #keyPath(ObjCSubclass.bar)   // expected-warning{{argument of '#keyPath' refers to property 'bar' in 'ObjCSubclass' that depends on '@objc' inference deprecated in Swift 4}}
   _ = #keyPath(DynamicMembers.bar) // okay: dynamic keyword implies @objc
 }
 
 func testDynamicCalls(ao: AnyObject) {
-  ao.foo?() // expected-warning{{reference to instance method 'foo()' of 'ObjCSubclass' depends on '@objc' attribute inference deprecated in Swift 4}}
-  _ = ao.bar! // expected-warning{{reference to var 'bar' of 'ObjCSubclass' depends on '@objc' attribute inference deprecated in Swift 4}}
+  ao.foo?() // expected-warning{{reference to instance method 'foo()' of 'ObjCSubclass' depends on '@objc' inference deprecated in Swift 4}}
+  _ = ao.bar! // expected-warning{{reference to var 'bar' of 'ObjCSubclass' depends on '@objc' inference deprecated in Swift 4}}
 }
+
+// Subclass uses superclass members to satisfy an @objc protocol requirement.
+// rdar://problem/32431838
+@objc public protocol P {
+  func method()
+  @objc optional func optionalMethod()
+}
+
+class C : NSObject {
+  func method() { } // expected-note{{add '@objc' to expose this instance method to Objective-C}}{{3-3=@objc }}
+  func optionalMethod() { } // expected-note{{add '@objc' to expose this instance method to Objective-C}}{{3-3=@objc }}
+}
+
+class S : C, P {}
+// expected-warning@-1{{use of instance method 'method()' to satisfy a requirement of protocol 'P' depends on '@objc' inference deprecated in Swift 4}}
+// expected-warning@-2{{use of instance method 'optionalMethod()' to satisfy a requirement of protocol 'P' depends on '@objc' inference deprecated in Swift 4}}
diff --git a/test/attr/attr_versioned.swift b/test/attr/attr_versioned.swift
index 0d72404..9f6cb39 100644
--- a/test/attr/attr_versioned.swift
+++ b/test/attr/attr_versioned.swift
@@ -1,4 +1,5 @@
 // RUN: %target-typecheck-verify-swift
+// RUN: %target-typecheck-verify-swift -enable-testing
 
 @_versioned private func privateVersioned() {}
 // expected-error@-1 {{'@_versioned' attribute can only be applied to internal declarations, but 'privateVersioned' is private}}
diff --git a/test/attr/open.swift b/test/attr/open.swift
index cbd3b6e..8da60b8 100644
--- a/test/attr/open.swift
+++ b/test/attr/open.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -emit-module -c %S/Inputs/OpenHelpers.swift -o %t/OpenHelpers.swiftmodule
 // RUN: %target-typecheck-verify-swift -I %t
 
diff --git a/test/attr/testable.swift b/test/attr/testable.swift
index f2d4adb..26058ec 100644
--- a/test/attr/testable.swift
+++ b/test/attr/testable.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -enable-testing -o %t %S/../Inputs/empty.swift
 // RUN: %target-swift-frontend -typecheck -I %t -I %S/Inputs/custom-modules %s -verify
 // RUN: %target-swift-frontend -typecheck -I %t -I %S/Inputs/custom-modules %s -disable-testable-attr-requires-testable-module -DIMPORTS_ONLY
diff --git a/test/attr/warn_unqualified_access.swift b/test/attr/warn_unqualified_access.swift
index de4fbb5..367c7ae 100644
--- a/test/attr/warn_unqualified_access.swift
+++ b/test/attr/warn_unqualified_access.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module-path %t/Other1.swiftmodule -module-name Other1 %S/Inputs/warn_unqualified_access_other.swift
 // RUN: %target-swift-frontend -emit-module-path %t/Other2.swiftmodule -module-name Other2 %S/Inputs/warn_unqualified_access_other.swift
 // RUN: %target-swift-frontend -I %t -typecheck %s -verify
diff --git a/test/decl/class/inheritance_protocol_multi_module.swift b/test/decl/class/inheritance_protocol_multi_module.swift
index 5ff1c15..2ef60df 100644
--- a/test/decl/class/inheritance_protocol_multi_module.swift
+++ b/test/decl/class/inheritance_protocol_multi_module.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module-path %t/Mod.swiftmodule -module-name Mod %s
 // RUN: %target-swift-frontend -typecheck -verify -I %t %S/Inputs/inheritance_protocol_multi_module_2.swift
 
diff --git a/test/decl/func/default-values-swift4.swift b/test/decl/func/default-values-swift4.swift
new file mode 100644
index 0000000..9c8732c
--- /dev/null
+++ b/test/decl/func/default-values-swift4.swift
@@ -0,0 +1,80 @@
+// RUN: %target-typecheck-verify-swift -swift-version 4
+// RUN: %target-typecheck-verify-swift -swift-version 4 -enable-testing
+
+private func privateFunction() {}
+// expected-note@-1 4{{global function 'privateFunction()' is not public}}
+fileprivate func fileprivateFunction() {}
+// expected-note@-1 4{{global function 'fileprivateFunction()' is not public}}
+func internalFunction() {}
+// expected-note@-1 4{{global function 'internalFunction()' is not public}}
+@_versioned func versionedFunction() {}
+public func publicFunction() {}
+
+func internalIntFunction() -> Int {}
+// expected-note@-1 2{{global function 'internalIntFunction()' is not public}}
+
+func internalFunctionWithDefaultValue(
+    x: Int = {
+      struct Nested {}
+      // OK
+
+      publicFunction()
+      // OK
+      versionedFunction()
+      // OK
+      internalFunction()
+      // OK
+      fileprivateFunction()
+      // OK
+      privateFunction()
+      // OK
+
+      return 0
+    }(),
+    y: Int = internalIntFunction()) {}
+
+@_versioned func versionedFunctionWithDefaultValue(
+    x: Int = {
+      struct Nested {}
+      // expected-error@-1 {{type 'Nested' cannot be nested inside a default argument value}}
+
+      // FIXME: Some errors below are diagnosed twice
+
+      publicFunction()
+      // OK
+      versionedFunction()
+      // OK
+      internalFunction()
+      // expected-error@-1 2{{global function 'internalFunction()' is internal and cannot be referenced from a default argument value}}
+      fileprivateFunction()
+      // expected-error@-1 2{{global function 'fileprivateFunction()' is fileprivate and cannot be referenced from a default argument value}}
+      privateFunction()
+      // expected-error@-1 2{{global function 'privateFunction()' is private and cannot be referenced from a default argument value}}
+
+      return 0
+    }(),
+    y: Int = internalIntFunction()) {}
+    // expected-error@-1 {{global function 'internalIntFunction()' is internal and cannot be referenced from a default argument value}}
+
+public func publicFunctionWithDefaultValue(
+    x: Int = {
+      struct Nested {}
+      // expected-error@-1 {{type 'Nested' cannot be nested inside a default argument value}}
+
+      // FIXME: Some errors below are diagnosed twice
+
+      publicFunction()
+      // OK
+      versionedFunction()
+      // OK
+      internalFunction()
+      // expected-error@-1 2{{global function 'internalFunction()' is internal and cannot be referenced from a default argument value}}
+      fileprivateFunction()
+      // expected-error@-1 2{{global function 'fileprivateFunction()' is fileprivate and cannot be referenced from a default argument value}}
+      privateFunction()
+      // expected-error@-1 2{{global function 'privateFunction()' is private and cannot be referenced from a default argument value}}
+
+      return 0
+    }(),
+    y: Int = internalIntFunction()) {}
+    // expected-error@-1 {{global function 'internalIntFunction()' is internal and cannot be referenced from a default argument value}}
diff --git a/test/decl/import/import.swift b/test/decl/import/import.swift
index 93fca37..e2a1e37 100644
--- a/test/decl/import/import.swift
+++ b/test/decl/import/import.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: echo "public struct X {}; public var x = X()" | %target-swift-frontend -module-name import_builtin -parse-stdlib -emit-module -o %t -
 // RUN: echo "public func foo() -> Int { return false }" > %t/import_text.swift
 // RUN: echo "public func pho$(printf '\xC3\xBB')x() -> Int { return false }" > %t/fran$(printf '\xC3\xA7')ais.swift
diff --git a/test/decl/init/resilience.swift b/test/decl/init/resilience.swift
index 452a574..bd2c93a 100644
--- a/test/decl/init/resilience.swift
+++ b/test/decl/init/resilience.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_struct.swiftmodule -module-name=resilient_struct %S/../../Inputs/resilient_struct.swift
 // RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_protocol.swiftmodule -module-name=resilient_protocol %S/../../Inputs/resilient_protocol.swift
 // RUN: %target-swift-frontend -typecheck -verify -enable-resilience -I %t %s
diff --git a/test/decl/nested/protocol.swift b/test/decl/nested/protocol.swift
index e10d600..fa563d3 100644
--- a/test/decl/nested/protocol.swift
+++ b/test/decl/nested/protocol.swift
@@ -40,9 +40,11 @@
   associatedtype Stripes
   class Claw<T> { // expected-error{{type 'Claw' cannot be nested in protocol 'Racoon'}}
     func mangle(_ s: Stripes) {}
+    // expected-error@-1 {{use of undeclared type 'Stripes'}}
   }
   struct Fang<T> { // expected-error{{type 'Fang' cannot be nested in protocol 'Racoon'}}
     func gnaw(_ s: Stripes) {}
+    // expected-error@-1 {{use of undeclared type 'Stripes'}}
   }
   enum Fur { // expected-error{{type 'Fur' cannot be nested in protocol 'Racoon'}}
     case Stripes
@@ -72,5 +74,6 @@
 
 class OtherGenericClass<T> {
   protocol InnerProtocol : OtherGenericClass { }
-  // expected-error@-1{{protocol 'InnerProtocol' cannot be nested inside another declaration}}
+  // expected-error@-1{{non-class type 'InnerProtocol' cannot inherit from class 'OtherGenericClass<T>'}}
+  // expected-error@-2{{protocol 'InnerProtocol' cannot be nested inside another declaration}}
 }
diff --git a/test/decl/precedencegroup/circularity.swift b/test/decl/precedencegroup/circularity.swift
index 576b066..3c4f05f 100644
--- a/test/decl/precedencegroup/circularity.swift
+++ b/test/decl/precedencegroup/circularity.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/ExternPrecedences.swift
 
 // RUN: %target-typecheck-verify-swift -I%t
diff --git a/test/decl/protocol/conforms/fixit_stub_editor.swift b/test/decl/protocol/conforms/fixit_stub_editor.swift
index 549b188..653c02b 100644
--- a/test/decl/protocol/conforms/fixit_stub_editor.swift
+++ b/test/decl/protocol/conforms/fixit_stub_editor.swift
@@ -1,6 +1,7 @@
 // RUN: %target-typecheck-verify-swift -diagnostics-editor-mode
 
 protocol P1 {
+  @available(*, deprecated)
   func foo1()
   func foo2()
 }
diff --git a/test/decl/protocol/conforms/nscoding.swift b/test/decl/protocol/conforms/nscoding.swift
index 51982d9..ee8aaf2 100644
--- a/test/decl/protocol/conforms/nscoding.swift
+++ b/test/decl/protocol/conforms/nscoding.swift
@@ -1,5 +1,5 @@
-// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -swift-version 4 %s -enable-nskeyedarchiver-diagnostics -verify
-// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -swift-version 4 %s 2>&1 | %FileCheck -check-prefix CHECK-NO-DIAGS %s
+// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -swift-version 4 %s -verify
+// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -swift-version 4 %s -disable-nskeyedarchiver-diagnostics 2>&1 | %FileCheck -check-prefix CHECK-NO-DIAGS %s
 
 // RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -swift-version 4 %s -dump-ast 2> %t.ast
 // RUN: %FileCheck %s < %t.ast
@@ -12,6 +12,7 @@
 import Foundation
 
 // Top-level classes
+// CHECK-NOT: class_decl "CodingA"{{.*}}@_staticInitializeObjCMetadata
 class CodingA : NSObject, NSCoding {
   required init(coder: NSCoder) { }
   func encode(coder: NSCoder) { }
@@ -20,26 +21,29 @@
 
 // Nested classes
 extension CodingA {
+  // CHECK: class_decl "NestedA"{{.*}}@_staticInitializeObjCMetadata
   class NestedA : NSObject, NSCoding { // expected-error{{nested class 'CodingA.NestedA' has an unstable name when archiving via 'NSCoding'}}
-    // expected-note@-1{{for new classes, add '@objc' to specify a unique, prefixed Objective-C runtime name}}{{3-3=@objc(<#Objective-C class name#>)}}
-    // expected-note@-2{{for compatibility with existing archives, use '@NSKeyedArchiverClassName' to record the Swift 3 mangled name}}{{3-3=@NSKeyedArchiverClassName("_TtCC8nscoding7CodingA7NestedA")}}
+    // expected-note@-1{{for compatibility with existing archives, use '@objc' to record the Swift 3 runtime name}}{{3-3=@objc(_TtCC8nscoding7CodingA7NestedA)}}
+    // expected-note@-2{{for new classes, use '@objc' to specify a unique, prefixed Objective-C runtime name}}{{3-3=@objc(<#prefixed Objective-C class name#>)}}
     required init(coder: NSCoder) { }
     func encode(coder: NSCoder) { }
   }
 
   class NestedB : NSObject {
-    // expected-note@-1{{for new classes, add '@objc' to specify a unique, prefixed Objective-C runtime name}}{{3-3=@objc(<#Objective-C class name#>)}}
-    // expected-note@-2{{for compatibility with existing archives, use '@NSKeyedArchiverClassName' to record the Swift 3 mangled name}}{{3-3=@NSKeyedArchiverClassName("_TtCC8nscoding7CodingA7NestedB")}}
+    // expected-note@-1{{for compatibility with existing archives, use '@objc' to record the Swift 3 runtime name}}{{3-3=@objc(_TtCC8nscoding7CodingA7NestedB)}}
+    // expected-note@-2{{for new classes, use '@objc' to specify a unique, prefixed Objective-C runtime name}}{{3-3=@objc(<#prefixed Objective-C class name#>)}}
     required init(coder: NSCoder) { }
     func encode(coder: NSCoder) { }
   }
 
+  // CHECK: class_decl "NestedC"{{.*}}@_staticInitializeObjCMetadata
   @objc(CodingA_NestedC)
   class NestedC : NSObject, NSCoding {
     required init(coder: NSCoder) { }
     func encode(coder: NSCoder) { }
   }
 
+  // CHECK: class_decl "NestedD"{{.*}}@_staticInitializeObjCMetadata
   @objc(CodingA_NestedD)
   class NestedD : NSObject {
     required init(coder: NSCoder) { }
@@ -54,102 +58,102 @@
 }
 
 // Generic classes
-class CodingB<T> : NSObject, NSCoding {   // expected-error{{generic class 'CodingB<T>' has an unstable name when archiving via 'NSCoding'}}
-  // expected-note@-1{{generic class 'CodingB<T>' should not be archived directly}}{{1-1=@NSKeyedArchiverEncodeNonGenericSubclassesOnly}}
+// CHECK-NOT: class_decl "CodingB"{{.*}}@_staticInitializeObjCMetadata
+class CodingB<T> : NSObject, NSCoding {
   required init(coder: NSCoder) { }
   func encode(coder: NSCoder) { }
 }
 
 extension CodingB {
-  class NestedA : NSObject, NSCoding { // expected-error{{generic class 'CodingB<T>.NestedA' has an unstable name when archiving via 'NSCoding'}}
-    // expected-note@-1{{generic class 'CodingB<T>.NestedA' should not be archived directly}}{{3-3=@NSKeyedArchiverEncodeNonGenericSubclassesOnly}}
+  class NestedA : NSObject, NSCoding {
     required init(coder: NSCoder) { }
     func encode(coder: NSCoder) { }
   }
 }
 
 // Fileprivate classes.
-fileprivate class CodingC : NSObject, NSCoding {    // expected-error{{fileprivate class 'CodingC' has an unstable name when archiving via 'NSCoding'}}
-  // expected-note@-1{{for new classes, add '@objc' to specify a unique, prefixed Objective-C runtime name}}{{1-1=@objc(<#Objective-C class name#>)}}
-  // expected-note@-2{{for compatibility with existing archives, use '@NSKeyedArchiverClassName' to record the Swift 3 mangled name}}{{1-1=@NSKeyedArchiverClassName("_TtC8nscodingP33_0B4E7641C0BD1F170280EEDD0D0C1F6C7CodingC")}}
+// CHECK-NOT: class_decl "CodingC"{{.*}}@_staticInitializeObjCMetadata
+fileprivate class CodingC : NSObject, NSCoding { // expected-error{{fileprivate class 'CodingC' has an unstable name when archiving via 'NSCoding'}}
+  // expected-note@-1{{for compatibility with existing archives, use '@objc' to record the Swift 3 runtime name}}{{1-1=@objc(_TtC8nscodingP33_0B4E7641C0BD1F170280EEDD0D0C1F6C7CodingC)}}
+  // expected-note@-2{{for new classes, use '@objc' to specify a unique, prefixed Objective-C runtime name}}{{1-1=@objc(<#prefixed Objective-C class name#>)}}
   required init(coder: NSCoder) { }
   func encode(coder: NSCoder) { }
 }
 
 // Private classes
-private class CodingD : NSObject, NSCoding {       // expected-error{{private class 'CodingD' has an unstable name when archiving via 'NSCoding'}}
-  // expected-note@-1{{for new classes, add '@objc' to specify a unique, prefixed Objective-C runtime name}}{{1-1=@objc(<#Objective-C class name#>)}}
-  // expected-note@-2{{for compatibility with existing archives, use '@NSKeyedArchiverClassName' to record the Swift 3 mangled name}}{{1-1=@NSKeyedArchiverClassName("_TtC8nscodingP33_0B4E7641C0BD1F170280EEDD0D0C1F6C7CodingD")}}
+private class CodingD : NSObject, NSCoding { // expected-error{{private class 'CodingD' has an unstable name when archiving via 'NSCoding'}}
+  // expected-note@-1{{for compatibility with existing archives, use '@objc' to record the Swift 3 runtime name}}{{1-1=@objc(_TtC8nscodingP33_0B4E7641C0BD1F170280EEDD0D0C1F6C7CodingD)}}
+  // expected-note@-2{{for new classes, use '@objc' to specify a unique, prefixed Objective-C runtime name}}{{1-1=@objc(<#prefixed Objective-C class name#>)}}
   required init(coder: NSCoder) { }
   func encode(coder: NSCoder) { }
 }
 
 // Local classes.
 func someFunction() {
-  class LocalCoding : NSObject, NSCoding {       // expected-error{{local class 'LocalCoding' has an unstable name when archiving via 'NSCoding'}}
-  // expected-note@-1{{for new classes, add '@objc' to specify a unique, prefixed Objective-C runtime name}}{{3-3=@objc(<#Objective-C class name#>)}}
-  // expected-note@-2{{for compatibility with existing archives, use '@NSKeyedArchiverClassName' to record the Swift 3 mangled name}}{{3-3=@NSKeyedArchiverClassName("_TtCF8nscoding12someFunctionFT_T_L_11LocalCoding")}}
+  class LocalCoding : NSObject, NSCoding { // expected-error{{local class 'LocalCoding' has an unstable name when archiving via 'NSCoding'}}
+  // expected-note@-1{{for compatibility with existing archives, use '@objc' to record the Swift 3 runtime name}}{{3-3=@objc(_TtCF8nscoding12someFunctionFT_T_L_11LocalCoding)}}
+  // expected-note@-2{{for new classes, use '@objc' to specify a unique, prefixed Objective-C runtime name}}{{3-3=@objc(<#prefixed Objective-C class name#>)}}
   required init(coder: NSCoder) { }
   func encode(coder: NSCoder) { }
 }
 }
 
 // Inherited conformances.
-class CodingE<T> : CodingB<T> {   // expected-error{{generic class 'CodingE<T>' has an unstable name when archiving via 'NSCoding'}}
-    // expected-note@-1{{generic class 'CodingE<T>' should not be archived directly}}{{1-1=@NSKeyedArchiverEncodeNonGenericSubclassesOnly}}
+// CHECK-NOT: class_decl "CodingE"{{.*}}@_staticInitializeObjCMetadata
+class CodingE<T> : CodingB<T> {
   required init(coder: NSCoder) { super.init(coder: coder) }
   override func encode(coder: NSCoder) { }
 }
 
-// @NSKeyedArchiverClassName suppressions
-extension CodingA {
-  @NSKeyedArchiverClassName("TheNestedE")
-  class NestedE : NSObject, NSCoding {
-    required init(coder: NSCoder) { }
-    func encode(coder: NSCoder) { }
-  }
-}
-
-@NSKeyedArchiverEncodeNonGenericSubclassesOnly
-class CodingGeneric<T> : NSObject, NSCoding {
-  required init(coder: NSCoder) { }
-  func encode(coder: NSCoder) { }
-}
-
-@NSKeyedArchiverClassName("TheCodingF")
+// @objc suppressions
+@objc(TheCodingF)
 fileprivate class CodingF : NSObject, NSCoding {
   required init(coder: NSCoder) { }
   func encode(coder: NSCoder) { }
 }
 
-@NSKeyedArchiverClassName("TheCodingG")
+@objc(TheCodingG)
 private class CodingG : NSObject, NSCoding {
   required init(coder: NSCoder) { }
   func encode(coder: NSCoder) { }
 }
 
-// Errors with @NSKeyedArchiverClassName.
-@NSKeyedArchiverClassName("TheCodingG") // expected-error{{@NSKeyedArchiverClassName may only be used on 'class' declarations}}
-struct Foo { }
-
-@NSKeyedArchiverClassName("TheCodingG") // expected-error{{'@NSKeyedArchiverClassName' cannot be applied to generic class 'Bar<T>'}}
-class Bar<T> : NSObject { }
-
 extension CodingB {
-  @NSKeyedArchiverClassName("GenericViaParent") // expected-error{{'@NSKeyedArchiverClassName' cannot be applied to generic class 'CodingB<T>.GenericViaParent'}}
-  class GenericViaParent : NSObject { }
+  // CHECK-NOT: class_decl "GenericViaScope"{{.*}}@_staticInitializeObjCMetadata
+  @objc(GenericViaScope) // expected-error {{generic subclasses of '@objc' classes cannot have an explicit '@objc' because they are not directly visible from Objective-C}}
+  class GenericViaScope : NSObject { }
 }
 
 // Inference of @_staticInitializeObjCMetadata.
+// CHECK-NOT: class_decl "SubclassOfCodingA"{{.*}}@_staticInitializeObjCMetadata
+class SubclassOfCodingA : CodingA { }
+
+// CHECK: class_decl "SubclassOfCodingE"{{.*}}@_staticInitializeObjCMetadata
 class SubclassOfCodingE : CodingE<Int> { }
 
-// But don't allow one to write @_staticInitializeObjCMetadata!
+// Do not warn when simply inheriting from classes that conform to NSCoding.
+// The subclass may never be serialized. But do still infer static
+// initialization, just in case.
+// CHECK-NOT: class_decl "PrivateSubclassOfCodingA"{{.*}}@_staticInitializeObjCMetadata
+private class PrivateSubclassOfCodingA : CodingA { }
+// CHECK: class_decl "PrivateSubclassOfCodingE"{{.*}}@_staticInitializeObjCMetadata
+private class PrivateSubclassOfCodingE : CodingE<Int> { }
+
+// But do warn when inherited through a protocol.
+protocol AlsoNSCoding : NSCoding {}
+private class CodingH : NSObject, AlsoNSCoding { // expected-error{{private class 'CodingH' has an unstable name when archiving via 'NSCoding'}}
+  // expected-note@-1{{for compatibility with existing archives, use '@objc' to record the Swift 3 runtime name}}{{1-1=@objc(_TtC8nscodingP33_0B4E7641C0BD1F170280EEDD0D0C1F6C7CodingH)}}
+  // expected-note@-2{{for new classes, use '@objc' to specify a unique, prefixed Objective-C runtime name}}{{1-1=@objc(<#prefixed Objective-C class name#>)}}
+  required init(coder: NSCoder) { }
+  func encode(coder: NSCoder) { }
+}
+
+@NSKeyedArchiverClassName( "abc" ) // expected-error {{@NSKeyedArchiverClassName has been removed; use @objc instead}} {{2-26=objc}} {{28-29=}} {{32-33=}}
+class OldArchiverAttribute: NSObject {}
+
+@NSKeyedArchiverEncodeNonGenericSubclassesOnly // expected-error {{@NSKeyedArchiverEncodeNonGenericSubclassesOnly is no longer necessary}} {{1-48=}}
+class OldArchiverAttributeGeneric<T>: NSObject {}
+
+// Don't allow one to write @_staticInitializeObjCMetadata!
 @_staticInitializeObjCMetadata // expected-error{{unknown attribute '_staticInitializeObjCMetadata'}}
 class DontAllowStaticInits { }
-
-// CHECK-NOT: class_decl "CodingA"{{.*}}@_staticInitializeObjCMetadata
-// CHECK: class_decl "NestedA"{{.*}}@_staticInitializeObjCMetadata
-// CHECK: class_decl "NestedC"{{.*}}@_staticInitializeObjCMetadata
-// CHECK-NOT: class_decl "NestedE"{{.*}}@_staticInitializeObjCMetadata
-// CHECK-NOT: class_decl "CodingGeneric"{{.*}}@_staticInitializeObjCMetadata
-// CHECK: class_decl "SubclassOfCodingE"{{.*}}@_staticInitializeObjCMetadata
\ No newline at end of file
diff --git a/test/decl/protocol/conforms/placement.swift b/test/decl/protocol/conforms/placement.swift
index ccade58..108dc48 100644
--- a/test/decl/protocol/conforms/placement.swift
+++ b/test/decl/protocol/conforms/placement.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend %S/Inputs/placement_module_A.swift -emit-module -parse-as-library -o %t
 // RUN: %target-swift-frontend -I %t %S/Inputs/placement_module_B.swift -emit-module -parse-as-library -o %t
 
diff --git a/test/decl/protocol/req/unsatisfiable.swift b/test/decl/protocol/req/unsatisfiable.swift
index 03eec2d..6c10773 100644
--- a/test/decl/protocol/req/unsatisfiable.swift
+++ b/test/decl/protocol/req/unsatisfiable.swift
@@ -30,3 +30,21 @@
   func f<T: P3>(_: T) where T.A == Self.A, T.A: C // expected-error{{instance method requirement 'f' cannot add constraint 'Self.A: C' on 'Self'}}
   func g<T: P3>(_: T) where T.A: C, T.A == Self.A  // expected-error{{instance method requirement 'g' cannot add constraint 'Self.A: C' on 'Self'}}
 }
+
+protocol Base {
+  associatedtype Assoc
+}
+
+// FIXME: The first error is redundant, isn't correct in what it states, and
+// also should be emitted on the inheritance clause.
+// FIXME: This used to /not/ error in Swift 3. It didn't impose any statically-
+// enforced requirements, but the compiler crashed if you used anything but the
+// same type.
+protocol Sub1: Base { // expected-error {{first type 'Self.Assoc' in conformance requirement does not refer to a generic parameter or associated type}}
+  associatedtype SubAssoc: Assoc // expected-error {{inheritance from non-protocol, non-class type 'Self.Assoc'}}
+}
+// FIXME: This error is incorrect in what it states and should be emitted on
+// the where-clause.
+protocol Sub2: Base { // expected-error {{first type 'Self.Assoc' in conformance requirement does not refer to a generic parameter or associated type}}
+  associatedtype SubAssoc where SubAssoc: Assoc
+}
diff --git a/test/decl/protocol/special/Error.swift b/test/decl/protocol/special/Error.swift
index 6e42fd2..c584278 100644
--- a/test/decl/protocol/special/Error.swift
+++ b/test/decl/protocol/special/Error.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 // RUN: %target-swift-frontend -typecheck -verify -primary-file %t/main.swift %S/Inputs/Error_other.swift
 
diff --git a/test/decl/protocol/special/coding/class_codable_non_strong_vars.swift b/test/decl/protocol/special/coding/class_codable_non_strong_vars.swift
new file mode 100644
index 0000000..d6e6d24
--- /dev/null
+++ b/test/decl/protocol/special/coding/class_codable_non_strong_vars.swift
@@ -0,0 +1,35 @@
+// RUN: %target-typecheck-verify-swift -verify-ignore-unknown
+
+// Classes with Codable properties (with non-strong ownership) should get
+// derived conformance to Codable.
+class NonStrongClass : Codable {
+  class NestedClass : Codable {
+    init() {}
+  }
+
+  weak var x: NestedClass? = NestedClass()
+  unowned var y: NestedClass = NestedClass()
+  static var z: String = "foo"
+
+  // These lines have to be within the NonStrongClass type because CodingKeys
+  // should be private.
+  func foo() {
+    // They should receive a synthesized CodingKeys enum.
+    let _ = NonStrongClass.CodingKeys.self
+
+    // The enum should have a case for each of the vars.
+    let _ = NonStrongClass.CodingKeys.x
+    let _ = NonStrongClass.CodingKeys.y
+
+    // Static vars should not be part of the CodingKeys enum.
+    let _ = NonStrongClass.CodingKeys.z // expected-error {{type 'NonStrongClass.CodingKeys' has no member 'z'}}
+  }
+}
+
+// They should receive synthesized init(from:) and an encode(to:).
+let _ = NonStrongClass.init(from:)
+let _ = NonStrongClass.encode(to:)
+
+// The synthesized CodingKeys type should not be accessible from outside the
+// class.
+let _ = NonStrongClass.CodingKeys.self // expected-error {{'CodingKeys' is inaccessible due to 'private' protection level}}
diff --git a/test/decl/protocol/special/coding/struct_codable_non_strong_vars.swift b/test/decl/protocol/special/coding/struct_codable_non_strong_vars.swift
new file mode 100644
index 0000000..3efddff
--- /dev/null
+++ b/test/decl/protocol/special/coding/struct_codable_non_strong_vars.swift
@@ -0,0 +1,35 @@
+// RUN: %target-typecheck-verify-swift -verify-ignore-unknown
+
+// Structs with Codable properties (with non-strong ownership) should get
+// derived conformance to Codable.
+struct NonStrongStruct : Codable {
+  class NestedClass : Codable {
+    init() {}
+  }
+
+  weak var x: NestedClass? = NestedClass()
+  unowned var y: NestedClass = NestedClass()
+  static var z: String = "foo"
+
+  // These lines have to be within the NonStrongStruct type because CodingKeys
+  // should be private.
+  func foo() {
+    // They should receive a synthesized CodingKeys enum.
+    let _ = NonStrongStruct.CodingKeys.self
+
+    // The enum should have a case for each of the vars.
+    let _ = NonStrongStruct.CodingKeys.x
+    let _ = NonStrongStruct.CodingKeys.y
+
+    // Static vars should not be part of the CodingKeys enum.
+    let _ = NonStrongStruct.CodingKeys.z // expected-error {{type 'NonStrongStruct.CodingKeys' has no member 'z'}}
+  }
+}
+
+// They should receive synthesized init(from:) and an encode(to:).
+let _ = NonStrongStruct.init(from:)
+let _ = NonStrongStruct.encode(to:)
+
+// The synthesized CodingKeys type should not be accessible from outside the
+// class.
+let _ = NonStrongStruct.CodingKeys.self // expected-error {{'CodingKeys' is inaccessible due to 'private' protection level}}
diff --git a/test/decl/typealias/generic.swift b/test/decl/typealias/generic.swift
index 1b37520..436f00f 100644
--- a/test/decl/typealias/generic.swift
+++ b/test/decl/typealias/generic.swift
@@ -338,12 +338,64 @@
 
 protocol P {
   associatedtype A
-  typealias G1<T> = MyType<Self, T>
-  typealias G2<T> = MyType<T, A>
+  typealias G1<T> = MyType<Self, T> // expected-note {{did you mean 'G1'?}}
+  typealias G2<T> = MyType<T, A> // expected-note {{did you mean 'G2'?}}
+  typealias G3<T> = () -> () // expected-note {{did you mean 'G3'?}}
+  typealias G4<T> = (T) -> () // expected-note {{did you mean 'G4'?}}
+
+  func firstRequirement(_: G1<Int>)
+  func secondRequirement(_: G2<Int>)
+  func thirdRequirement(_: G3<Int>)
+  func fourthRequirement(_: G4<Int>)
+
+  func firstRequirementGeneric<T>(_: G1<T>)
+  func secondRequirementGeneric<T>(_: G2<T>)
+  func thirdRequirementGeneric<T>(_: G3<T>, _: T)
+  func fourthRequirementGeneric<T>(_: G4<T>)
 }
 
 struct S : P {
   typealias A = Float
+
+  func shouldFail(fn: (Int) -> ()) {
+    thirdRequirement(fn)
+    // expected-error@-1 {{cannot convert value of type '(Int) -> ()' to expected argument type '() -> ()'}}
+  }
+
+  func firstRequirement(_: G1<Int>) {}
+  func secondRequirement(_: G2<Int>) {}
+  func thirdRequirement(_: G3<Int>) {}
+  func fourthRequirement(_: G4<Int>) {}
+
+  func firstRequirementGeneric<T>(_: G1<T>) {
+    _ = G1<T>.self // FIXME // expected-error {{use of unresolved identifier 'G1'}}
+  }
+
+  func secondRequirementGeneric<T>(_: G2<T>) {
+    _ = G2<T>.self // FIXME // expected-error {{use of unresolved identifier 'G2'}}
+  }
+
+  func thirdRequirementGeneric<T>(_: G3<T>, _: T) {
+    _ = G3<T>.self // FIXME // expected-error {{use of unresolved identifier 'G3'}}
+  }
+
+  func fourthRequirementGeneric<T>(_: G4<T>) {
+    _ = G4<T>.self // FIXME // expected-error {{use of unresolved identifier 'G4'}}
+  }
+
+  func expressionContext() {
+    let _: G1 = MyType<S, Int>(a: S(), b: 3)
+    let _: G1<Int> = MyType<S, Int>(a: S(), b: 3)
+
+    let _: S.G1 = MyType<S, Int>(a: S(), b: 3)
+    let _: S.G1<Int> = MyType<S, Int>(a: S(), b: 3)
+
+    let _: G2 = MyType<Int, Float>(a: 3, b: 1.0)
+    let _: G2<Int> = MyType<Int, Float>(a: 3, b: 1.0)
+
+    let _: S.G2 = MyType<Int, Float>(a: 3, b: 1.0)
+    let _: S.G2<Int> = MyType<Int, Float>(a: 3, b: 1.0)
+  }
 }
 
 func takesMyType(x: MyType<S, Int>) {}
diff --git a/test/decl/typealias/protocol.swift b/test/decl/typealias/protocol.swift
index 39b71c4..a6a9236 100644
--- a/test/decl/typealias/protocol.swift
+++ b/test/decl/typealias/protocol.swift
@@ -202,6 +202,8 @@
 
   func inExpressionContext() {
     _ = Y.self
+    _ = T5.T1.self
+    _ = T5.T2.self
   }
 }
 
diff --git a/test/decl/var/lazy_properties.swift b/test/decl/var/lazy_properties.swift
index ab76c10..0964785 100644
--- a/test/decl/var/lazy_properties.swift
+++ b/test/decl/var/lazy_properties.swift
@@ -1,4 +1,3 @@
-// RUN: %target-typecheck-verify-swift -parse-as-library -swift-version 3
 // RUN: %target-typecheck-verify-swift -parse-as-library -swift-version 4
 
 lazy func lazy_func() {} // expected-error {{'lazy' may only be used on 'var' declarations}} {{1-6=}}
@@ -143,13 +142,38 @@
   lazy var cqtrefs: (Int, Int) = { (self.i, self.f()) }()
 
   lazy var mrefs = { () -> (Int, Int) in return (i, f()) }()
-  // expected-error@-1 {{call to method 'f' in closure requires explicit 'self.' to make capture semantics explicit}}
-  // expected-error@-2 {{reference to property 'i' in closure requires explicit 'self.' to make capture semantics explicit}}
   lazy var mtrefs: (Int, Int) = { return (i, f()) }()
 
   lazy var mqrefs = { () -> (Int, Int) in (self.i, self.f()) }()
   lazy var mqtrefs: (Int, Int) = { return (self.i, self.f()) }()
 
+  lazy var lcqrefs = { [unowned self] in (self.i, self.f()) }()
+  lazy var lcqtrefs: (Int, Int) = { [unowned self] in (self.i, self.f()) }()
+
+  lazy var lmrefs = { [unowned self] () -> (Int, Int) in return (i, f()) }()
+  lazy var lmtrefs: (Int, Int) = { [unowned self] in return (i, f()) }()
+
+  lazy var lmqrefs = { [unowned self] () -> (Int, Int) in (self.i, self.f()) }()
+  lazy var lmqtrefs: (Int, Int) = { [unowned self] in return (self.i, self.f()) }()
+
   var i = 42
   func f() -> Int { return 0 }
+
+  lazy var refBaseClassProp = baseInstanceProp
+}
+
+class ReferenceStaticInLazyProperty {
+  lazy var refs1 = i
+  // expected-error@-1 {{static member 'i' cannot be used on instance of type 'ReferenceStaticInLazyProperty'}}
+  lazy var refs2 = f()
+  // expected-error@-1 {{static member 'f' cannot be used on instance of type 'ReferenceStaticInLazyProperty'}}
+
+  lazy var trefs1: Int = i
+  // expected-error@-1 {{static member 'i' cannot be used on instance of type 'ReferenceStaticInLazyProperty'}}
+
+  lazy var trefs2: Int = f()
+  // expected-error@-1 {{static member 'f' cannot be used on instance of type 'ReferenceStaticInLazyProperty'}}
+
+  static var i = 42
+  static func f() -> Int { return 0 }
 }
diff --git a/test/decl/var/lazy_properties_multi_file.swift b/test/decl/var/lazy_properties_multi_file.swift
index 95f9b81..f855d80 100644
--- a/test/decl/var/lazy_properties_multi_file.swift
+++ b/test/decl/var/lazy_properties_multi_file.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend %s -verify -O -primary-file %s %S/Inputs/lazy_properties_multi_file_2.swift -c -o %t/lazy_properties_multi_file.o
 
 class MyClass {
diff --git a/test/decl/var/usage.swift b/test/decl/var/usage.swift
index 2f7134f..904290b 100644
--- a/test/decl/var/usage.swift
+++ b/test/decl/var/usage.swift
@@ -197,7 +197,7 @@
     _ = b2
   }
   
-  for var b in [42] {   // expected-warning {{variable 'b' was never mutated; consider changing to 'let' constant}} {{7-10=let}}
+  for var b in [42] { // expected-warning {{variable 'b' was never mutated; consider changing to 'let' constant}} {{7-11=}}
     _ = b
   }
 
diff --git a/test/expr/cast/array_downcast_Foundation.swift b/test/expr/cast/array_downcast_Foundation.swift
index 326d6e0..d6c7daa 100644
--- a/test/expr/cast/array_downcast_Foundation.swift
+++ b/test/expr/cast/array_downcast_Foundation.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %clang-importer-sdk-path/swift-modules/Foundation.swift
diff --git a/test/expr/cast/cf.swift b/test/expr/cast/cf.swift
index 90d1d7f..343d8cf 100644
--- a/test/expr/cast/cf.swift
+++ b/test/expr/cast/cf.swift
@@ -80,3 +80,25 @@
   acceptNSString(x)
   acceptCFString(y)
 }
+
+func testBridgedCFDowncast(array: [Any], dictionary: [AnyHashable : Any], set: Set<AnyHashable>) {
+  let cfArray = array as CFArray
+  let cfDictionary = dictionary as CFDictionary
+  let cfSet = set as CFSet
+
+  _ = array as? CFArray // expected-warning {{conditional cast from '[Any]' to 'CFArray' always succeeds}}
+  _ = dictionary as? CFDictionary // expected-warning {{conditional cast from '[AnyHashable : Any]' to 'CFDictionary' always succeeds}}
+  _ = set as? CFSet // expected-warning {{conditional cast from 'Set<AnyHashable>' to 'CFSet' always succeeds}}
+
+  _ = array as! CFArray // expected-warning {{forced cast from '[Any]' to 'CFArray' always succeeds}}
+  _ = dictionary as! CFDictionary // expected-warning {{forced cast from '[AnyHashable : Any]' to 'CFDictionary' always succeeds}}
+  _ = set as! CFSet // expected-warning {{forced cast from 'Set<AnyHashable>' to 'CFSet' always succeeds}}
+
+  _ = cfArray as! [Any]
+  _ = cfDictionary as! [AnyHashable : Any]
+  _ = cfSet as! Set<AnyHashable>
+
+  _ = cfArray as? [Any]
+  _ = cfDictionary as? [AnyHashable : Any]
+  _ = cfSet as? Set<AnyHashable>
+}
diff --git a/test/expr/unary/keypath/keypath-mutation.swift b/test/expr/unary/keypath/keypath-mutation.swift
new file mode 100644
index 0000000..9750dcd
--- /dev/null
+++ b/test/expr/unary/keypath/keypath-mutation.swift
@@ -0,0 +1,22 @@
+// RUN: %target-swift-frontend -typecheck -verify %s
+
+struct User {
+  var id: Int
+  var name: String
+}
+
+func setting<Root, Value>(_ kp: WritableKeyPath<Root, Value>, _ root: Root, _ value: Value) -> Root {
+  var copy = root
+  // Should not warn about lack of mutation
+  copy[keyPath: kp] = value
+  return copy
+}
+
+func referenceSetting<Root, Value>(_ kp: ReferenceWritableKeyPath<Root, Value>, _ root: Root, _ value: Value) -> Root {
+  // Should warn about lack of mutation, since a RefKeyPath doesn't modify its
+  // base.
+  // expected-warning@+1 {{was never mutated}}
+  var copy = root
+  copy[keyPath: kp] = value
+  return copy
+}
diff --git a/test/expr/unary/keypath/keypath.swift b/test/expr/unary/keypath/keypath.swift
index 6be4264..daa239e 100644
--- a/test/expr/unary/keypath/keypath.swift
+++ b/test/expr/unary/keypath/keypath.swift
@@ -230,6 +230,58 @@
   writable[keyPath: akp] = anyqSink2 // expected-error{{cannot assign to immutable}}
 }
 
+struct ZwithSubscript {
+  subscript(keyPath kp: KeyPath<ZwithSubscript, Int>) -> Int { return 0 }
+  subscript(keyPath kp: WritableKeyPath<ZwithSubscript, Int>) -> Int { return 0 }
+  subscript(keyPath kp: ReferenceWritableKeyPath<ZwithSubscript, Int>) -> Int { return 0 }
+  subscript(keyPath kp: PartialKeyPath<ZwithSubscript>) -> Any { return 0 }
+}
+
+func testKeyPathSubscript(readonly: ZwithSubscript, writable: inout ZwithSubscript,
+                          kp: KeyPath<ZwithSubscript, Int>,
+                          wkp: WritableKeyPath<ZwithSubscript, Int>,
+                          rkp: ReferenceWritableKeyPath<ZwithSubscript, Int>) {
+  var sink: Int
+  sink = readonly[keyPath: kp]
+  sink = writable[keyPath: kp]
+  sink = readonly[keyPath: wkp]
+  sink = writable[keyPath: wkp]
+  sink = readonly[keyPath: rkp]
+  sink = writable[keyPath: rkp]
+
+  readonly[keyPath: kp] = sink // expected-error{{cannot assign through subscript: subscript is get-only}}
+  writable[keyPath: kp] = sink // expected-error{{cannot assign through subscript: subscript is get-only}}
+  readonly[keyPath: wkp] = sink // expected-error{{cannot assign through subscript: subscript is get-only}}
+  // FIXME: silently falls back to keypath application, which seems inconsistent
+  writable[keyPath: wkp] = sink
+  // FIXME: silently falls back to keypath application, which seems inconsistent
+  readonly[keyPath: rkp] = sink
+  // FIXME: silently falls back to keypath application, which seems inconsistent
+  writable[keyPath: rkp] = sink
+
+  let pkp: PartialKeyPath = rkp
+
+  var anySink1 = readonly[keyPath: pkp]
+  expect(&anySink1, toHaveType: Exactly<Any>.self)
+  var anySink2 = writable[keyPath: pkp]
+  expect(&anySink2, toHaveType: Exactly<Any>.self)
+
+  readonly[keyPath: pkp] = anySink1 // expected-error{{cannot assign through subscript: subscript is get-only}}
+  writable[keyPath: pkp] = anySink2 // expected-error{{cannot assign through subscript: subscript is get-only}}
+
+  let akp: AnyKeyPath = pkp
+
+  var anyqSink1 = readonly[keyPath: akp]
+  expect(&anyqSink1, toHaveType: Exactly<Any?>.self)
+  var anyqSink2 = writable[keyPath: akp]
+  expect(&anyqSink2, toHaveType: Exactly<Any?>.self)
+
+  // FIXME: silently falls back to keypath application, which seems inconsistent
+  readonly[keyPath: akp] = anyqSink1 // expected-error{{cannot assign to immutable}}
+  // FIXME: silently falls back to keypath application, which seems inconsistent
+  writable[keyPath: akp] = anyqSink2 // expected-error{{cannot assign to immutable}}
+}
+
 func testKeyPathSubscriptMetatype(readonly: Z.Type, writable: inout Z.Type,
                                   kp: KeyPath<Z.Type, Int>,
                                   wkp: WritableKeyPath<Z.Type, Int>,
diff --git a/test/expr/unary/selector/fixits.swift b/test/expr/unary/selector/fixits.swift
index 2ebd545..088a9d9 100644
--- a/test/expr/unary/selector/fixits.swift
+++ b/test/expr/unary/selector/fixits.swift
@@ -1,9 +1,7 @@
 // REQUIRES: objc_interop
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
-// RUN: rm -rf %t.overlays
-// RUN: mkdir -p %t.overlays
+// RUN: %empty-directory(%t)
+// RUN: %empty-directory(%t.overlays)
 
 // FIXME: BEGIN -enable-source-import hackaround
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t.overlays %clang-importer-sdk-path/swift-modules/ObjectiveC.swift
@@ -16,8 +14,8 @@
 
 // Copy the source, apply the Fix-Its, and compile it again, making
 // sure that we've cleaned up all of the deprecation warnings.
-// RUN: mkdir -p %t.sources
-// RUN: mkdir -p %t.remapping
+// RUN: %empty-directory(%t.sources)
+// RUN: %empty-directory(%t.remapping)
 // RUN: cp %s %t.sources/fixits.swift
 // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource -I %t.overlays) -typecheck %t.sources/fixits.swift -fixit-all -emit-fixits-path %t.remapping/fixits.remap
 // RUN: %utils/apply-fixit-edits.py %t.remapping
diff --git a/test/expr/unary/selector/selector.swift b/test/expr/unary/selector/selector.swift
index 11484d0..7eef1c0 100644
--- a/test/expr/unary/selector/selector.swift
+++ b/test/expr/unary/selector/selector.swift
@@ -134,7 +134,7 @@
 }
 
 switch optionalSel {
-case #selector(SR1827.bar): // expected-error{{expression pattern of type 'Selector' cannot match values of type 'Selector?'}} {{26-26=?}}
+case #selector(SR1827.bar): // expected-error{{expression pattern of type 'Selector' cannot match values of type 'Selector?'}} {{27-27=?}}
   break
 case #selector(SR1827.bar)!: // expected-error{{cannot force unwrap value of non-optional type 'Selector'}}
   break
diff --git a/test/lit.cfg b/test/lit.cfg
index c26999c..60f86f6 100644
--- a/test/lit.cfg
+++ b/test/lit.cfg
@@ -1014,6 +1014,9 @@
 config.substitutions.append(('%scale-test',
                              '{} --swiftc-binary={} --tmpdir=%t'.format(
                                  config.scale_test, config.swiftc)))
+config.substitutions.append(
+    ('%empty-directory\(([^)]+)\)', 'rm -rf \"\\1\" && mkdir -p \"\\1\"'))
+
 config.substitutions.append(('%target-sil-opt', config.target_sil_opt))
 config.substitutions.append(('%target-sil-func-extractor', config.target_sil_func_extractor))
 config.substitutions.append(('%target-sil-llvm-gen', config.target_sil_llvm_gen))
@@ -1103,4 +1106,4 @@
         config.available_features.add("LinuxDistribution=" + distributor + '-' + release)
         lit_config.note('Running tests on %s-%s' % (distributor, release))
 
-lit_config.note("Available features: " + ", ".join(config.available_features))
+lit_config.note("Available features: " + ", ".join(sorted(config.available_features)))
diff --git a/test/multifile/constant-struct-with-padding/main.swift b/test/multifile/constant-struct-with-padding/main.swift
index a86592a..22bc152 100644
--- a/test/multifile/constant-struct-with-padding/main.swift
+++ b/test/multifile/constant-struct-with-padding/main.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-build-swift -O -whole-module-optimization %S/main.swift %S/Other.swift
 
diff --git a/test/multifile/constant-tuple-with-padding/main.swift b/test/multifile/constant-tuple-with-padding/main.swift
index 8b597c9..c05a46b 100644
--- a/test/multifile/constant-tuple-with-padding/main.swift
+++ b/test/multifile/constant-tuple-with-padding/main.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-build-swift -O -whole-module-optimization %S/main.swift %S/Other.swift
 
diff --git a/test/multifile/error-type/two-modules/main.swift b/test/multifile/error-type/two-modules/main.swift
index 25ea8b3..4a68233 100644
--- a/test/multifile/error-type/two-modules/main.swift
+++ b/test/multifile/error-type/two-modules/main.swift
@@ -1,6 +1,6 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
-// RUN: mkdir -p %t/linker
+// RUN: %empty-directory(%t/linker)
 // RUN: %target-build-swift -emit-module -c %S/library.swift -o %t/linker/library.o
 // RUN: %target-build-swift -emit-library -c %S/library.swift -o %t/linker/library.o
 // RUN: %target-build-swift %S/main.swift %t/linker/library.o -I %t/linker/ -L %t/linker/ -o %t/linker/main
diff --git a/test/multifile/extensions/two-modules/main.swift b/test/multifile/extensions/two-modules/main.swift
index 7ca94f3..524cf20 100644
--- a/test/multifile/extensions/two-modules/main.swift
+++ b/test/multifile/extensions/two-modules/main.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: mkdir -p %t/onone %t/wmo
 // RUN: %target-build-swift -emit-module -emit-module-path %t/onone/library.swiftmodule -module-name=library -emit-library %S/library.swift -o %t/onone/library.%target-dylib-extension
diff --git a/test/multifile/protocol-conformance-member.swift b/test/multifile/protocol-conformance-member.swift
index 00d48ab..0844396 100644
--- a/test/multifile/protocol-conformance-member.swift
+++ b/test/multifile/protocol-conformance-member.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -emit-library %s %S/Inputs/protocol-conformance-member-helper.swift -o %t/libTest.dylib -module-name Test
 // RUN: llvm-nm %t/libTest.dylib | %FileCheck %s
 
diff --git a/test/multifile/synthesized-accessors/two-modules/main.swift b/test/multifile/synthesized-accessors/two-modules/main.swift
index 63db3eb..38cb615 100644
--- a/test/multifile/synthesized-accessors/two-modules/main.swift
+++ b/test/multifile/synthesized-accessors/two-modules/main.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: mkdir -p %t/onone %t/wmo
 // RUN: %target-build-swift -emit-module -emit-module-path %t/onone/library.swiftmodule -module-name=library -emit-library %S/library.swift -o %t/onone/library.%target-dylib-extension
diff --git a/test/multifile/typealias/one-module/main.swift b/test/multifile/typealias/one-module/main.swift
index 8348fe3..1adcd71 100644
--- a/test/multifile/typealias/one-module/main.swift
+++ b/test/multifile/typealias/one-module/main.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-build-swift %S/main.swift %S/library.swift
 // RUN: %target-build-swift -g %S/main.swift %S/library.swift
diff --git a/test/multifile/typealias/two-modules/main.swift b/test/multifile/typealias/two-modules/main.swift
index d5be0f3..5d69887 100644
--- a/test/multifile/typealias/two-modules/main.swift
+++ b/test/multifile/typealias/two-modules/main.swift
@@ -1,6 +1,6 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
-// RUN: mkdir -p %t/linker
+// RUN: %empty-directory(%t/linker)
 // RUN: %target-build-swift -emit-module -c %S/library.swift -o %t/linker/library.o
 // RUN: %target-build-swift -emit-library -c %S/library.swift -o %t/linker/library.o
 // RUN: %target-build-swift %S/main.swift %t/linker/library.o -I %t/linker/ -L %t/linker/ -o %t/linker/main
diff --git a/test/reproducible-builds/swiftc-emit-assembly.swift b/test/reproducible-builds/swiftc-emit-assembly.swift
index 75d280c..9ef34b6 100644
--- a/test/reproducible-builds/swiftc-emit-assembly.swift
+++ b/test/reproducible-builds/swiftc-emit-assembly.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -O -g -module-name foo -emit-assembly %s > %t/run-1.S
 // RUN: %target-build-swift -O -g -module-name foo -emit-assembly %s > %t/run-2.S
 // RUN: diff -u %t/run-1.S %t/run-2.S
diff --git a/test/reproducible-builds/swiftc-emit-bc.swift b/test/reproducible-builds/swiftc-emit-bc.swift
index 09b2d3c..d73e9a7 100644
--- a/test/reproducible-builds/swiftc-emit-bc.swift
+++ b/test/reproducible-builds/swiftc-emit-bc.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // NOTE: We need to re-use the output filename ("-o run.bc") between the two
 //       runs since the LLVM BC file contains the filename specified:
 //       <UnknownCode16 ... /> record string = 'run.bc'
diff --git a/test/reproducible-builds/swiftc-emit-ir.swift b/test/reproducible-builds/swiftc-emit-ir.swift
index 3c87dc2..5ccc93f 100644
--- a/test/reproducible-builds/swiftc-emit-ir.swift
+++ b/test/reproducible-builds/swiftc-emit-ir.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -O -g -module-name foo -emit-ir %s > %t/run-1.ir
 // RUN: %target-build-swift -O -g -module-name foo -emit-ir %s > %t/run-2.ir
 // RUN: diff -u %t/run-1.ir %t/run-2.ir
diff --git a/test/reproducible-builds/swiftc-emit-module.swift b/test/reproducible-builds/swiftc-emit-module.swift
index c365189..a8f96c9 100644
--- a/test/reproducible-builds/swiftc-emit-module.swift
+++ b/test/reproducible-builds/swiftc-emit-module.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -O -g -module-name foo -emit-module %s -o %t/run-1.module
 // RUN: %target-build-swift -O -g -module-name foo -emit-module %s -o %t/run-2.module
 // RUN: cmp %t/run-1.module %t/run-2.module
diff --git a/test/reproducible-builds/swiftc-emit-sib.swift b/test/reproducible-builds/swiftc-emit-sib.swift
index f580715..cf925c5 100644
--- a/test/reproducible-builds/swiftc-emit-sib.swift
+++ b/test/reproducible-builds/swiftc-emit-sib.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -O -g -module-name foo -emit-sib %s -o %t/run-1.sib
 // RUN: %target-build-swift -O -g -module-name foo -emit-sib %s -o %t/run-2.sib
 // RUN: cmp %t/run-1.sib %t/run-2.sib
diff --git a/test/reproducible-builds/swiftc-emit-sibgen.swift b/test/reproducible-builds/swiftc-emit-sibgen.swift
index 105965b..5f4b8b0 100644
--- a/test/reproducible-builds/swiftc-emit-sibgen.swift
+++ b/test/reproducible-builds/swiftc-emit-sibgen.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -O -g -module-name foo -emit-sibgen %s -o %t/run-1.sibgen
 // RUN: %target-build-swift -O -g -module-name foo -emit-sibgen %s -o %t/run-2.sibgen
 // RUN: cmp %t/run-1.sibgen %t/run-2.sibgen
diff --git a/test/reproducible-builds/swiftc-emit-silgen.swift b/test/reproducible-builds/swiftc-emit-silgen.swift
index 36282cc..f523970 100644
--- a/test/reproducible-builds/swiftc-emit-silgen.swift
+++ b/test/reproducible-builds/swiftc-emit-silgen.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -O -g -module-name foo -emit-silgen %s > %t/run-1.silgen
 // RUN: %target-build-swift -O -g -module-name foo -emit-silgen %s > %t/run-2.silgen
 // RUN: diff -u %t/run-1.silgen %t/run-2.silgen
diff --git a/test/reproducible-builds/swiftc-emit-tbd.swift b/test/reproducible-builds/swiftc-emit-tbd.swift
index 9081f4e..86aa68c 100644
--- a/test/reproducible-builds/swiftc-emit-tbd.swift
+++ b/test/reproducible-builds/swiftc-emit-tbd.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -O -g -module-name foo -emit-tbd %s -o %t/run-1.tbd
 // RUN: %target-build-swift -O -g -module-name foo -emit-tbd %s -o %t/run-2.tbd
 // RUN: diff -u %t/run-1.tbd %t/run-2.tbd
diff --git a/test/sil-func-extractor/basic.swift b/test/sil-func-extractor/basic.swift
index 0047340..cdf1e69 100644
--- a/test/sil-func-extractor/basic.swift
+++ b/test/sil-func-extractor/basic.swift
@@ -44,7 +44,9 @@
 // EXTRACT-INIT-LABEL:   sil hidden @_T05basic7VehicleCACSi1n_tcfc : $@convention(method) (Int, @owned Vehicle) -> @owned Vehicle {
 // EXTRACT-INIT:         bb0
 // EXTRACT-INIT-NEXT:      ref_element_addr
+// EXTRACT-INIT-NEXT:      begin_access [modify] [dynamic]
 // EXTRACT-INIT-NEXT:      store
+// EXTRACT-INIT-NEXT:      end_access
 // EXTRACT-INIT-NEXT:      return
 
 
@@ -55,7 +57,9 @@
 // EXTRACT-NOW-LABEL:   sil hidden @_T05basic7VehicleC3nowSiyF : $@convention(method) (@guaranteed Vehicle) -> Int {
 // EXTRACT-NOW:         bb0
 // EXTRACT-NOW:           ref_element_addr
+// EXTRACT-NOW-NEXT:      begin_access [read] [dynamic]
 // EXTRACT-NOW-NEXT:      load
+// EXTRACT-NOW-NEXT:      end_access
 // EXTRACT-NOW-NEXT:      return
 
 struct X {
diff --git a/test/sil-llvm-gen/alloc.sil b/test/sil-llvm-gen/alloc.sil
index 248c59a..c2f395f 100644
--- a/test/sil-llvm-gen/alloc.sil
+++ b/test/sil-llvm-gen/alloc.sil
@@ -19,20 +19,6 @@
   var unalign: Builtin.Int8
 }
 
-// CHECK: @_swift_slowAlloc = external global i8* ([[SIZE_T:i(32|64)]],
-
-// CHECK:    define linkonce_odr hidden void @_T04main4HugeVwde(
-// CHECK:      [[T0:%.*]] = bitcast [[BUFFER:.[0-9]+ x i8.]]* {{%.*}} to i8**
-// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]]
-// CHECK-NEXT: call void @swift_rt_swift_slowDealloc(i8* [[T1]], [[SIZE_T]] 4097, [[SIZE_T]] 7)
-// CHECK-NEXT: ret void
-
-
-// CHECK:    define linkonce_odr hidden [[OPAQUE:%swift.opaque]]* @_T04main4HugeVwal({{.*}}* [[BUFFER:%.*]], %swift.type
-// CHECK:  [[BOXPAIR:%.*]] = call { %swift.refcounted*, %swift.opaque* } @swift_allocBox({{.*}} @_T04main4HugeVMf
-// CHECK:  [[REF:%.*]] = extractvalue { %swift.refcounted*, %swift.opaque* } %0, 0
-// CHECK:  [[BUFFER_ADDR:%.*]] = bitcast {{.*}}* [[BUFFER]] to %swift.refcounted**
-// CHECK:  store %swift.refcounted* [[REF]], %swift.refcounted** [[BUFFER_ADDR]]
-
-
-// CHECK: define linkonce_odr hidden i8* @swift_rt_swift_slowAlloc([[SIZE_T:i(32|64)]],
+// CHECK: define linkonce_odr hidden i8* @__swift_memcpy4097_8(i8*, i8*, %swift.type*)
+// CHECK:   call void @llvm.memcpy.p0i8.p0i8.{{(i64|i32)}}(i8* %0, i8* %1, {{(i64|i32)}} 4097, i32 8, i1 false)
+// CHECK:   ret i8* %0
diff --git a/test/sil-opt/emit-sib.swift b/test/sil-opt/emit-sib.swift
index cd7fe5c..7536a7d 100644
--- a/test/sil-opt/emit-sib.swift
+++ b/test/sil-opt/emit-sib.swift
@@ -1,7 +1,7 @@
 // <rdar://problem/27394237> IR generation CFG order isn't deterministic
 XFAIL: *
 
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-swiftc_driver -emit-sib %s -module-name test -assert-config Release -O -o %t/a-opt.sib
 // RUN: %target-swiftc_driver -emit-ir %t/a-opt.sib -module-name test -assert-config Release -o %t/test.ll
diff --git a/test/stdlib/AVFoundation.swift b/test/stdlib/AVFoundation.swift
index 0740208..ff429e3 100644
--- a/test/stdlib/AVFoundation.swift
+++ b/test/stdlib/AVFoundation.swift
@@ -39,4 +39,22 @@
                         equal: equalCMTimeMappings)
 }
 
+
+var AVFoundationTests = TestSuite("AVFoundation")
+
+#if os(iOS)
+
+if #available(iOS 11, *) {
+  AVFoundationTests.test("AVCaptureSynchronizedDataCollection/iteration") {
+    func f(c: AVCaptureSynchronizedDataCollection) {
+      for element in c {
+        var element = element
+        expectType(AVCaptureSynchronizedData.self, &element)
+      }
+    }
+  }
+}
+
+#endif
+
 runAllTests()
diff --git a/test/stdlib/Accelerate.swift b/test/stdlib/Accelerate.swift
new file mode 100644
index 0000000..2c92136
--- /dev/null
+++ b/test/stdlib/Accelerate.swift
@@ -0,0 +1,58 @@
+// RUN: %target-run-simple-swift
+// REQUIRES: executable_test
+
+// UNSUPPORTED: OS=watchos
+// XFAIL: linux
+
+import StdlibUnittest
+import Accelerate
+
+var AccelerateTests = TestSuite("Accelerate")
+
+if #available(iOS 10.0, OSX 10.12, tvOS 10.0, *) {
+  
+  AccelerateTests.test("BNNS/ImageStackDescriptor") {
+    let succeed = BNNSImageStackDescriptor(width: 0, height: 0, channels: 0,
+                                           row_stride: 0, image_stride: 0,
+                                           data_type: .int8)
+    expectEqual(succeed.data_scale, 1)
+    expectEqual(succeed.data_bias, 0)
+    expectCrashLater()
+    //  indexed8 is not allowed as an imageStack data type.
+    let _ = BNNSImageStackDescriptor(width: 0, height: 0, channels: 0,
+                                     row_stride: 0, image_stride: 0,
+                                     data_type: .indexed8)
+  }
+  
+  AccelerateTests.test("BNNS/VectorDescriptor") {
+    let succeed = BNNSVectorDescriptor(size: 0, data_type: .int8)
+    expectEqual(succeed.data_scale, 1)
+    expectEqual(succeed.data_bias, 0)
+    expectCrashLater()
+    //  indexed8 is not allowed as a vector data type.
+    let _ = BNNSVectorDescriptor(size: 0, data_type: .indexed8)
+  }
+  
+  AccelerateTests.test("BNNS/LayerData") {
+    //  The zero layer should have data == nil.
+    expectEqual(BNNSLayerData.zero.data, nil)
+    var succeed = BNNSLayerData(data: nil, data_type: .int8)
+    expectEqual(succeed.data_scale, 1)
+    expectEqual(succeed.data_bias, 0)
+    var table: [Float] = [1.0]
+    succeed = BNNSLayerData(data: nil, data_type: .indexed8, data_table: &table)
+    expectCrashLater()
+    // indexed8 requires a non-nil data table.
+    let _ = BNNSLayerData(data: nil, data_type: .indexed8)
+  }
+  
+  AccelerateTests.test("BNNS/Activation") {
+    expectEqual(BNNSActivation.identity.function, .identity)
+    let id = BNNSActivation(function: .identity)
+    expectTrue(id.alpha.isNaN)
+    expectTrue(id.beta.isNaN)
+  }
+  
+}
+
+runAllTests()
diff --git a/test/stdlib/AnyHashableCasts.swift.gyb b/test/stdlib/AnyHashableCasts.swift.gyb
index 354da61..4eaaf50 100644
--- a/test/stdlib/AnyHashableCasts.swift.gyb
+++ b/test/stdlib/AnyHashableCasts.swift.gyb
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %gyb %s -o %t/AnyHashableCasts.swift
 // RUN: %target-build-swift -g -module-name a %t/AnyHashableCasts.swift -o %t.out
diff --git a/test/stdlib/AppKit_Swift3.swift b/test/stdlib/AppKit_Swift3.swift
new file mode 100644
index 0000000..30432c2
--- /dev/null
+++ b/test/stdlib/AppKit_Swift3.swift
@@ -0,0 +1,20 @@
+// RUN: rm -rf %t && mkdir %t
+// RUN: %target-build-swift -swift-version 3 %s -o %t/a.out
+// RUN: %target-run %t/a.out
+// REQUIRES: executable_test
+// REQUIRES: OS=macosx
+// REQUIRES: objc_interop
+
+import AppKit
+import StdlibUnittest
+import StdlibUnittestFoundationExtras
+
+let AppKitTests = TestSuite("AppKit_Swift3")
+
+AppKitTests.test("NSEventMaskFromType") {
+  let eventType: NSEventType = .keyDown
+  let eventMask = NSEventMaskFromType(eventType)
+  expectEqual(eventMask, .keyDown)
+}
+
+runAllTests()
diff --git a/test/stdlib/AppKit_Swift4.swift b/test/stdlib/AppKit_Swift4.swift
new file mode 100644
index 0000000..276e1cd
--- /dev/null
+++ b/test/stdlib/AppKit_Swift4.swift
@@ -0,0 +1,97 @@
+// RUN: rm -rf %t && mkdir %t
+// RUN: %target-build-swift -swift-version 4 %s -o %t/a.out
+// RUN: %target-run %t/a.out
+// REQUIRES: executable_test
+// REQUIRES: OS=macosx
+// REQUIRES: objc_interop
+
+import AppKit
+import StdlibUnittest
+import StdlibUnittestFoundationExtras
+
+let AppKitTests = TestSuite("AppKit_Swift4")
+
+AppKitTests.test("NSEventMaskFromType") {
+  let eventType: NSEvent.EventType = .keyDown
+  let eventMask = NSEvent.EventTypeMask(type: eventType)
+  expectEqual(eventMask, .keyDown)
+}
+
+AppKitTests.test("NSWindowDepth.availableDepths") {
+  let depths = NSWindow.Depth.availableDepths
+  expectGT(depths.count, 0)
+  for depth in depths {
+    expectNotEqual(depth.rawValue, 0)
+  }
+}
+
+AppKitTests.test("NSRectFills") {
+  let bitmapImage = NSBitmapImageRep(
+    bitmapDataPlanes: nil, pixelsWide: 3, pixelsHigh: 3,
+    bitsPerSample: 8, samplesPerPixel: 4,
+    hasAlpha: true, isPlanar: false,
+    colorSpaceName: .deviceRGB,
+    bytesPerRow: 0, bitsPerPixel: 0)!
+  let graphicsContext = NSGraphicsContext(bitmapImageRep: bitmapImage)!
+  NSGraphicsContext.saveGraphicsState()
+  NSGraphicsContext.current = graphicsContext
+
+  let canvas = NSRect(x: 0, y: 0, width: 3, height: 3)
+  let bottomLeft = NSRect(x: 0, y: 0, width: 1, height: 1)
+  let bottomCenter = NSRect(x: 1, y: 0, width: 1, height: 1)
+  let bottomRight = NSRect(x: 2, y: 0, width: 1, height: 1)
+  let middleCenter = NSRect(x: 1, y: 1, width: 1, height: 1)
+  let middleRight = NSRect(x: 2, y: 1, width: 1, height: 1)
+  let topLeft = NSRect(x: 0, y: 2, width: 1, height: 1)
+  let topCenter = NSRect(x: 1, y: 2, width: 1, height: 1)
+  let topRight = NSRect(x: 2, y: 2, width: 1, height: 1)
+  let red = NSColor(deviceRed: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
+  let green = NSColor(deviceRed: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)
+  let blue = NSColor(deviceRed: 0.0, green: 0.0, blue: 1.0, alpha: 1.0)
+  let black = NSColor(deviceRed: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)
+  let white = NSColor(deviceRed: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
+
+  // Blank out the canvas with white
+  white.set()
+  canvas.fill()
+
+  // Fill the bottomLeft and middleRight with red using the Sequence<Rect> convenience
+  red.set()
+  [bottomLeft, middleRight].fill()
+
+  // Fill the bottom right corner by clipping to it, and then filling the canvas
+  NSGraphicsContext.saveGraphicsState()
+  topRight.clip()
+  black.set()
+  canvas.fill()
+  NSGraphicsContext.restoreGraphicsState()
+
+  // Fill bottomRight and topLeft by clipping to them and filling a superset
+  NSGraphicsContext.saveGraphicsState()
+  [bottomRight, topLeft].clip()
+  green.set()
+  canvas.fill()
+  blue.set()
+  // effectively fill bottomRight only
+  NSRect(x: 0, y: 0, width: 3, height: 1).fill()
+  NSGraphicsContext.restoreGraphicsState()
+
+  // Fill the center regions using the Sequence<(Rect, Color)> convenience
+  [(topCenter, blue),
+   (middleCenter, green),
+   (bottomCenter, red)].fill()
+
+  NSGraphicsContext.restoreGraphicsState()
+
+  expectEqual(bitmapImage.colorAt(x: 0, y: 0), green)
+  expectEqual(bitmapImage.colorAt(x: 1, y: 0), blue)
+  expectEqual(bitmapImage.colorAt(x: 2, y: 0), black)
+  expectEqual(bitmapImage.colorAt(x: 0, y: 1), white)
+  expectEqual(bitmapImage.colorAt(x: 1, y: 1), green)
+  expectEqual(bitmapImage.colorAt(x: 2, y: 1), red)
+  expectEqual(bitmapImage.colorAt(x: 0, y: 2), red)
+  expectEqual(bitmapImage.colorAt(x: 1, y: 2), red)
+  expectEqual(bitmapImage.colorAt(x: 2, y: 2), blue)
+}
+
+runAllTests()
diff --git a/test/stdlib/ArrayBridge.swift.gyb b/test/stdlib/ArrayBridge.swift.gyb
index 325eea0..81af44a 100644
--- a/test/stdlib/ArrayBridge.swift.gyb
+++ b/test/stdlib/ArrayBridge.swift.gyb
@@ -10,8 +10,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %gyb %s -o %t/ArrayBridge.swift
 // RUN: %target-clang %S/Inputs/ArrayBridge/ArrayBridge.m -c -o %t/ArrayBridgeObjC.o -g
diff --git a/test/stdlib/BridgeIdAsAny.swift.gyb b/test/stdlib/BridgeIdAsAny.swift.gyb
index 9f19fbf..5249d9f 100644
--- a/test/stdlib/BridgeIdAsAny.swift.gyb
+++ b/test/stdlib/BridgeIdAsAny.swift.gyb
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %gyb %s -o %t/BridgeIdAsAny.swift
 // RUN: %target-build-swift -g -module-name a %t/BridgeIdAsAny.swift -o %t.out
diff --git a/test/stdlib/Builtins.swift b/test/stdlib/Builtins.swift
index 1f2444a..7e0dbbb 100644
--- a/test/stdlib/Builtins.swift
+++ b/test/stdlib/Builtins.swift
@@ -9,7 +9,7 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 //
 //===----------------------------------------------------------------------===//
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 //   note: building with -Onone to test debug-mode-only safety checks
 // RUN: %target-build-swift %s -parse-stdlib -Xfrontend -disable-access-control -Onone -o %t/Builtins
 // RUN: %target-run %t/Builtins
diff --git a/test/stdlib/Character.swift b/test/stdlib/Character.swift
index 5d544b8..b3e3c62 100644
--- a/test/stdlib/Character.swift
+++ b/test/stdlib/Character.swift
@@ -229,7 +229,7 @@
 
 func isSmallRepresentation(_ s: String) -> Bool {
   switch Character(s)._representation {
-    case .small:
+    case .smallUTF16:
       return true
     default:
       return false
@@ -253,7 +253,8 @@
 }
 
 func checkRepresentation(_ s: String) {
-  let expectSmall = s.utf8.count <= 8
+  let expectSmall
+    = s.utf16.count < 4 || s.utf16.count == 4 && s._core[3] < 0x8000
   let isSmall = isSmallRepresentation(s)
 
   let expectedSize = expectSmall ? "small" : "large"
@@ -280,10 +281,10 @@
 
 CharacterTests.test("RoundTripping/Random") {
   // Random tests
-  for x in 0..<500 {
+  for _ in 0..<500 {
     // Character's small representation variant has 63 bits. Making
     // the maximum length 9 scalars tests both sides of the limit.
-    var s = randomGraphemeCluster(1, 9)
+    let s = randomGraphemeCluster(1, 9)
     checkUnicodeScalars(s)
     checkRepresentation(s)
     checkRoundTripThroughCharacter(s)
@@ -362,7 +363,7 @@
 UnicodeScalarTests.test("Comparable") {
   // FIXME: these tests are insufficient.
 
-  var CharA: UnicodeScalar = "A"
+  let CharA: UnicodeScalar = "A"
 
   expectTrue(CharA == "A")
   expectTrue("A" == CharA)
diff --git a/test/stdlib/CharacterTraps.swift b/test/stdlib/CharacterTraps.swift
index bf14221..3bddb57 100644
--- a/test/stdlib/CharacterTraps.swift
+++ b/test/stdlib/CharacterTraps.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out_Debug
 // RUN: %target-build-swift %s -o %t/a.out_Release -O
 //
@@ -25,8 +24,8 @@
 
 CharacterTraps.test("CharacterFromMoreThanOneGraphemeCluster")
   .skip(.custom(
-    { _isFastAssertConfiguration() },
-    reason: "this trap is not guaranteed to happen in -Ounchecked"))
+    { !_isDebugAssertConfiguration() },
+    reason: "this trap is only guaranteed to happen in Debug builds"))
   .code {
   var s = "ab"
   expectCrashLater()
diff --git a/test/stdlib/CommandLine.swift b/test/stdlib/CommandLine.swift
index 6b0e851..20b2847 100644
--- a/test/stdlib/CommandLine.swift
+++ b/test/stdlib/CommandLine.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 //
 // RUN: %target-build-swift %S/Inputs/CommandLineStressTest/CommandLineStressTest.swift -parse-as-library -force-single-frontend-invocation -module-name CommandLineStressTestSwift -emit-object -o %t/CommandLineStressTestSwift.o
diff --git a/test/stdlib/DictionaryTraps.swift b/test/stdlib/DictionaryTraps.swift
index 2a18c4f..ac0bb18 100644
--- a/test/stdlib/DictionaryTraps.swift
+++ b/test/stdlib/DictionaryTraps.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out_Debug
 // RUN: %target-build-swift %s -o %t/a.out_Release -O
 //
diff --git a/test/stdlib/DictionaryUnchecked.swift b/test/stdlib/DictionaryUnchecked.swift
index e87c76d..db48231 100644
--- a/test/stdlib/DictionaryUnchecked.swift
+++ b/test/stdlib/DictionaryUnchecked.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out -Ounchecked
 //
 // RUN: %target-run %t/a.out
diff --git a/test/stdlib/Dispatch.swift b/test/stdlib/Dispatch.swift
index 105861b..521f57c 100644
--- a/test/stdlib/Dispatch.swift
+++ b/test/stdlib/Dispatch.swift
@@ -70,7 +70,7 @@
 
 DispatchAPI.test("dispatch_data_t enumeration") {
 	// Ensure we can iterate the empty iterator
-	for x in DispatchData.empty {
+	for _ in DispatchData.empty {
 		_ = 1
 	}
 }
@@ -82,7 +82,7 @@
 	autoreleasepool {
 		let size = 1024
 		let p = UnsafeMutablePointer<UInt8>.allocate(capacity: size)
-		let d = DispatchData(bytesNoCopy: UnsafeRawBufferPointer(start: p, count: size), deallocator: .custom(q, {
+		let _ = DispatchData(bytesNoCopy: UnsafeBufferPointer(start: p, count: size), deallocator: .custom(q, {
 			t = 1
 		}))
 	}
@@ -151,7 +151,7 @@
 	let srcPtr1 = UnsafeBufferPointer(start: source1, count: source1.count)
 
 	var dest: [UInt8] = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
-	var destPtr = UnsafeMutableBufferPointer(start: UnsafeMutablePointer(&dest),
+	let destPtr = UnsafeMutableBufferPointer(start: UnsafeMutablePointer(&dest),
 			count: dest.count)
 
 	var dispatchData = DispatchData(bytes: srcPtr1)
@@ -468,3 +468,43 @@
 	chan.setInterval(interval: .seconds(1)) // Dereference of unexpected nil should crash
 #endif
 }
+
+if #available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *) {
+	var block = DispatchWorkItem(qos: .unspecified, flags: .assignCurrentContext) {}
+	DispatchAPI.test("DispatchSource.replace") {
+		let g = DispatchGroup()
+		let q = DispatchQueue(label: "q")
+		let ds = DispatchSource.makeUserDataReplaceSource(queue: q)
+		var lastValue = UInt(0)
+		var nextValue = UInt(1)
+		let maxValue = UInt(1 << 24)
+
+		ds.setEventHandler() {
+			let value = ds.data;
+			expectTrue(value > lastValue)	 // Values must increase
+			expectTrue((value & (value - 1)) == 0) // Must be power of two
+			lastValue = value
+			if value == maxValue {
+				g.leave()
+			}
+		}
+		ds.activate()
+
+		g.enter()
+		block = DispatchWorkItem(qos: .unspecified, flags: .assignCurrentContext) {
+			ds.replace(data: nextValue)
+			nextValue <<= 1
+			if nextValue <= maxValue {
+				q.asyncAfter(
+					deadline: DispatchTime.now() + DispatchTimeInterval.milliseconds(1),
+					execute: block)
+			}
+		}
+		q.asyncAfter(
+			deadline: DispatchTime.now() + DispatchTimeInterval.milliseconds(1),
+			execute: block)
+
+		let result = g.wait(timeout: DispatchTime.now() + .seconds(30))
+		expectTrue(result == .success)
+	}
+}
diff --git a/test/stdlib/Float.swift b/test/stdlib/Float.swift
index bef6e18..59b5796 100644
--- a/test/stdlib/Float.swift
+++ b/test/stdlib/Float.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: cp %s %t/main.swift
 
 // RUN: echo "typealias TestFloat = Float" > %t/float_type.swift
diff --git a/test/stdlib/FloatingPoint.swift.gyb b/test/stdlib/FloatingPoint.swift.gyb
index f330033..8355c1e 100644
--- a/test/stdlib/FloatingPoint.swift.gyb
+++ b/test/stdlib/FloatingPoint.swift.gyb
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && mkdir -p %t && %gyb %s -o %t/FloatingPoint.swift
+// RUN: %empty-directory(%t)
+// RUN: %gyb %s -o %t/FloatingPoint.swift
 // RUN: %line-directive %t/FloatingPoint.swift -- %target-build-swift -parse-stdlib %t/FloatingPoint.swift -o %t/a.out
 // RUN: %line-directive %t/FloatingPoint.swift -- %target-run %t/a.out
 // REQUIRES: executable_test
@@ -289,17 +290,6 @@
     for value in [${Self}(), 1, 1/${Self}.ulpOfOne,
                   .greatestFiniteMagnitude, .infinity] {
       expectBitwiseEqual(value, value.rounded(rule))
-
-      // FIXME: rdar://27347596
-      // Double -0 rounded toNearestOrEven is wrong on watchos armv7k
-% if Self == 'Double':
-#if os(watchOS) && arch(arm)
-      if (value == 0  &&  rule == .toNearestOrEven) {
-        continue
-      }
-#endif
-% end
-
       expectBitwiseEqual(-value, (-value).rounded(rule))
     }
 
diff --git a/test/stdlib/HeapBuffer.swift b/test/stdlib/HeapBuffer.swift
deleted file mode 100644
index 9512fb5..0000000
--- a/test/stdlib/HeapBuffer.swift
+++ /dev/null
@@ -1,63 +0,0 @@
-// RUN: %target-run-simple-swift | %FileCheck %s
-// REQUIRES: executable_test
-
-import Swift
-
-print("testing...")
-// CHECK: testing...
-
-struct Bundle {
-  init() {
-    locations = Array()
-  }
-  var name = String()
-  var locations: [String]
-}
-
-var a = _HeapBuffer<Bundle,Int>(_HeapBufferStorage<Bundle,Int>.self, Bundle(), 10)
-var b = a.value
-a.value.name = "DaveA"
-a.value.locations.append("Princeton")
-a.value.locations.append("San Jose")
-for x in 0..<10 {
-  (a.baseAddress + x).initialize(to: x)
-}
-
-print("buffer has storage: \(a.storage != nil)")
-// CHECK-NEXT: buffer has storage: true
-
-func testUnique() {
-  print("buffer is unique: \(a.isUniquelyReferenced())")
-  // CHECK-NEXT: buffer is unique: true
-  
-  var addRef = [a]
-  print("copied buffer is unique: \(a.isUniquelyReferenced())")
-  // CHECK-NEXT: copied buffer is unique: false
-}
-testUnique()
-
-print("a == a: \(a == a)")
-// CHECK-NEXT: a == a: true
-
-let other = _HeapBuffer<Bundle,Int>(
-  _HeapBufferStorage<Bundle,Int>.self, Bundle(), 0)
-print("a == other: \(a == other)")
-// CHECK-NEXT: a == other: false
-
-print("name=\(a.value.name)")
-// CHECK-NEXT: name=DaveA
-
-print("length=\(a.value.locations.count)")
-// CHECK-NEXT: length=2
-
-print("locations[0]=\(a.value.locations[0])")
-// CHECK-NEXT: locations[0]=Princeton
-
-print("locations[1]=\(a.value.locations[1])")
-// CHECK-NEXT: locations[1]=San Jose
-
-for x in 0..<10 {
-  print(a.baseAddress[x], terminator: "")
-}
-print("")
-// CHECK-NEXT: 0123456789
diff --git a/test/stdlib/IntegerCompatibility.swift b/test/stdlib/IntegerCompatibility.swift
index 4250eef..2c7ad5f 100644
--- a/test/stdlib/IntegerCompatibility.swift
+++ b/test/stdlib/IntegerCompatibility.swift
@@ -79,3 +79,7 @@
   _ = (u8 << -1)
 }
 #endif
+
+func sr5176(description: String = "unambiguous Int32.init(bitPattern:)") {
+  _ = Int32(bitPattern: 0) // should compile without ambiguity
+}
diff --git a/test/stdlib/IntegerDiagnostics.swift b/test/stdlib/IntegerDiagnostics.swift
new file mode 100644
index 0000000..ba529e1
--- /dev/null
+++ b/test/stdlib/IntegerDiagnostics.swift
@@ -0,0 +1,7 @@
+// RUN: %target-typecheck-verify-swift -swift-version 3
+// RUN: %target-typecheck-verify-swift -swift-version 4
+
+func signedBitPattern() {
+  _ = Int64(bitPattern: 0.0) // expected-error {{Please use Int64(bitPattern: UInt64) in combination with Double.bitPattern property.}}
+  _ = Int32(bitPattern: 0.0) // expected-error {{Please use Int32(bitPattern: UInt32) in combination with Float.bitPattern property.}}
+}
diff --git a/test/stdlib/IntegerRenames3.swift b/test/stdlib/IntegerRenames3.swift
new file mode 100644
index 0000000..bdd6166
--- /dev/null
+++ b/test/stdlib/IntegerRenames3.swift
@@ -0,0 +1,37 @@
+// RUN: %target-typecheck-verify-swift -swift-version 3
+
+func f<T : SignedInteger>(x: T) {
+  _ = T.addWithOverflow(x, x) // expected-error {{'addWithOverflow' is unavailable: Please use FixedWidthInteger protocol as a generic constraint and addingReportingOverflow(_:) method instead.}}
+  _ = T.subtractWithOverflow(x, x) // expected-error {{'subtractWithOverflow' is unavailable: Please use FixedWidthInteger protocol as a generic constraint and subtractingReportingOverflow(_:) method instead.}}
+  _ = T.multiplyWithOverflow(x, x) // expected-error {{'multiplyWithOverflow' is unavailable: Please use FixedWidthInteger protocol as a generic constraint and multipliedReportingOverflow(by:) method instead.}}
+  _ = T.divideWithOverflow(x, x) // expected-error {{'divideWithOverflow' is unavailable: Please use FixedWidthInteger protocol as a generic constraint and dividedReportingOverflow(by:) method instead.}}
+  _ = T.remainderWithOverflow(x, x) // expected-error {{'remainderWithOverflow' is unavailable: Please use FixedWidthInteger protocol as a generic constraint and remainderReportingOverflow(dividingBy:) method instead.}}
+}
+
+func f<T : FixedWidthInteger>(x: T) {
+  _ = T.addWithOverflow(x, x) // no error
+  _ = T.subtractWithOverflow(x, x) // no error
+  _ = T.multiplyWithOverflow(x, x) // no error
+  _ = T.divideWithOverflow(x, x) // no error
+  _ = T.remainderWithOverflow(x, x) // no error
+}
+
+do {
+  let _: IntMax = 0 // no error
+  let _: UIntMax = 0 // no error
+}
+
+func integer<T : Integer>(x: T) {} // no error
+func integerArithmetic<T : IntegerArithmetic>(x: T) {} // no error
+func signedNumber<T : SignedNumber>(x: T) {} // no error
+func absoluteValuable<T : AbsoluteValuable>(x: T) {} // no error
+func _signedInteger<T : _SignedInteger>(x: T) {} // no error
+
+func absolutaValuable<T : SignedNumeric & Comparable>(x: T) {
+  _ = T.abs(x) // no error
+}
+
+func signedIntegerMaskingArithmetics<T : SignedInteger>(x: T) {
+  _ = x &+ x // no error
+  _ = x &- x // no error
+}
diff --git a/test/stdlib/IntegerRenames4.swift b/test/stdlib/IntegerRenames4.swift
new file mode 100644
index 0000000..b6603c4
--- /dev/null
+++ b/test/stdlib/IntegerRenames4.swift
@@ -0,0 +1,37 @@
+// RUN: %target-typecheck-verify-swift -swift-version 4
+
+func f<T : SignedInteger>(x: T) {
+  _ = T.addWithOverflow(x, x) // expected-error {{'addWithOverflow' is unavailable: Please use FixedWidthInteger protocol as a generic constraint and addingReportingOverflow(_:) method instead.}}
+  _ = T.subtractWithOverflow(x, x) // expected-error {{'subtractWithOverflow' is unavailable: Please use FixedWidthInteger protocol as a generic constraint and subtractingReportingOverflow(_:) method instead.}}
+  _ = T.multiplyWithOverflow(x, x) // expected-error {{'multiplyWithOverflow' is unavailable: Please use FixedWidthInteger protocol as a generic constraint and multipliedReportingOverflow(by:) method instead.}}
+  _ = T.divideWithOverflow(x, x) // expected-error {{'divideWithOverflow' is unavailable: Please use FixedWidthInteger protocol as a generic constraint and dividedReportingOverflow(by:) method instead.}}
+  _ = T.remainderWithOverflow(x, x) // expected-error {{'remainderWithOverflow' is unavailable: Please use FixedWidthInteger protocol as a generic constraint and remainderReportingOverflow(dividingBy:) method instead.}}
+}
+
+func f<T : FixedWidthInteger>(x: T) {
+  _ = T.addWithOverflow(x, x) // expected-error {{'addWithOverflow' is unavailable: Use addingReportingOverflow(_:) instead.}}
+  _ = T.subtractWithOverflow(x, x) // expected-error {{'subtractWithOverflow' is unavailable: Use subtractingReportingOverflow(_:) instead.}}
+  _ = T.multiplyWithOverflow(x, x) // expected-error {{'multiplyWithOverflow' is unavailable: Use multipliedReportingOverflow(by:) instead.}}
+  _ = T.divideWithOverflow(x, x) // expected-error {{'divideWithOverflow' is unavailable: Use dividedReportingOverflow(by:) instead.}}
+  _ = T.remainderWithOverflow(x, x) // expected-error {{'remainderWithOverflow' is unavailable: Use remainderReportingOverflow(dividingBy:) instead.}}
+}
+
+do {
+  let _: IntMax = 0 // expected-error {{'IntMax' has been renamed to 'Int64'}}
+  let _: UIntMax = 0 // expected-error {{'UIntMax' has been renamed to 'UInt64'}}
+}
+
+func integer<T : Integer>(x: T) {} // expected-error {{'Integer' has been renamed to 'BinaryInteger'}}
+func integerArithmetic<T : IntegerArithmetic>(x: T) {} // expected-error {{'IntegerArithmetic' has been renamed to 'BinaryInteger'}}
+func signedNumber<T : SignedNumber>(x: T) {} // expected-error {{Please use 'SignedNumeric & Comparable' instead.}}
+func absoluteValuable<T : AbsoluteValuable>(x: T) {} // expected-error {{Please use 'SignedNumeric & Comparable' instead.}}
+func _signedInteger<T : _SignedInteger>(x: T) {} // expected-error {{'_SignedInteger' has been renamed to 'SignedInteger'}}
+
+func absolutaValuable<T : SignedNumeric & Comparable>(x: T) {
+  _ = T.abs(x) // expected-error {{use the 'abs(_:)' free function}}
+}
+
+func signedIntegerMaskingArithmetics<T : SignedInteger>(x: T) {
+  _ = x &+ x // expected-error {{use 'FixedWidthInteger' instead of 'SignedInteger' to get '&+' in generic code}}
+  _ = x &- x // expected-error {{use 'FixedWidthInteger' instead of 'SignedInteger' to get '&-' in generic code}}
+}
diff --git a/test/stdlib/Integers.swift.gyb b/test/stdlib/Integers.swift.gyb
index 9729be6..cc6532f 100644
--- a/test/stdlib/Integers.swift.gyb
+++ b/test/stdlib/Integers.swift.gyb
@@ -614,5 +614,240 @@
 % end
 }
 
+var dwTests = TestSuite("DoubleWidth")
+
+typealias UInt128 = DoubleWidth<UInt64>
+typealias UInt256 = DoubleWidth<UInt128>
+typealias UInt512 = DoubleWidth<UInt256>
+typealias UInt1024 = DoubleWidth<UInt512>
+
+typealias Int128 = DoubleWidth<Int64>
+typealias Int256 = DoubleWidth<Int128>
+typealias Int512 = DoubleWidth<Int256>
+typealias Int1024 = DoubleWidth<Int512>
+
+dwTests.test("Literals") {
+  let w: DoubleWidth<UInt8> = 100
+  expectTrue(w == 100 as Int)
+
+  let x: DoubleWidth<UInt8> = 1000
+  expectTrue(x == 1000 as Int)
+
+  let y: DoubleWidth<Int8> = 1000
+  expectTrue(y == 1000 as Int)
+  
+  let z: DoubleWidth<Int8> = -1000
+  expectTrue(z == -1000 as Int)
+}
+
+dwTests.test("Arithmetic/unsigned") {
+  let x: DoubleWidth<UInt8> = 1000
+  let y: DoubleWidth<UInt8> = 1111
+  expectEqual(x + 1, 1001)
+  expectEqual(x + x, 2000)
+  expectEqual(x - 1, 999)
+  expectEqual(x - x, 0)
+  expectEqual(y - x, 111)
+
+  expectEqual(x * 7, 7000)
+  expectEqual(y * 7, 7777)
+
+  expectEqual(x / 3, 333)
+  expectEqual(x / x, 1)
+  expectEqual(x / y, 0)
+  expectEqual(y / x, 1)
+
+  expectEqual(x % 3, 1)
+  expectEqual(x % y, x)
+}
+
+dwTests.test("Arithmetic/signed") {
+  let x: DoubleWidth<Int8> = 1000
+  let y: DoubleWidth<Int8> = -1111
+  expectEqual(x + 1, 1001)
+  expectEqual(x + x, 2000)
+  expectEqual(x - 1, 999)
+  expectEqual(x - x, 0)
+  expectEqual(0 - x, -1000)
+  expectEqual(x + y, -111)
+  expectEqual(x - y, 2111)
+  
+  expectEqual(x * 7, 7000)
+  expectEqual(y * 7, -7777)
+  expectEqual(x * -7, -7000)
+  expectEqual(y * -7, 7777)
+
+  expectEqual(x / 3, 333)
+  expectEqual(x / -3, -333)
+  expectEqual(x / x, 1)
+  expectEqual(x / y, 0)
+  expectEqual(y / x, -1)
+  expectEqual(y / y, 1)
+
+  expectEqual(x % 3, 1)
+  expectEqual(x % -3, 1)
+  expectEqual(y % 3, -1)
+  expectEqual(y % -3, -1)
+
+  expectEqual(-y, 1111)
+  expectEqual(-x, -1000)
+}
+
+dwTests.test("Nested") {
+  do {
+    let x = UInt1024.max
+    let (y, o) = x.addingReportingOverflow(1)
+    expectEqual(y, 0)
+    expectTrue(y == (0 as Int))
+    expectTrue(o == .overflow)
+  }
+
+  do {
+    let x = Int1024.max
+    let (y, o) = x.addingReportingOverflow(1)
+    expectEqual(y, Int1024.min)
+    expectLT(y, 0)
+    expectTrue(y < (0 as Int))
+    expectTrue(y < (0 as UInt))
+    expectTrue(o == .overflow)
+  }
+
+  expectFalse(UInt1024.isSigned)
+  expectEqual(UInt1024.bitWidth, 1024)
+  expectTrue(Int1024.isSigned)
+  expectEqual(Int1024.bitWidth, 1024)
+
+  expectEqualSequence(UInt1024.max.words, repeatElement(UInt.max, count: 1024 / UInt.bitWidth))
+}
+
+dwTests.test("inits") {
+  typealias DWU16 = DoubleWidth<UInt8>
+
+  expectTrue(DWU16(UInt16.max) == UInt16.max)
+  expectNil(DWU16(exactly: UInt32.max))
+  expectEqual(DWU16(extendingOrTruncating: UInt64.max), DWU16.max)
+
+  expectCrashLater()
+  _ = DWU16(UInt32.max)
+}
+
+dwTests.test("Bitshifts") {
+  typealias DWU16 = DoubleWidth<UInt8>
+  typealias DWU32 = DoubleWidth<DWU16>
+  typealias DWU64 = DoubleWidth<DWU32>
+
+  func f(_ x: UInt64) {
+    let y = DWU64(x)
+    for i in -65...65 {
+      expectTrue(x << i == y << i)
+      expectTrue(x >> i == y >> i)
+    }
+  }
+
+  f(1)
+  f(~(~0 >> 1))
+  f(.max)
+  f(0b11110000_10100101_11110000_10100101_11110000_10100101_11110000_10100101)
+}
+
+dwTests.test("Remainder/DividingBy0") {
+  func f(_ x: Int1024, _ y: Int1024) -> Int1024 {
+    return x % y
+  }
+  expectCrashLater()
+  _ = f(42, 0)
+}
+
+dwTests.test("Division/By0") {
+  func f(_ x: Int1024, _ y: Int1024) -> Int1024 {
+    return x / y
+  }
+  expectCrashLater()
+  _ = f(42, 0)
+}
+
+dwTests.test("DivideMinByMinusOne") {
+  func f(_ x: Int1024) -> Int1024 {
+    return x / -1
+  }
+  expectCrashLater()
+  _ = f(Int1024.min)
+}
+
+dwTests.test("MultiplyMinByMinusOne") {
+  func f(_ x: Int1024) -> Int1024 {
+    return x * -1
+  }
+  expectCrashLater()
+  _ = f(Int1024.min)
+}
+
+typealias DWI16 = DoubleWidth<Int8>
+typealias DWU16 = DoubleWidth<UInt8>
+
+dwTests.test("Conversions") {
+  expectTrue(DWI16(1 << 15 - 1) == Int(1 << 15 - 1))
+  expectTrue(DWI16(-1 << 15) == Int(-1 << 15))
+  expectTrue(DWU16(1 << 16 - 1) == Int(1 << 16 - 1))
+  expectTrue(DWU16(0) == Int(0))
+
+  expectTrue(DWI16(Double(1 << 15 - 1)) == Int(1 << 15 - 1))
+  expectTrue(DWI16(Double(-1 << 15)) == Int(-1 << 15))
+  expectTrue(DWU16(Double(1 << 16 - 1)) == Int(1 << 16 - 1))
+  expectTrue(DWU16(Double(0)) == Int(0))
+
+  expectTrue(DWI16(Double(1 << 15 - 1) + 0.9) == Int(1 << 15 - 1))
+  expectTrue(DWI16(Double(-1 << 15) - 0.9) == Int(-1 << 15))
+  expectTrue(DWU16(Double(1 << 16 - 1) + 0.9) == Int(1 << 16 - 1))
+  expectTrue(DWU16(Double(0) - 0.9) == Int(0))
+
+  expectEqual(DWI16(0.00001), 0)
+  expectEqual(DWU16(0.00001), 0)
+}
+
+dwTests.test("Exact Conversions") {
+  expectEqual(DWI16(Double(1 << 15 - 1)), DWI16(exactly: Double(1 << 15 - 1))!)
+  expectEqual(DWI16(Double(-1 << 15)), DWI16(exactly: Double(-1 << 15))!)
+  expectEqual(DWU16(Double(1 << 16 - 1)), DWU16(exactly: Double(1 << 16 - 1))!)
+  expectEqual(DWU16(Double(0)), DWU16(exactly: Double(0))!)
+
+  expectNil(DWI16(exactly: Double(1 << 15 - 1) + 0.9))
+  expectNil(DWI16(exactly: Double(-1 << 15) - 0.9))
+  expectNil(DWU16(exactly: Double(1 << 16 - 1) + 0.9))
+  expectNil(DWU16(exactly: Double(0) - 0.9))
+
+  expectNil(DWI16(exactly: Double(1 << 15)))
+  expectNil(DWI16(exactly: Double(-1 << 15) - 1))
+  expectNil(DWU16(exactly: Double(1 << 16)))
+  expectNil(DWU16(exactly: Double(-1)))
+
+  expectNil(DWI16(exactly: 0.00001))
+  expectNil(DWU16(exactly: 0.00001))
+
+  expectNil(DWU16(exactly: Double.nan))
+  expectNil(DWU16(exactly: Float.nan))
+  expectNil(DWU16(exactly: Double.infinity))
+  expectNil(DWU16(exactly: Float.infinity))
+}
+
+dwTests.test("Conversions/SignedMax+1") {
+  expectCrashLater()
+  _ = DWI16(1 << 15)
+}
+
+dwTests.test("Conversions/SignedMin-1") {
+  expectCrashLater()
+  _ = DWI16(-1 << 15 - 1)
+}
+
+dwTests.test("Conversions/UnsignedMax+1") {
+  expectCrashLater()
+  _ = DWU16(1 << 16)
+}
+
+dwTests.test("Conversions/Unsigned-1") {
+  expectCrashLater()
+  _ = DWU16(-1)
+}
 
 runAllTests()
diff --git a/test/stdlib/IntervalTraps.swift b/test/stdlib/IntervalTraps.swift
index 3081e66..9b8c2df 100644
--- a/test/stdlib/IntervalTraps.swift
+++ b/test/stdlib/IntervalTraps.swift
@@ -9,8 +9,7 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 //
 //===----------------------------------------------------------------------===//
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out_Debug
 // RUN: %target-build-swift %s -o %t/a.out_Release -O
 //
diff --git a/test/stdlib/KVO.swift b/test/stdlib/KVO.swift
index 5d9b403..ae327d9 100644
--- a/test/stdlib/KVO.swift
+++ b/test/stdlib/KVO.swift
@@ -32,6 +32,9 @@
     self.objcValue = ""
     super.init(coder: aDecoder)
   }
+  required init(itemProviderData data: Data, typeIdentifier: String) throws {
+    fatalError("don't call this initializer")
+  }
 
   func print() { 
     Swift.print("swiftValue \(self.swiftValue.value), objcValue \(objcValue)")
diff --git a/test/stdlib/KVOKeyPaths.swift b/test/stdlib/KVOKeyPaths.swift
new file mode 100644
index 0000000..51c4c45
--- /dev/null
+++ b/test/stdlib/KVOKeyPaths.swift
@@ -0,0 +1,111 @@
+// RUN: %target-run-simple-swift | %FileCheck %s
+// REQUIRES: executable_test
+
+// REQUIRES: objc_interop
+
+import Foundation
+
+struct Guts {
+    var internalValue = 42
+    var value: Int {
+        get {
+            return internalValue
+        }
+    }
+    init(value: Int) {
+        internalValue = value
+    }
+    init() {
+    }
+}
+
+class Target : NSObject, NSKeyValueObservingCustomization {
+    // This dynamic property is observed by KVO
+    dynamic var objcValue: String
+    dynamic var objcValue2: String {
+        willSet {
+            willChangeValue(for: \.objcValue2)
+        }
+        didSet {
+            didChangeValue(for: \.objcValue2)
+        }
+    }
+    dynamic var objcValue3: String
+    
+    // This Swift-typed property causes vtable usage on this class.
+    var swiftValue: Guts
+    
+    override init() {
+        self.swiftValue = Guts()
+        self.objcValue = ""
+        self.objcValue2 = ""
+        self.objcValue3 = ""
+        super.init()
+    }
+    
+    static func keyPathsAffectingValue(for key: AnyKeyPath) -> Set<AnyKeyPath> {
+        if (key == \Target.objcValue) {
+            return [\Target.objcValue2, \Target.objcValue3]
+        } else {
+            return []
+        }
+    }
+    
+    static func automaticallyNotifiesObservers(for key: AnyKeyPath) -> Bool {
+        if key == \Target.objcValue2 || key == \Target.objcValue3 {
+            return false
+        }
+        return true
+    }
+    
+    func print() {
+        Swift.print("swiftValue \(self.swiftValue.value), objcValue \(objcValue)")
+    }
+}
+
+
+class ObserverKVO : NSObject {
+    var target: Target?
+    var observation: NSKeyValueObservation? = nil
+    
+    override init() { target = nil; super.init() }
+    
+    func observeTarget(_ target: Target) {
+        self.target = target
+        observation = target.observe(\.objcValue) { (object, change) in
+            Swift.print("swiftValue \(object.swiftValue.value), objcValue \(object.objcValue)")
+        }
+    }
+    
+    func removeTarget() {
+        observation!.invalidate()
+    }
+}
+
+
+var t2 = Target()
+var o2 = ObserverKVO()
+print("unobserved 2")
+t2.objcValue = "one"
+t2.objcValue = "two"
+print("registering observer 2")
+o2.observeTarget(t2)
+print("Now witness the firepower of this fully armed and operational panopticon!")
+t2.objcValue = "three"
+t2.objcValue = "four"
+t2.swiftValue = Guts(value: 13)
+t2.objcValue2 = "six" //should fire
+t2.objcValue3 = "nothing" //should not fire
+o2.removeTarget()
+t2.objcValue = "five" //make sure that we don't crash or keep posting changes if you deallocate an observation after invalidating it
+print("target removed")
+
+// CHECK: registering observer 2
+// CHECK-NEXT: Now witness the firepower of this fully armed and operational panopticon!
+// CHECK-NEXT: swiftValue 42, objcValue three
+// CHECK-NEXT: swiftValue 42, objcValue four
+// CHECK-NEXT: swiftValue 13, objcValue four
+// CHECK-NEXT: swiftValue 13, objcValue four
+// CHECK-NEXT: swiftValue 13, objcValue four
+// CHECK-NEXT: target removed
+
diff --git a/test/stdlib/KeyPath.swift b/test/stdlib/KeyPath.swift
index f4b8a75..c0dc2a0 100644
--- a/test/stdlib/KeyPath.swift
+++ b/test/stdlib/KeyPath.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -Xfrontend -enable-experimental-keypath-components -o %t/a.out
 // RUN: %target-run %t/a.out
 // REQUIRES: executable_test
@@ -279,12 +279,18 @@
 
 class AB {
 }
-class ABC: AB {
+class ABC: AB, ABCProtocol {
   var a = LifetimeTracked(1)
   var b = LifetimeTracked(2)
   var c = LifetimeTracked(3)
 }
 
+protocol ABCProtocol {
+  var a: LifetimeTracked { get }
+  var b: LifetimeTracked { get set }
+  var c: LifetimeTracked { get nonmutating set }
+}
+
 keyPath.test("dynamically-typed application") {
   let cPaths = [\ABC.a, \ABC.b, \ABC.c]
 
@@ -312,6 +318,32 @@
     expectTrue(wrongFields[1] == nil)
     expectTrue(wrongFields[2] == nil)
   }
+
+  var protoErasedSubject: ABCProtocol = subject
+  let protoErasedPathA = \ABCProtocol.a
+  let protoErasedPathB = \ABCProtocol.b
+  let protoErasedPathC = \ABCProtocol.c
+
+  do {
+    expectTrue(protoErasedSubject.a ===
+                  protoErasedSubject[keyPath: protoErasedPathA])
+
+    let newB = LifetimeTracked(4)
+    expectTrue(protoErasedSubject.b ===
+                  protoErasedSubject[keyPath: protoErasedPathB])
+    protoErasedSubject[keyPath: protoErasedPathB] = newB
+    expectTrue(protoErasedSubject.b ===
+                  protoErasedSubject[keyPath: protoErasedPathB])
+    expectTrue(protoErasedSubject.b === newB)
+
+    let newC = LifetimeTracked(5)
+    expectTrue(protoErasedSubject.c ===
+                  protoErasedSubject[keyPath: protoErasedPathC])
+    protoErasedSubject[keyPath: protoErasedPathC] = newC
+    expectTrue(protoErasedSubject.c ===
+                  protoErasedSubject[keyPath: protoErasedPathC])
+    expectTrue(protoErasedSubject.c === newC)
+  }
 }
 
 runAllTests()
diff --git a/test/stdlib/KeyPathImplementation.swift b/test/stdlib/KeyPathImplementation.swift
index d3c3e24..70e9f1c 100644
--- a/test/stdlib/KeyPathImplementation.swift
+++ b/test/stdlib/KeyPathImplementation.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -g -Xfrontend -enable-experimental-keypath-components -o %t/a.out
 // RUN: %target-run %t/a.out
 // REQUIRES: executable_test
diff --git a/test/stdlib/KeyPathObjC.swift b/test/stdlib/KeyPathObjC.swift
index ff6c8c2..aface86 100644
--- a/test/stdlib/KeyPathObjC.swift
+++ b/test/stdlib/KeyPathObjC.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -Xfrontend -enable-experimental-keypath-components -o %t/a.out
 // RUN: %target-run %t/a.out
 // REQUIRES: executable_test
@@ -22,12 +22,34 @@
   @objc subscript(x: Bar) -> Foo { return self }
 
   dynamic var dynamic: Bar { fatalError() }
+
+  let storedLet = LifetimeTracked(0)
+}
+
+// We just need some non-empty ObjC-defined class here to ensure we get the
+// right offset for a 'let' or final stored property after the ObjC runtime
+// slides offsets
+class MyWeirdFormatter: DateFormatter {
+  let storedLet = LifetimeTracked(1)
 }
 
 class Bar: NSObject {
   @objc var foo: Foo { fatalError() }
 }
 
+var testStoredProperties = TestSuite("stored properties in ObjC subclasses")
+
+testStoredProperties.test("final stored properties in ObjC subclasses") {
+  let fooLet = \Foo.storedLet
+  let formatterLet = \MyWeirdFormatter.storedLet
+
+  let foo = Foo()
+  let formatter = MyWeirdFormatter()
+
+  expectTrue(foo[keyPath: fooLet] === foo.storedLet)
+  expectTrue(formatter[keyPath: formatterLet] === formatter.storedLet)
+}
+
 var testKVCStrings = TestSuite("KVC strings")
 
 testKVCStrings.test("KVC strings") {
diff --git a/test/stdlib/Mirror.swift b/test/stdlib/Mirror.swift
index 979556c78..03fd4a9 100644
--- a/test/stdlib/Mirror.swift
+++ b/test/stdlib/Mirror.swift
@@ -9,8 +9,7 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 //
 //===----------------------------------------------------------------------===//
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: if [ %target-runtime == "objc" ]; \
 // RUN: then \
diff --git a/test/stdlib/NSError.swift b/test/stdlib/NSError.swift
index 9c37eee..85fb91e 100644
--- a/test/stdlib/NSError.swift
+++ b/test/stdlib/NSError.swift
@@ -1,6 +1,13 @@
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+
 // RUN: %target-run-simple-swift
 // REQUIRES: executable_test
-
 // REQUIRES: objc_interop
 
 // RUN: %target-build-swift %s 2> %t.warnings.txt
@@ -28,4 +35,22 @@
   expectEqual("reason", error.userInfo[ErrorUserInfoKey.localizedFailureReasonErrorKey as NSObject]! as! String)
 }
 
+tests.test("convenience") {
+    let error1 = CocoaError.error(.fileNoSuchFile)
+    expectNotNil((error1 as NSError).localizedDescription)
+    expectEqual(CocoaError.Code.fileNoSuchFile.rawValue, (error1 as NSError).code)
+    
+    let url = URL(string: "file:///tmp/bar/foo")
+    let error2 = CocoaError.error(.fileNoSuchFile, url: url)
+    expectEqual(url, (error2 as! CocoaError).url)
+    expectNotNil((error2 as NSError).localizedDescription)
+    expectEqual(url, (error2 as NSError).userInfo[NSURLErrorKey] as? URL)
+    
+    let error3 = CocoaError.error(.fileNoSuchFile, userInfo: ["foo" : "bar"], url: url)
+    expectEqual(url, (error3 as! CocoaError).url)
+    expectNotNil((error3 as NSError).localizedDescription)
+    expectEqual(url, (error3 as NSError).userInfo[NSURLErrorKey] as? URL)
+    expectEqual("bar", (error3 as NSError).userInfo["foo"] as? String)
+}
+
 runAllTests()
diff --git a/test/stdlib/NSStringAPI.swift b/test/stdlib/NSStringAPI.swift
index b73d87c..72e4376 100644
--- a/test/stdlib/NSStringAPI.swift
+++ b/test/stdlib/NSStringAPI.swift
@@ -3,6 +3,11 @@
 
 // REQUIRES: objc_interop
 
+// FIXME: rdar://problem/31311598
+// UNSUPPORTED: OS=ios
+// UNSUPPORTED: OS=tvos
+// UNSUPPORTED: OS=watchos
+
 //
 // Tests for the NSString APIs as exposed by String
 //
@@ -19,6 +24,9 @@
   required init(coder aDecoder: NSCoder) {
     fatalError("don't call this initializer")
   }
+  required init(itemProviderData data: Data, typeIdentifier: String) throws {
+    fatalError("don't call this initializer")    
+  }
 
   override init() { 
     _value = []
diff --git a/test/stdlib/NewString.swift b/test/stdlib/NewString.swift
index 49d29be..ec4c586 100644
--- a/test/stdlib/NewString.swift
+++ b/test/stdlib/NewString.swift
@@ -16,7 +16,7 @@
 
 func hexAddr(_ x: AnyObject?) -> String {
   if let owner = x {
-    if let y = owner as? _StringBuffer._Storage.Storage {
+    if let y = owner as? _HeapBufferStorage<_StringBufferIVars, UInt16> {
       return ".native\(hexAddrVal(y))"
     }
     if let y = owner as? NSString {
diff --git a/test/stdlib/NewStringAppending.swift b/test/stdlib/NewStringAppending.swift
index 3a76971..0ae334c 100644
--- a/test/stdlib/NewStringAppending.swift
+++ b/test/stdlib/NewStringAppending.swift
@@ -18,7 +18,7 @@
 
 func hexAddr(_ x: AnyObject?) -> String {
   if let owner = x {
-    if let y = owner as? _StringBuffer._Storage.Storage {
+    if let y = owner as? _HeapBufferStorage<_StringBufferIVars, UInt16> {
       return ".native\(hexAddrVal(y))"
     }
     if let y = owner as? NSString {
diff --git a/test/stdlib/NumericParsing.swift.gyb b/test/stdlib/NumericParsing.swift.gyb
index 5f48675..8019dbe 100644
--- a/test/stdlib/NumericParsing.swift.gyb
+++ b/test/stdlib/NumericParsing.swift.gyb
@@ -10,7 +10,7 @@
 //
 //===----------------------------------------------------------------------===//
 // -*- swift -*-
-// RUN: rm -rf %t ; mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %gyb -DCMAKE_SIZEOF_VOID_P=%target-ptrsize %s -o %t/NumericParsing.swift
 // RUN: %line-directive %t/NumericParsing.swift -- %target-build-swift %t/NumericParsing.swift -o %t/a.out
 // RUN: %line-directive %t/NumericParsing.swift -- %target-run %t/a.out
diff --git a/test/stdlib/OptionalTraps.swift b/test/stdlib/OptionalTraps.swift
index 9a670a3..8af9d26 100644
--- a/test/stdlib/OptionalTraps.swift
+++ b/test/stdlib/OptionalTraps.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/Assert_Debug -Onone
 // RUN: %target-build-swift %s -Xfrontend -disable-access-control -o %t/Assert_Release -O
 // RUN: %target-build-swift %s -Xfrontend -disable-access-control -o %t/Assert_Unchecked -Ounchecked
diff --git a/test/stdlib/Print.swift b/test/stdlib/Print.swift
index 6b6df0a..71eb19b 100644
--- a/test/stdlib/Print.swift
+++ b/test/stdlib/Print.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -c -force-single-frontend-invocation -parse-as-library -emit-module -emit-module-path %t/PrintTestTypes.swiftmodule -o %t/PrintTestTypes.o %S/Inputs/PrintTestTypes.swift
 // RUN: %target-build-swift %s -Xlinker %t/PrintTestTypes.o -I %t -L %t -o %t/main
 // RUN: %target-run %t/main
diff --git a/test/stdlib/PrintArray.swift b/test/stdlib/PrintArray.swift
index 0964bff..bf39288b 100644
--- a/test/stdlib/PrintArray.swift
+++ b/test/stdlib/PrintArray.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -c -force-single-frontend-invocation -parse-as-library -emit-module -emit-module-path %t/PrintTestTypes.swiftmodule -o %t/PrintTestTypes.o %S/Inputs/PrintTestTypes.swift
 // RUN: %target-build-swift %s -Xlinker %t/PrintTestTypes.o -I %t -L %t -o %t/main
 // RUN: %target-run %t/main
diff --git a/test/stdlib/PrintClass.swift b/test/stdlib/PrintClass.swift
index 7e9acd2..aa61829 100644
--- a/test/stdlib/PrintClass.swift
+++ b/test/stdlib/PrintClass.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -c -force-single-frontend-invocation -parse-as-library -emit-module -emit-module-path %t/PrintTestTypes.swiftmodule -o %t/PrintTestTypes.o %S/Inputs/PrintTestTypes.swift
 // RUN: %target-build-swift %s -Xlinker %t/PrintTestTypes.o -I %t -L %t -o %t/main
 // RUN: %target-run %t/main
diff --git a/test/stdlib/PrintFloat.swift b/test/stdlib/PrintFloat.swift
index 4f7afb9..04b3427 100644
--- a/test/stdlib/PrintFloat.swift
+++ b/test/stdlib/PrintFloat.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -c -force-single-frontend-invocation -parse-as-library -emit-module -emit-module-path %t/PrintTestTypes.swiftmodule -o %t/PrintTestTypes.o %S/Inputs/PrintTestTypes.swift
 // RUN: %target-build-swift %s -Xlinker %t/PrintTestTypes.o -I %t -L %t -o %t/main.out
 // RUN: %target-run %t/main.out
diff --git a/test/stdlib/PrintString.swift b/test/stdlib/PrintString.swift
index 4f66076..6768290 100644
--- a/test/stdlib/PrintString.swift
+++ b/test/stdlib/PrintString.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -c -force-single-frontend-invocation -parse-as-library -emit-module -emit-module-path %t/PrintTestTypes.swiftmodule -o %t/PrintTestTypes.o %S/Inputs/PrintTestTypes.swift
 // RUN: %target-build-swift %s -Xlinker %t/PrintTestTypes.o -I %t -L %t -o %t/main
 // RUN: %target-run %t/main
diff --git a/test/stdlib/PrintStruct.swift b/test/stdlib/PrintStruct.swift
index a2acb90..ea4b74b 100644
--- a/test/stdlib/PrintStruct.swift
+++ b/test/stdlib/PrintStruct.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -c -force-single-frontend-invocation -parse-as-library -emit-module -emit-module-path %t/PrintTestTypes.swiftmodule -o %t/PrintTestTypes.o %S/Inputs/PrintTestTypes.swift
 // RUN: %target-build-swift %s -Xlinker %t/PrintTestTypes.o -I %t -L %t -o %t/main
 // RUN: %target-run %t/main
diff --git a/test/stdlib/PrintTuple.swift b/test/stdlib/PrintTuple.swift
index ab7bc1d..2eed37a 100644
--- a/test/stdlib/PrintTuple.swift
+++ b/test/stdlib/PrintTuple.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -c -force-single-frontend-invocation -parse-as-library -emit-module -emit-module-path %t/PrintTestTypes.swiftmodule -o %t/PrintTestTypes.o %S/Inputs/PrintTestTypes.swift
 // RUN: %target-build-swift %s -Xlinker %t/PrintTestTypes.o -I %t -L %t -o %t/main
 // RUN: %target-run %t/main
diff --git a/test/stdlib/RangeTraps.swift b/test/stdlib/RangeTraps.swift
index 5d71a9a..ce8b07c 100644
--- a/test/stdlib/RangeTraps.swift
+++ b/test/stdlib/RangeTraps.swift
@@ -9,8 +9,7 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 //
 //===----------------------------------------------------------------------===//
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out_Debug
 // RUN: %target-build-swift %s -o %t/a.out_Release -O
 //
diff --git a/test/stdlib/Reflection.swift b/test/stdlib/Reflection.swift
index 173d75a..b58b2ba 100644
--- a/test/stdlib/Reflection.swift
+++ b/test/stdlib/Reflection.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -parse-stdlib %s -module-name Reflection -o %t/a.out
 // RUN: %S/timeout.sh 360 %target-run %t/a.out | %FileCheck %s
 // REQUIRES: executable_test
diff --git a/test/stdlib/Reflection_objc.swift b/test/stdlib/Reflection_objc.swift
index 3e0cade..9380a3f 100644
--- a/test/stdlib/Reflection_objc.swift
+++ b/test/stdlib/Reflection_objc.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang %S/Inputs/Mirror/Mirror.mm -c -o %t/Mirror.mm.o -g
 // RUN: %target-build-swift -parse-stdlib %s -module-name Reflection -I %S/Inputs/Mirror/ -Xlinker %t/Mirror.mm.o -o %t/a.out
diff --git a/test/stdlib/Runtime.swift.gyb b/test/stdlib/Runtime.swift.gyb
index df98966..0e28256 100644
--- a/test/stdlib/Runtime.swift.gyb
+++ b/test/stdlib/Runtime.swift.gyb
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %gyb %s -o %t/Runtime.swift
 // RUN: %target-build-swift -parse-stdlib -module-name a %t/Runtime.swift -o %t.out
diff --git a/test/stdlib/RuntimeObjC.swift b/test/stdlib/RuntimeObjC.swift
index 40fc1a9..27a9951 100644
--- a/test/stdlib/RuntimeObjC.swift
+++ b/test/stdlib/RuntimeObjC.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang %S/Inputs/Mirror/Mirror.mm -c -o %t/Mirror.mm.o -g
 // RUN: %target-build-swift -parse-stdlib -Xfrontend -disable-access-control -module-name a -I %S/Inputs/Mirror/ -Xlinker %t/Mirror.mm.o %s -o %t.out
@@ -452,6 +452,9 @@
   required init(coder: NSCoder) {
     fatalError("don't call this initializer")
   }
+  required init(itemProviderData data: Data, typeIdentifier: String) throws {
+    fatalError("don't call this initializer")    
+  }
   deinit {
     nsStringCanaryCount -= 1
   }
diff --git a/test/stdlib/SIMDParameterPassing.swift.gyb b/test/stdlib/SIMDParameterPassing.swift.gyb
index 2cec80c..c79e3d5 100644
--- a/test/stdlib/SIMDParameterPassing.swift.gyb
+++ b/test/stdlib/SIMDParameterPassing.swift.gyb
@@ -69,19 +69,6 @@
 #if !arch(arm64)
 % end
 
-extension ${TestType} : Equatable {}
-public func ==(_ x: ${TestType}, _ y: ${TestType}) -> Bool {
-  for i in 0..<${cols} {
-//    Workaround <rdar://problem/18900352>
-%   if type in float_types:
-    if x[i] != y[i] && !(x[i].isNaN && y[i].isNaN) { return false }
-%   else:
-    if x[i] != y[i] { return false }
-% end
-  }
-  return true
-}
-
 enum Enum${TestType} : Equatable {
   case Empty
   case Value(${TestType})
diff --git a/test/stdlib/SegmentAlignment.c b/test/stdlib/SegmentAlignment.c
index 7caabf5..ec8b812 100644
--- a/test/stdlib/SegmentAlignment.c
+++ b/test/stdlib/SegmentAlignment.c
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: xcrun -sdk %target-sdk-name %clang -c -arch %target-cpu %s -o %t/SegmentAlignment.o
 // RUN: %target-build-swift %S/Inputs/SegmentAlignment.swift -Xlinker %t/SegmentAlignment.o -o %t/a.out
 // RUN: %target-run %t/a.out | %FileCheck %s
diff --git a/test/stdlib/SetTraps.swift b/test/stdlib/SetTraps.swift
index 42a3da1..b2613b2 100644
--- a/test/stdlib/SetTraps.swift
+++ b/test/stdlib/SetTraps.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out_Debug
 // RUN: %target-build-swift %s -o %t/a.out_Release -O
 //
diff --git a/test/stdlib/SetTrapsObjC.swift b/test/stdlib/SetTrapsObjC.swift
index 3e68a52..da7f065 100644
--- a/test/stdlib/SetTrapsObjC.swift
+++ b/test/stdlib/SetTrapsObjC.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out_Debug
 // RUN: %target-build-swift %s -o %t/a.out_Release -O
 //
diff --git a/test/stdlib/StringTraps.swift b/test/stdlib/StringTraps.swift
index 5fd3207..8eaa9bb 100644
--- a/test/stdlib/StringTraps.swift
+++ b/test/stdlib/StringTraps.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out_Debug
 // RUN: %target-build-swift %s -o %t/a.out_Release -O
 //
diff --git a/test/stdlib/SwiftObjectNSObject.swift b/test/stdlib/SwiftObjectNSObject.swift
index 56f348f..ab99be0 100644
--- a/test/stdlib/SwiftObjectNSObject.swift
+++ b/test/stdlib/SwiftObjectNSObject.swift
@@ -10,7 +10,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // 
 // RUN: %target-clang %S/Inputs/SwiftObjectNSObject/SwiftObjectNSObject.m -c -o %t/SwiftObjectNSObject.o -g
 // RUN: %target-build-swift %s -I %S/Inputs/SwiftObjectNSObject/ -Xlinker %t/SwiftObjectNSObject.o -o %t/SwiftObjectNSObject
diff --git a/test/stdlib/TestCalendar.swift b/test/stdlib/TestCalendar.swift
index 9711283..2328ccf 100644
--- a/test/stdlib/TestCalendar.swift
+++ b/test/stdlib/TestCalendar.swift
@@ -6,8 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 //
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang %S/Inputs/FoundationBridge/FoundationBridge.m -c -o %t/FoundationBridgeObjC.o -g
 // RUN: %target-build-swift %s -I %S/Inputs/FoundationBridge/ -Xlinker %t/FoundationBridgeObjC.o -o %t/TestCalendar
@@ -16,6 +15,11 @@
 // REQUIRES: executable_test
 // REQUIRES: objc_interop
 
+// FIXME: rdar://problem/31207060
+// UNSUPPORTED: OS=ios
+// UNSUPPORTED: OS=tvos
+// UNSUPPORTED: OS=watchos
+
 import Foundation
 import FoundationBridgeObjC
 
diff --git a/test/stdlib/TestData.swift b/test/stdlib/TestData.swift
index 386bb4f..efe8e08 100644
--- a/test/stdlib/TestData.swift
+++ b/test/stdlib/TestData.swift
@@ -6,8 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 //
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang %S/Inputs/FoundationBridge/FoundationBridge.m -c -o %t/FoundationBridgeObjC.o -g
 // RUN: %target-build-swift %s -I %S/Inputs/FoundationBridge/ -Xlinker %t/FoundationBridgeObjC.o -o %t/TestData
@@ -15,6 +14,7 @@
 // RUN: %target-run %t/TestData
 // REQUIRES: executable_test
 // REQUIRES: objc_interop
+// UNSUPPORTED: resilient_stdlib
 
 import Foundation
 import Dispatch
diff --git a/test/stdlib/TestIndexPath.swift b/test/stdlib/TestIndexPath.swift
index b2c4647..5635612 100644
--- a/test/stdlib/TestIndexPath.swift
+++ b/test/stdlib/TestIndexPath.swift
@@ -711,6 +711,15 @@
     func test_unconditionallyBridgeFromObjectiveC() {
         expectEqual(IndexPath(), IndexPath._unconditionallyBridgeFromObjectiveC(nil))
     }
+
+    func test_slice_1ary() {
+        let indexPath: IndexPath = [0]
+        let res = indexPath.dropFirst()
+        expectEqual(0, res.count)
+
+        let slice = indexPath[1..<1]
+        expectEqual(0, slice.count)
+    }
 }
 
 #if !FOUNDATION_XCTEST
@@ -762,5 +771,6 @@
 IndexPathTests.test("test_AnyHashableContainingIndexPath") { TestIndexPath().test_AnyHashableContainingIndexPath() }
 IndexPathTests.test("test_AnyHashableCreatedFromNSIndexPath") { TestIndexPath().test_AnyHashableCreatedFromNSIndexPath() }
 IndexPathTests.test("test_unconditionallyBridgeFromObjectiveC") { TestIndexPath().test_unconditionallyBridgeFromObjectiveC() }
+IndexPathTests.test("test_slice_1ary") { TestIndexPath().test_slice_1ary() }
 runAllTests()
 #endif
diff --git a/test/stdlib/TestJSONEncoder.swift b/test/stdlib/TestJSONEncoder.swift
index 40c8b0c..0c70563 100644
--- a/test/stdlib/TestJSONEncoder.swift
+++ b/test/stdlib/TestJSONEncoder.swift
@@ -39,14 +39,19 @@
   func testEncodingTopLevelSingleValueEnum() {
     _testEncodeFailure(of: Switch.off)
     _testEncodeFailure(of: Switch.on)
+
+    _testRoundTrip(of: TopLevelWrapper(Switch.off))
+    _testRoundTrip(of: TopLevelWrapper(Switch.on))
   }
 
   func testEncodingTopLevelSingleValueStruct() {
     _testEncodeFailure(of: Timestamp(3141592653))
+    _testRoundTrip(of: TopLevelWrapper(Timestamp(3141592653)))
   }
 
   func testEncodingTopLevelSingleValueClass() {
     _testEncodeFailure(of: Counter())
+    _testRoundTrip(of: TopLevelWrapper(Counter()))
   }
 
   // MARK: - Encoding Top-Level Structured Types
@@ -63,12 +68,53 @@
     _testRoundTrip(of: person, expectedJSON: expectedJSON)
   }
 
+  func testEncodingTopLevelStructuredSingleStruct() {
+    // Numbers is a struct which encodes as an array through a single value container.
+    let numbers = Numbers.testValue
+    _testRoundTrip(of: numbers)
+  }
+
+  func testEncodingTopLevelStructuredSingleClass() {
+    // Mapping is a class which encodes as a dictionary through a single value container.
+    let mapping = Mapping.testValue
+    _testRoundTrip(of: mapping)
+  }
+
   func testEncodingTopLevelDeepStructuredType() {
     // Company is a type with fields which are Codable themselves.
     let company = Company.testValue
     _testRoundTrip(of: company)
   }
 
+  // MARK: - Output Formatting Tests
+  func testEncodingOutputFormattingDefault() {
+    let expectedJSON = "{\"name\":\"Johnny Appleseed\",\"email\":\"appleseed@apple.com\"}".data(using: .utf8)!
+    let person = Person.testValue
+    _testRoundTrip(of: person, expectedJSON: expectedJSON)
+  }
+
+  func testEncodingOutputFormattingPrettyPrinted() {
+    let expectedJSON = "{\n  \"name\" : \"Johnny Appleseed\",\n  \"email\" : \"appleseed@apple.com\"\n}".data(using: .utf8)!
+    let person = Person.testValue
+    _testRoundTrip(of: person, expectedJSON: expectedJSON, outputFormatting: [.prettyPrinted])
+  }
+
+  func testEncodingOutputFormattingSortedKeys() {
+    if #available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *) {
+      let expectedJSON = "{\"email\":\"appleseed@apple.com\",\"name\":\"Johnny Appleseed\"}".data(using: .utf8)!
+      let person = Person.testValue
+      _testRoundTrip(of: person, expectedJSON: expectedJSON, outputFormatting: [.sortedKeys])
+    }
+  }
+
+  func testEncodingOutputFormattingPrettyPrintedSortedKeys() {
+    if #available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *) {
+      let expectedJSON = "{\n  \"email\" : \"appleseed@apple.com\",\n  \"name\" : \"Johnny Appleseed\"\n}".data(using: .utf8)!
+      let person = Person.testValue
+      _testRoundTrip(of: person, expectedJSON: expectedJSON, outputFormatting: [.prettyPrinted, .sortedKeys])
+    }
+  }
+
   // MARK: - Date Strategy Tests
   func testEncodingDate() {
     // We can't encode a top-level Date, so it'll be wrapped in an array.
@@ -281,6 +327,7 @@
 
   private func _testRoundTrip<T>(of value: T,
                                  expectedJSON json: Data? = nil,
+                                 outputFormatting: JSONEncoder.OutputFormatting = [],
                                  dateEncodingStrategy: JSONEncoder.DateEncodingStrategy = .deferredToDate,
                                  dateDecodingStrategy: JSONDecoder.DateDecodingStrategy = .deferredToDate,
                                  dataEncodingStrategy: JSONEncoder.DataEncodingStrategy = .base64Encode,
@@ -290,12 +337,13 @@
     var payload: Data! = nil
     do {
       let encoder = JSONEncoder()
+      encoder.outputFormatting = outputFormatting
       encoder.dateEncodingStrategy = dateEncodingStrategy
       encoder.dataEncodingStrategy = dataEncodingStrategy
       encoder.nonConformingFloatEncodingStrategy = nonConformingFloatEncodingStrategy
       payload = try encoder.encode(value)
     } catch {
-      expectUnreachable("Failed to encode \(T.self) to JSON.")
+      expectUnreachable("Failed to encode \(T.self) to JSON: \(error)")
     }
 
     if let expectedJSON = json {
@@ -310,7 +358,7 @@
       let decoded = try decoder.decode(T.self, from: payload)
       expectEqual(decoded, value, "\(T.self) did not round-trip to an equal value.")
     } catch {
-      expectUnreachable("Failed to decode \(T.self) from JSON.")
+      expectUnreachable("Failed to decode \(T.self) from JSON: \(error)")
     }
   }
 }
@@ -398,7 +446,7 @@
 }
 
 /// A simple timestamp type that encodes as a single Double value.
-fileprivate struct Timestamp : Codable {
+fileprivate struct Timestamp : Codable, Equatable {
   let value: Double
 
   init(_ value: Double) {
@@ -414,10 +462,14 @@
     var container = encoder.singleValueContainer()
     try container.encode(self.value)
   }
+
+  static func ==(_ lhs: Timestamp, _ rhs: Timestamp) -> Bool {
+    return lhs.value == rhs.value
+  }
 }
 
 /// A simple referential counter type that encodes as a single Int value.
-fileprivate final class Counter : Codable {
+fileprivate final class Counter : Codable, Equatable {
   var count: Int = 0
 
   init() {}
@@ -431,6 +483,10 @@
     var container = encoder.singleValueContainer()
     try container.encode(self.count)
   }
+
+  static func ==(_ lhs: Counter, _ rhs: Counter) -> Bool {
+    return lhs === rhs || lhs.count == rhs.count
+  }
 }
 
 // MARK: - Structured Types
@@ -581,6 +637,62 @@
   }
 }
 
+/// A type which encodes as an array directly through a single value container.
+struct Numbers : Codable, Equatable {
+  let values = [4, 8, 15, 16, 23, 42]
+
+  init() {}
+
+  init(from decoder: Decoder) throws {
+    let container = try decoder.singleValueContainer()
+    let decodedValues = try container.decode([Int].self)
+    guard decodedValues == values else {
+      throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "The Numbers are wrong!"))
+    }
+  }
+
+  func encode(to encoder: Encoder) throws {
+    var container = encoder.singleValueContainer()
+    try container.encode(values)
+  }
+
+  static func ==(_ lhs: Numbers, _ rhs: Numbers) -> Bool {
+    return lhs.values == rhs.values
+  }
+
+  static var testValue: Numbers {
+    return Numbers()
+  }
+}
+
+/// A type which encodes as a dictionary directly through a single value container.
+fileprivate final class Mapping : Codable, Equatable {
+  let values: [String : URL]
+
+  init(values: [String : URL]) {
+    self.values = values
+  }
+
+  init(from decoder: Decoder) throws {
+    let container = try decoder.singleValueContainer()
+    values = try container.decode([String : URL].self)
+  }
+
+  func encode(to encoder: Encoder) throws {
+    var container = encoder.singleValueContainer()
+    try container.encode(values)
+  }
+
+  static func ==(_ lhs: Mapping, _ rhs: Mapping) -> Bool {
+    return lhs === rhs || lhs.values == rhs.values
+  }
+
+  static var testValue: Mapping {
+    return Mapping(values: ["Apple": URL(string: "http://apple.com")!,
+                            "localhost": URL(string: "http://127.0.0.1")!])
+  }
+}
+
 struct NestedContainersTestType : Encodable {
   let testSuperEncoder: Bool
 
@@ -675,28 +787,33 @@
 
 #if !FOUNDATION_XCTEST
 var JSONEncoderTests = TestSuite("TestJSONEncoder")
-JSONEncoderTests.test("testEncodingTopLevelEmptyStruct")        { TestJSONEncoder().testEncodingTopLevelEmptyStruct()       }
-JSONEncoderTests.test("testEncodingTopLevelEmptyClass")         { TestJSONEncoder().testEncodingTopLevelEmptyClass()        }
-JSONEncoderTests.test("testEncodingTopLevelSingleValueEnum")    { TestJSONEncoder().testEncodingTopLevelSingleValueEnum()   }
-JSONEncoderTests.test("testEncodingTopLevelSingleValueStruct")  { TestJSONEncoder().testEncodingTopLevelSingleValueStruct() }
-JSONEncoderTests.test("testEncodingTopLevelSingleValueClass")   { TestJSONEncoder().testEncodingTopLevelSingleValueClass()  }
-JSONEncoderTests.test("testEncodingTopLevelStructuredStruct")   { TestJSONEncoder().testEncodingTopLevelStructuredStruct()  }
-JSONEncoderTests.test("testEncodingTopLevelStructuredClass")    { TestJSONEncoder().testEncodingTopLevelStructuredClass()   }
-JSONEncoderTests.test("testEncodingTopLevelStructuredClass")    { TestJSONEncoder().testEncodingTopLevelStructuredClass()   }
+JSONEncoderTests.test("testEncodingTopLevelEmptyStruct") { TestJSONEncoder().testEncodingTopLevelEmptyStruct() }
+JSONEncoderTests.test("testEncodingTopLevelEmptyClass") { TestJSONEncoder().testEncodingTopLevelEmptyClass() }
+JSONEncoderTests.test("testEncodingTopLevelSingleValueEnum") { TestJSONEncoder().testEncodingTopLevelSingleValueEnum() }
+JSONEncoderTests.test("testEncodingTopLevelSingleValueStruct") { TestJSONEncoder().testEncodingTopLevelSingleValueStruct() }
+JSONEncoderTests.test("testEncodingTopLevelSingleValueClass") { TestJSONEncoder().testEncodingTopLevelSingleValueClass() }
+JSONEncoderTests.test("testEncodingTopLevelStructuredStruct") { TestJSONEncoder().testEncodingTopLevelStructuredStruct() }
+JSONEncoderTests.test("testEncodingTopLevelStructuredClass") { TestJSONEncoder().testEncodingTopLevelStructuredClass() }
+JSONEncoderTests.test("testEncodingTopLevelStructuredSingleStruct") { TestJSONEncoder().testEncodingTopLevelStructuredSingleStruct() }
+JSONEncoderTests.test("testEncodingTopLevelStructuredSingleClass") { TestJSONEncoder().testEncodingTopLevelStructuredSingleClass() }
 JSONEncoderTests.test("testEncodingTopLevelDeepStructuredType") { TestJSONEncoder().testEncodingTopLevelDeepStructuredType()}
-JSONEncoderTests.test("testEncodingDate")                       { TestJSONEncoder().testEncodingDate()                      }
-JSONEncoderTests.test("testEncodingDateSecondsSince1970")       { TestJSONEncoder().testEncodingDateSecondsSince1970()      }
-JSONEncoderTests.test("testEncodingDateMillisecondsSince1970")  { TestJSONEncoder().testEncodingDateMillisecondsSince1970() }
-JSONEncoderTests.test("testEncodingDateISO8601")                { TestJSONEncoder().testEncodingDateISO8601()               }
-JSONEncoderTests.test("testEncodingDateFormatted")              { TestJSONEncoder().testEncodingDateFormatted()             }
-JSONEncoderTests.test("testEncodingDateCustom")                 { TestJSONEncoder().testEncodingDateCustom()                }
-JSONEncoderTests.test("testEncodingDateCustomEmpty")            { TestJSONEncoder().testEncodingDateCustomEmpty()           }
-JSONEncoderTests.test("testEncodingBase64Data")                 { TestJSONEncoder().testEncodingBase64Data()                }
-JSONEncoderTests.test("testEncodingCustomData")                 { TestJSONEncoder().testEncodingCustomData()                }
-JSONEncoderTests.test("testEncodingCustomDataEmpty")            { TestJSONEncoder().testEncodingCustomDataEmpty()           }
-JSONEncoderTests.test("testEncodingNonConformingFloats")        { TestJSONEncoder().testEncodingNonConformingFloats()       }
-JSONEncoderTests.test("testEncodingNonConformingFloatStrings")  { TestJSONEncoder().testEncodingNonConformingFloatStrings() }
-JSONEncoderTests.test("testNestedContainerCodingPaths")         { TestJSONEncoder().testNestedContainerCodingPaths()        }
-JSONEncoderTests.test("testSuperEncoderCodingPaths")            { TestJSONEncoder().testSuperEncoderCodingPaths()           }
+JSONEncoderTests.test("testEncodingOutputFormattingDefault") { TestJSONEncoder().testEncodingOutputFormattingDefault() }
+JSONEncoderTests.test("testEncodingOutputFormattingPrettyPrinted") { TestJSONEncoder().testEncodingOutputFormattingPrettyPrinted() }
+JSONEncoderTests.test("testEncodingOutputFormattingSortedKeys") { TestJSONEncoder().testEncodingOutputFormattingSortedKeys() }
+JSONEncoderTests.test("testEncodingOutputFormattingPrettyPrintedSortedKeys") { TestJSONEncoder().testEncodingOutputFormattingPrettyPrintedSortedKeys() }
+JSONEncoderTests.test("testEncodingDate") { TestJSONEncoder().testEncodingDate() }
+JSONEncoderTests.test("testEncodingDateSecondsSince1970") { TestJSONEncoder().testEncodingDateSecondsSince1970() }
+JSONEncoderTests.test("testEncodingDateMillisecondsSince1970") { TestJSONEncoder().testEncodingDateMillisecondsSince1970() }
+JSONEncoderTests.test("testEncodingDateISO8601") { TestJSONEncoder().testEncodingDateISO8601() }
+JSONEncoderTests.test("testEncodingDateFormatted") { TestJSONEncoder().testEncodingDateFormatted() }
+JSONEncoderTests.test("testEncodingDateCustom") { TestJSONEncoder().testEncodingDateCustom() }
+JSONEncoderTests.test("testEncodingDateCustomEmpty") { TestJSONEncoder().testEncodingDateCustomEmpty() }
+JSONEncoderTests.test("testEncodingBase64Data") { TestJSONEncoder().testEncodingBase64Data() }
+JSONEncoderTests.test("testEncodingCustomData") { TestJSONEncoder().testEncodingCustomData() }
+JSONEncoderTests.test("testEncodingCustomDataEmpty") { TestJSONEncoder().testEncodingCustomDataEmpty() }
+JSONEncoderTests.test("testEncodingNonConformingFloats") { TestJSONEncoder().testEncodingNonConformingFloats() }
+JSONEncoderTests.test("testEncodingNonConformingFloatStrings") { TestJSONEncoder().testEncodingNonConformingFloatStrings() }
+JSONEncoderTests.test("testNestedContainerCodingPaths") { TestJSONEncoder().testNestedContainerCodingPaths() }
+JSONEncoderTests.test("testSuperEncoderCodingPaths") { TestJSONEncoder().testSuperEncoderCodingPaths() }
 runAllTests()
 #endif
diff --git a/test/stdlib/TestLocale.swift b/test/stdlib/TestLocale.swift
index 9784b63..3dee9b9 100644
--- a/test/stdlib/TestLocale.swift
+++ b/test/stdlib/TestLocale.swift
@@ -6,8 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 //
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang %S/Inputs/FoundationBridge/FoundationBridge.m -c -o %t/FoundationBridgeObjC.o -g
 // RUN: %target-build-swift %s -I %S/Inputs/FoundationBridge/ -Xlinker %t/FoundationBridgeObjC.o -o %t/TestLocale
diff --git a/test/stdlib/TestNSNumberBridging.swift b/test/stdlib/TestNSNumberBridging.swift
index 5bb04d3..27b04fc 100644
--- a/test/stdlib/TestNSNumberBridging.swift
+++ b/test/stdlib/TestNSNumberBridging.swift
@@ -18,6 +18,58 @@
 import Foundation
 import CoreGraphics
 
+extension Float {
+    init?(reasonably value: Float) {
+        self = value
+    }
+
+    init?(reasonably value: Double) {
+        guard !value.isNaN else {
+            self = Float.nan
+            return
+        }
+
+        guard !value.isInfinite else {
+            if value.sign == .minus {
+                self = -Float.infinity
+            } else {
+                self = Float.infinity
+            }
+            return
+        }
+
+        guard abs(value) <= Double(Float.greatestFiniteMagnitude) else {
+            return nil
+        }
+        
+        self = Float(value)
+    }
+}
+
+extension Double {
+    init?(reasonably value: Float) {
+        guard !value.isNaN else {
+            self = Double.nan
+            return
+        }
+
+        guard !value.isInfinite else {
+            if value.sign == .minus {
+                self = -Double.infinity
+            } else {
+                self = Double.infinity
+            }
+            return
+        }
+
+        self = Double(value)
+    }
+
+    init?(reasonably value: Double) {
+        self = value
+    }
+}
+
 var nsNumberBridging = TestSuite("NSNumberBridging")
 
 func testFloat(_ lhs: Float?, _ rhs: Float?, file: String = #file, line: UInt = #line) {
@@ -645,7 +697,7 @@
             expectEqual(UInt(exactly: interestingValue), uint)
 
             let float = (number!) as? Float
-            let expectedFloat = Float(exactly: interestingValue)
+            let expectedFloat = Float(reasonably: interestingValue)
             testFloat(expectedFloat, float)
             
             let double = (number!) as? Double
@@ -685,7 +737,7 @@
             expectEqual(UInt(exactly: interestingValue), uint)
 
             let float = (number!) as? Float
-            let expectedFloat = Float(exactly: interestingValue)
+            let expectedFloat = Float(reasonably: interestingValue)
             testFloat(expectedFloat, float)
             
             let double = (number!) as? Double
@@ -725,7 +777,7 @@
             expectEqual(UInt(exactly: interestingValue.native), uint)
             
             let float = (number!) as? Float
-            let expectedFloat = Float(exactly: interestingValue.native)
+            let expectedFloat = Float(reasonably: interestingValue.native)
             testFloat(expectedFloat, float)
             
             let double = (number!) as? Double
diff --git a/test/stdlib/TestNSRange.swift b/test/stdlib/TestNSRange.swift
new file mode 100644
index 0000000..0d49866
--- /dev/null
+++ b/test/stdlib/TestNSRange.swift
@@ -0,0 +1,160 @@
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+//
+// RUN: %target-run-simple-swift
+// REQUIRES: executable_test
+// REQUIRES: objc_interop
+
+import Foundation
+
+#if FOUNDATION_XCTEST
+import XCTest
+class TestNSRangeSuper : XCTestCase { }
+#else
+import StdlibUnittest
+class TestNSRangeSuper { }
+#endif
+
+class TestNSRange : TestNSRangeSuper {
+    func testEquality() {
+        let r1 = NSRange(location: 1, length: 10)
+        let r2 = NSRange(location: 1, length: 11)
+        let r3 = NSRange(location: 2, length: 10)
+        let r4 = NSRange(location: 1, length: 10)
+        let r5 = NSRange(location: NSNotFound, length: 0)
+        let r6 = NSRange(location: NSNotFound, length: 2)
+
+        expectNotEqual(r1, r2)
+        expectNotEqual(r1, r3)
+        expectEqual(r1, r4)
+        expectNotEqual(r1, r5)
+        expectNotEqual(r5, r6)
+    }
+
+    func testDescription() {
+        let r1 = NSRange(location: 0, length: 22)
+        let r2 = NSRange(location: 10, length: 22)
+        let r3 = NSRange(location: NSNotFound, length: 0)
+        let r4 = NSRange(location: NSNotFound, length: 22)
+        expectEqual("{0, 22}", r1.description)
+        expectEqual("{10, 22}", r2.description)
+        expectEqual("{\(NSNotFound), 0}", r3.description)
+        expectEqual("{\(NSNotFound), 22}", r4.description)
+
+        expectEqual("{0, 22}", r1.debugDescription)
+        expectEqual("{10, 22}", r2.debugDescription)
+        expectEqual("{NSNotFound, 0}", r3.debugDescription)
+        expectEqual("{NSNotFound, 22}", r4.debugDescription)
+    }
+
+    func testCreationFromString() {
+        let r1 = NSRange("")
+        expectNil(r1)
+        let r2 = NSRange("1")
+        expectNil(r2)
+        let r3 = NSRange("1 2")
+        expectEqual(NSRange(location: 1, length: 2), r3)
+        let r4 = NSRange("{1 8")
+        expectEqual(NSRange(location: 1, length: 8), r4)
+        let r5 = NSRange("1.8")
+        expectNil(r5)
+        let r6 = NSRange("1-9")
+        expectEqual(NSRange(location: 1, length: 9), r6)
+        let r7 = NSRange("{1,9}")
+        expectEqual(NSRange(location: 1, length: 9), r7)
+        let r8 = NSRange("{1,9}asdfasdf")
+        expectEqual(NSRange(location: 1, length: 9), r8)
+        let r9 = NSRange("{1,9}{2,7}")
+        expectEqual(NSRange(location: 1, length: 9), r9)
+        let r10 = NSRange("{1,9}")        
+        expectEqual(NSRange(location: 1, length: 9), r10)
+        let r11 = NSRange("{1.0,9}")
+        expectEqual(NSRange(location: 1, length: 9), r11)
+        let r12 = NSRange("{1,9.0}")
+        expectEqual(NSRange(location: 1, length: 9), r12)
+        let r13 = NSRange("{1.2,9}")
+        expectNil(r13)
+        let r14 = NSRange("{1,9.8}")
+        expectNil(r14)
+    }
+
+    func testHashing() {
+        let r1 = NSRange(location: 10, length: 22)
+        let r2 = NSRange(location: 10, length: 22)
+        let r3 = NSRange(location: 1, length: 22)
+        expectEqual(r1.hashValue, r2.hashValue)
+        expectNotEqual(r1.hashValue, r3.hashValue)
+        let rangeSet: Set<NSRange> = [r1, r2, r3]
+        expectEqual(2, rangeSet.count)
+    }
+
+    func testBounding() {
+        let r1 = NSRange(location: 1000, length: 2222)
+        expectEqual(r1.location, r1.lowerBound)
+        expectEqual(r1.location + r1.length, r1.upperBound)
+    }
+
+    func testContains() {
+        let r1 = NSRange(location: 1000, length: 2222)
+        expectFalse(r1.contains(3))
+        expectTrue(r1.contains(1001))
+        expectFalse(r1.contains(4000))
+    }
+
+    func testUnion() {
+        let r1 = NSRange(location: 10, length: 20)
+        let r2 = NSRange(location: 30, length: 5)
+        let union1 = r1.union(r2)
+
+        expectEqual(Swift.min(r1.lowerBound, r2.lowerBound), union1.lowerBound)
+        expectEqual(Swift.max(r1.upperBound, r2.upperBound), union1.upperBound)
+
+        let r3 = NSRange(location: 10, length: 20)
+        let r4 = NSRange(location: 11, length: 5)
+        let union2 = r3.union(r4)
+
+        expectEqual(Swift.min(r3.lowerBound, r4.lowerBound), union2.lowerBound)
+        expectEqual(Swift.max(r3.upperBound, r4.upperBound), union2.upperBound)
+        
+        let r5 = NSRange(location: 10, length: 20)
+        let r6 = NSRange(location: 11, length: 29)
+        let union3 = r5.union(r6)
+        
+        expectEqual(Swift.min(r5.lowerBound, r6.upperBound), union3.lowerBound)
+        expectEqual(Swift.max(r5.upperBound, r6.upperBound), union3.upperBound)
+    }
+
+    func testIntersection() {
+        let r1 = NSRange(location: 1, length: 7)
+        let r2 = NSRange(location: 2, length: 20)
+        let r3 = NSRange(location: 2, length: 2)
+        let r4 = NSRange(location: 10, length: 7)
+
+        let intersection1 = r1.intersection(r2)
+        expectEqual(NSRange(location: 2, length: 6), intersection1)
+        let intersection2 = r1.intersection(r3)
+        expectEqual(NSRange(location: 2, length: 2), intersection2)
+        let intersection3 = r1.intersection(r4)
+        expectEqual(nil, intersection3)
+    }
+}
+
+#if !FOUNDATION_XCTEST
+var NSRangeTests = TestSuite("TestNSRange")
+
+NSRangeTests.test("testEquality") { TestNSRange().testEquality() }
+NSRangeTests.test("testDescription") { TestNSRange().testDescription() }
+NSRangeTests.test("testCreationFromString") { TestNSRange().testCreationFromString() }
+NSRangeTests.test("testHashing") { TestNSRange().testHashing() }
+NSRangeTests.test("testBounding") { TestNSRange().testBounding() }
+NSRangeTests.test("testContains") { TestNSRange().testContains() }
+NSRangeTests.test("testUnion") { TestNSRange().testUnion() }
+NSRangeTests.test("testIntersection") { TestNSRange().testIntersection() }
+
+runAllTests()
+#endif
diff --git a/test/stdlib/TestPlistEncoder.swift b/test/stdlib/TestPlistEncoder.swift
index da52d97..85b87e8 100644
--- a/test/stdlib/TestPlistEncoder.swift
+++ b/test/stdlib/TestPlistEncoder.swift
@@ -42,22 +42,30 @@
     let s1 = Switch.off
     _testEncodeFailure(of: s1, in: .binary)
     _testEncodeFailure(of: s1, in: .xml)
+    _testRoundTrip(of: TopLevelWrapper(s1), in: .binary)
+    _testRoundTrip(of: TopLevelWrapper(s1), in: .xml)
 
     let s2 = Switch.on
     _testEncodeFailure(of: s2, in: .binary)
     _testEncodeFailure(of: s2, in: .xml)
+    _testRoundTrip(of: TopLevelWrapper(s2), in: .binary)
+    _testRoundTrip(of: TopLevelWrapper(s2), in: .xml)
   }
 
   func testEncodingTopLevelSingleValueStruct() {
     let t = Timestamp(3141592653)
     _testEncodeFailure(of: t, in: .binary)
     _testEncodeFailure(of: t, in: .xml)
+    _testRoundTrip(of: TopLevelWrapper(t), in: .binary)
+    _testRoundTrip(of: TopLevelWrapper(t), in: .xml)
   }
 
   func testEncodingTopLevelSingleValueClass() {
     let c = Counter()
     _testEncodeFailure(of: c, in: .binary)
     _testEncodeFailure(of: c, in: .xml)
+    _testRoundTrip(of: TopLevelWrapper(c), in: .binary)
+    _testRoundTrip(of: TopLevelWrapper(c), in: .xml)
   }
 
   // MARK: - Encoding Top-Level Structured Types
@@ -75,6 +83,20 @@
     _testRoundTrip(of: person, in: .xml)
   }
 
+  func testEncodingTopLevelStructuredSingleStruct() {
+    // Numbers is a struct which encodes as an array through a single value container.
+    let numbers = Numbers.testValue
+    _testRoundTrip(of: numbers, in: .binary)
+    _testRoundTrip(of: numbers, in: .xml)
+  }
+
+  func testEncodingTopLevelStructuredSingleClass() {
+    // Mapping is a class which encodes as a dictionary through a single value container.
+    let mapping = Mapping.testValue
+    _testRoundTrip(of: mapping, in: .binary)
+    _testRoundTrip(of: mapping, in: .xml)
+  }
+
   func testEncodingTopLevelDeepStructuredType() {
     // Company is a type with fields which are Codable themselves.
     let company = Company.testValue
@@ -126,7 +148,7 @@
       encoder.outputFormat = format
       payload = try encoder.encode(value)
     } catch {
-      expectUnreachable("Failed to encode \(T.self) to plist.")
+      expectUnreachable("Failed to encode \(T.self) to plist: \(error)")
     }
 
     if let expectedPlist = plist {
@@ -139,7 +161,7 @@
       expectEqual(format, decodedFormat, "Encountered plist format differed from requested format.")
       expectEqual(decoded, value, "\(T.self) did not round-trip to an equal value.")
     } catch {
-      expectUnreachable("Failed to decode \(T.self) from plist.")
+      expectUnreachable("Failed to decode \(T.self) from plist: \(error)")
     }
   }
 }
@@ -227,7 +249,7 @@
 }
 
 /// A simple timestamp type that encodes as a single Double value.
-fileprivate struct Timestamp : Codable {
+fileprivate struct Timestamp : Codable, Equatable {
   let value: Double
 
   init(_ value: Double) {
@@ -243,10 +265,14 @@
     var container = encoder.singleValueContainer()
     try container.encode(self.value)
   }
+
+  static func ==(_ lhs: Timestamp, _ rhs: Timestamp) -> Bool {
+    return lhs.value == rhs.value
+  }
 }
 
 /// A simple referential counter type that encodes as a single Int value.
-fileprivate final class Counter : Codable {
+fileprivate final class Counter : Codable, Equatable {
   var count: Int = 0
 
   init() {}
@@ -260,6 +286,10 @@
     var container = encoder.singleValueContainer()
     try container.encode(self.count)
   }
+
+  static func ==(_ lhs: Counter, _ rhs: Counter) -> Bool {
+    return lhs === rhs || lhs.count == rhs.count
+  }
 }
 
 // MARK: - Structured Types
@@ -334,6 +364,62 @@
   }
 }
 
+/// A type which encodes as an array directly through a single value container.
+struct Numbers : Codable, Equatable {
+  let values = [4, 8, 15, 16, 23, 42]
+
+  init() {}
+
+  init(from decoder: Decoder) throws {
+    let container = try decoder.singleValueContainer()
+    let decodedValues = try container.decode([Int].self)
+    guard decodedValues == values else {
+      throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "The Numbers are wrong!"))
+    }
+  }
+
+  func encode(to encoder: Encoder) throws {
+    var container = encoder.singleValueContainer()
+    try container.encode(values)
+  }
+
+  static func ==(_ lhs: Numbers, _ rhs: Numbers) -> Bool {
+    return lhs.values == rhs.values
+  }
+
+  static var testValue: Numbers {
+    return Numbers()
+  }
+}
+
+/// A type which encodes as a dictionary directly through a single value container.
+fileprivate final class Mapping : Codable, Equatable {
+  let values: [String : URL]
+
+  init(values: [String : URL]) {
+    self.values = values
+  }
+
+  init(from decoder: Decoder) throws {
+    let container = try decoder.singleValueContainer()
+    values = try container.decode([String : URL].self)
+  }
+
+  func encode(to encoder: Encoder) throws {
+    var container = encoder.singleValueContainer()
+    try container.encode(values)
+  }
+
+  static func ==(_ lhs: Mapping, _ rhs: Mapping) -> Bool {
+    return lhs === rhs || lhs.values == rhs.values
+  }
+
+  static var testValue: Mapping {
+    return Mapping(values: ["Apple": URL(string: "http://apple.com")!,
+                            "localhost": URL(string: "http://127.0.0.1")!])
+  }
+}
+
 struct NestedContainersTestType : Encodable {
   let testSuperEncoder: Bool
 
@@ -424,20 +510,47 @@
   }
 }
 
+// MARK: - Helper Types
+
+/// Wraps a type T so that it can be encoded at the top level of a payload.
+fileprivate struct TopLevelWrapper<T> : Codable, Equatable where T : Codable, T : Equatable {
+  let value: T
+
+  init(_ value: T) {
+    self.value = value
+  }
+
+  func encode(to encoder: Encoder) throws {
+    var container = encoder.unkeyedContainer()
+    try container.encode(value)
+  }
+
+  init(from decoder: Decoder) throws {
+    var container = try decoder.unkeyedContainer()
+    value = try container.decode(T.self)
+    assert(container.isAtEnd)
+  }
+
+  static func ==(_ lhs: TopLevelWrapper<T>, _ rhs: TopLevelWrapper<T>) -> Bool {
+    return lhs.value == rhs.value
+  }
+}
+
 // MARK: - Run Tests
 
 #if !FOUNDATION_XCTEST
 var PropertyListEncoderTests = TestSuite("TestPropertyListEncoder")
-PropertyListEncoderTests.test("testEncodingTopLevelEmptyStruct")        { TestPropertyListEncoder().testEncodingTopLevelEmptyStruct()        }
-PropertyListEncoderTests.test("testEncodingTopLevelEmptyClass")         { TestPropertyListEncoder().testEncodingTopLevelEmptyClass()         }
-PropertyListEncoderTests.test("testEncodingTopLevelSingleValueEnum")    { TestPropertyListEncoder().testEncodingTopLevelSingleValueEnum()    }
-PropertyListEncoderTests.test("testEncodingTopLevelSingleValueStruct")  { TestPropertyListEncoder().testEncodingTopLevelSingleValueStruct()  }
-PropertyListEncoderTests.test("testEncodingTopLevelSingleValueClass")   { TestPropertyListEncoder().testEncodingTopLevelSingleValueClass()   }
-PropertyListEncoderTests.test("testEncodingTopLevelStructuredStruct")   { TestPropertyListEncoder().testEncodingTopLevelStructuredStruct()   }
-PropertyListEncoderTests.test("testEncodingTopLevelStructuredClass")    { TestPropertyListEncoder().testEncodingTopLevelStructuredClass()    }
-PropertyListEncoderTests.test("testEncodingTopLevelStructuredClass")    { TestPropertyListEncoder().testEncodingTopLevelStructuredClass()    }
+PropertyListEncoderTests.test("testEncodingTopLevelEmptyStruct") { TestPropertyListEncoder().testEncodingTopLevelEmptyStruct() }
+PropertyListEncoderTests.test("testEncodingTopLevelEmptyClass") { TestPropertyListEncoder().testEncodingTopLevelEmptyClass() }
+PropertyListEncoderTests.test("testEncodingTopLevelSingleValueEnum") { TestPropertyListEncoder().testEncodingTopLevelSingleValueEnum() }
+PropertyListEncoderTests.test("testEncodingTopLevelSingleValueStruct") { TestPropertyListEncoder().testEncodingTopLevelSingleValueStruct() }
+PropertyListEncoderTests.test("testEncodingTopLevelSingleValueClass") { TestPropertyListEncoder().testEncodingTopLevelSingleValueClass() }
+PropertyListEncoderTests.test("testEncodingTopLevelStructuredStruct") { TestPropertyListEncoder().testEncodingTopLevelStructuredStruct() }
+PropertyListEncoderTests.test("testEncodingTopLevelStructuredClass") { TestPropertyListEncoder().testEncodingTopLevelStructuredClass() }
+PropertyListEncoderTests.test("testEncodingTopLevelStructuredSingleStruct") { TestPropertyListEncoder().testEncodingTopLevelStructuredSingleStruct() }
+PropertyListEncoderTests.test("testEncodingTopLevelStructuredSingleClass") { TestPropertyListEncoder().testEncodingTopLevelStructuredSingleClass() }
 PropertyListEncoderTests.test("testEncodingTopLevelDeepStructuredType") { TestPropertyListEncoder().testEncodingTopLevelDeepStructuredType() }
-PropertyListEncoderTests.test("testNestedContainerCodingPaths")         { TestPropertyListEncoder().testNestedContainerCodingPaths()         }
-PropertyListEncoderTests.test("testSuperEncoderCodingPaths")            { TestPropertyListEncoder().testSuperEncoderCodingPaths()            }
+PropertyListEncoderTests.test("testNestedContainerCodingPaths") { TestPropertyListEncoder().testNestedContainerCodingPaths() }
+PropertyListEncoderTests.test("testSuperEncoderCodingPaths") { TestPropertyListEncoder().testSuperEncoderCodingPaths() }
 runAllTests()
 #endif
diff --git a/test/stdlib/TestProgress.swift b/test/stdlib/TestProgress.swift
new file mode 100644
index 0000000..3667668
--- /dev/null
+++ b/test/stdlib/TestProgress.swift
@@ -0,0 +1,76 @@
+// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+// Licensed under Apache License v2.0 with Runtime Library Exception
+//
+// See https://swift.org/LICENSE.txt for license information
+// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+//
+//===----------------------------------------------------------------------===//
+//
+// RUN: %target-run-simple-swift
+// REQUIRES: executable_test
+// REQUIRES: objc_interop
+
+import Foundation
+
+#if FOUNDATION_XCTEST
+    import XCTest
+    class TestProgressSuper : XCTestCase { }
+#else
+    import StdlibUnittest
+    class TestProgressSuper { }
+#endif
+
+class TestProgress : TestProgressSuper {
+    func testUserInfoConveniences() {
+        if #available(OSX 10.13, iOS 11.0, watchOS 4.0, tvOS 11.0, *) {
+            let p = Progress(parent:nil, userInfo: nil)
+            
+            expectNil(p.userInfo[.throughputKey])
+            expectNil(p.throughput)
+            p.throughput = 50
+            expectEqual(p.throughput, 50)
+            expectNotNil(p.userInfo[.throughputKey])
+            
+            expectNil(p.userInfo[.estimatedTimeRemainingKey])
+            expectNil(p.estimatedTimeRemaining)
+            p.estimatedTimeRemaining = 100
+            expectEqual(p.estimatedTimeRemaining, 100)
+            expectNotNil(p.userInfo[.estimatedTimeRemainingKey])
+            
+            expectNil(p.userInfo[.fileTotalCountKey])
+            expectNil(p.fileTotalCount)
+            p.fileTotalCount = 42
+            expectEqual(p.fileTotalCount, 42)
+            expectNotNil(p.userInfo[.fileTotalCountKey])
+            
+            expectNil(p.userInfo[.fileCompletedCountKey])
+            expectNil(p.fileCompletedCount)
+            p.fileCompletedCount = 24
+            expectEqual(p.fileCompletedCount, 24)
+            expectNotNil(p.userInfo[.fileCompletedCountKey])
+        }
+    }
+    
+    func testPerformAsCurrent() {
+        if #available(OSX 10.11, iOS 8.0, *) {
+            // This test can be enabled once <rdar://problem/31867347> is in the SDK
+            /*
+            let p = Progress.discreteProgress(totalUnitCount: 10)
+            let r = p.performAsCurrent(withPendingUnitCount: 10) {
+                expectNotNil(Progress.current())
+                return 42
+            }
+            expectEqual(r, 42)
+            expectEqual(p.completedUnitCount, 10)
+            expectNil(Progress.current())
+            */
+        }
+    }
+}
+
+#if !FOUNDATION_XCTEST
+let ProgressTests = TestSuite("TestProgress")
+ProgressTests.test("testUserInfoConveniences") { TestProgress().testUserInfoConveniences() }
+ProgressTests.test("testPerformAsCurrent") { TestProgress().testPerformAsCurrent() }
+runAllTests()
+#endif
diff --git a/test/stdlib/TestTimeZone.swift b/test/stdlib/TestTimeZone.swift
index b08c7c0..cf6b710 100644
--- a/test/stdlib/TestTimeZone.swift
+++ b/test/stdlib/TestTimeZone.swift
@@ -6,8 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 //
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang %S/Inputs/FoundationBridge/FoundationBridge.m -c -o %t/FoundationBridgeObjC.o -g
 // RUN: %target-build-swift %s -I %S/Inputs/FoundationBridge/ -Xlinker %t/FoundationBridgeObjC.o -o %t/TestTimeZone
diff --git a/test/stdlib/UIKit.swift b/test/stdlib/UIKit.swift
index 3c86663..20bad88 100644
--- a/test/stdlib/UIKit.swift
+++ b/test/stdlib/UIKit.swift
@@ -107,4 +107,51 @@
                         equal: (==))
 }
 
+#if os(iOS) || os(tvOS)
+UIKitTests.test("UIContentSizeCategory comparison") {
+    if #available(iOS 11.0, tvOS 11.0, *) {
+        expectTrue(UIContentSizeCategory.large < UIContentSizeCategory.extraLarge)
+        expectTrue(UIContentSizeCategory.large <= UIContentSizeCategory.extraLarge)
+        expectFalse(UIContentSizeCategory.large >= UIContentSizeCategory.extraLarge)
+        expectFalse(UIContentSizeCategory.large > UIContentSizeCategory.extraLarge)
+        expectFalse(UIContentSizeCategory.large == UIContentSizeCategory.extraLarge)
+        
+        expectTrue(UIContentSizeCategory.extraLarge > UIContentSizeCategory.large)
+        expectTrue(UIContentSizeCategory.extraLarge >= UIContentSizeCategory.large)
+        expectFalse(UIContentSizeCategory.extraLarge < UIContentSizeCategory.large)
+        expectFalse(UIContentSizeCategory.extraLarge <= UIContentSizeCategory.large)
+        expectFalse(UIContentSizeCategory.extraLarge == UIContentSizeCategory.large)
+        
+        expectTrue(UIContentSizeCategory.large == UIContentSizeCategory.large)
+        expectTrue(UIContentSizeCategory.large >= UIContentSizeCategory.large)
+        expectTrue(UIContentSizeCategory.large <= UIContentSizeCategory.large)
+        expectFalse(UIContentSizeCategory.large > UIContentSizeCategory.large)
+        expectFalse(UIContentSizeCategory.large < UIContentSizeCategory.large)
+        
+        expectTrue(UIContentSizeCategory.accessibilityExtraExtraExtraLarge.isAccessibilityCategory)
+        expectFalse(UIContentSizeCategory.extraSmall.isAccessibilityCategory)
+    }
+}
+#endif
+
+#if os(iOS) || os(watchOS) || os(tvOS)
+UIKitTests.test("UIFontMetrics scaling") {
+    if #available(iOS 11.0, watchOS 4.0, tvOS 11.0, *) {
+        let metrics = UIFontTextStyle.headline.metrics
+        expectTrue(metrics != nil)
+    }
+}
+#endif
+
+#if os(iOS) || os(tvOS)
+UIKitTests.test("UIFocusEnvironment") {
+  if #available(iOS 11.0, tvOS 11.0, *) {
+    let item1 = UIView()
+    let item2 = UIView()
+    _ = item1.contains(item2)
+    _ = item1.isFocused
+  }
+}
+#endif
+
 runAllTests()
diff --git a/test/stdlib/UnavailableStringAPIs.swift.gyb b/test/stdlib/UnavailableStringAPIs.swift.gyb
index c946caa..eefe1c0 100644
--- a/test/stdlib/UnavailableStringAPIs.swift.gyb
+++ b/test/stdlib/UnavailableStringAPIs.swift.gyb
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %gyb -D_runtime=%target-runtime %s -o %t/main.swift
 // RUN: %line-directive %t/main.swift -- %target-swift-frontend -typecheck -verify %t/main.swift
 
diff --git a/test/stdlib/VarArgs.swift b/test/stdlib/VarArgs.swift
index ee2801b..9508835 100644
--- a/test/stdlib/VarArgs.swift
+++ b/test/stdlib/VarArgs.swift
@@ -100,5 +100,29 @@
 }
 test_varArgs4()
 
+func test_varArgs5() {
+  var args = [CVarArg]()
+
+  // Confirm the absence of a bug (on x86-64) wherein floats were stored in
+  // the GP register-save area after the SSE register-save area was
+  // exhausted, rather than spilling into the overflow argument area.
+  //
+  // This is not caught by test_varArgs1 above, because it exhauses the
+  // GP register-save area before the SSE area.
+
+  var format = "rdar-32547102: "
+  for i in 0..<12 {
+    args.append(Float(i))
+    format += "%.1f "
+  }
+
+  // CHECK: rdar-32547102: 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0
+  withVaList(args) {
+    vprintf(format + "\n", $0)
+  }
+}
+test_varArgs5()
+
+
 // CHECK: done.
 print("done.")
diff --git a/test/stdlib/WeakMirror.swift b/test/stdlib/WeakMirror.swift
index 13f5edd..252e299 100644
--- a/test/stdlib/WeakMirror.swift
+++ b/test/stdlib/WeakMirror.swift
@@ -9,8 +9,7 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 //
 //===----------------------------------------------------------------------===//
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: if [ %target-runtime == "objc" ]; \
 // RUN: then \
diff --git a/test/stdlib/simd.swift.gyb b/test/stdlib/simd.swift.gyb
index d888ada..b013303 100644
--- a/test/stdlib/simd.swift.gyb
+++ b/test/stdlib/simd.swift.gyb
@@ -279,9 +279,6 @@
     }
   }
 
-  //  Round-trip through C matrix type.
-  expectEqualTest(${mat}, ${mattype}(${mat}.cmatrix), sameValue: same)
-
 %     end # for rows
 %   end # for cols
 % end # for type
diff --git a/test/stdlib/subString.swift b/test/stdlib/subString.swift
index a0746a5..16ba831 100644
--- a/test/stdlib/subString.swift
+++ b/test/stdlib/subString.swift
@@ -12,7 +12,7 @@
   expectEqual(x[i], y[i])
 }
 
-SubstringTests.test("String") {
+SubstringTests.test("Equality") {
   let s = "abcdefg"
   let s1 = s[s.index(s.startIndex, offsetBy: 2) ..<
     s.index(s.startIndex, offsetBy: 4)]
@@ -22,6 +22,74 @@
   expectEqual(s1, "cd")
   expectEqual(s2, "cd")
   expectEqual(s3, "cd")
+	expectTrue("" == s.dropFirst(s.count))
+	expectTrue(s.dropFirst().dropFirst(s.count) == s.dropFirst(s.count))
+  
+  expectEqual("ab" as String, s.prefix(2))
+  expectEqual("fg" as String, s.suffix(2))
+  
+#if _runtime(_ObjC)
+  let emoji: String = s + "😄👍🏽🇫🇷👩‍👩‍👧‍👦🙈" + "😡🇧🇪🇨🇦🇮🇳"
+  expectTrue(s == s[...])
+  expectTrue(s[...] == s)
+  expectTrue(s.dropFirst(2) != s)
+  expectTrue(s == s.dropFirst(0))
+  expectTrue(s != s.dropFirst(1))
+  expectTrue(s != s.dropLast(1))
+  expectEqual(s[...], s[...])
+  expectEqual(s.dropFirst(0), s.dropFirst(0))
+  expectTrue(s == s.dropFirst(0))
+  expectTrue(s.dropFirst(2) != s.dropFirst(1))
+  expectNotEqual(s.dropLast(2), s.dropLast(1))
+  expectEqual(s.dropFirst(1), s.dropFirst(1))
+  expectTrue(s != s[...].dropFirst(1))
+  let i = emoji.index(of: "😄")!
+  expectEqual("😄👍🏽" as String, emoji[i...].prefix(2))
+  expectTrue("😄👍🏽🇫🇷👩‍👩‍👧‍👦🙈😡🇧🇪" as String == emoji[i...].dropLast(2))
+  expectTrue("🇫🇷👩‍👩‍👧‍👦🙈😡🇧🇪" as String == emoji[i...].dropLast(2).dropFirst(2))
+  expectTrue(s as String != emoji[i...].dropLast(2).dropFirst(2))
+  expectEqualSequence("😄👍🏽🇫🇷👩‍👩‍👧‍👦🙈😡🇧🇪" as String, emoji[i...].dropLast(2))
+  expectEqualSequence("🇫🇷👩‍👩‍👧‍👦🙈😡🇧🇪" as String, emoji[i...].dropLast(2).dropFirst(2))
+#endif
+	// equatable conformance
+	expectTrue("one,two,three".split(separator: ",").contains("two"))
+	expectTrue("one,two,three".split(separator: ",") == ["one","two","three"])
+}
+
+SubstringTests.test("Comparison") {
+  var s = "abc"
+	s += "defg"
+	expectFalse(s < s[...])
+	expectTrue(s <= s[...])
+	expectTrue(s >= s[...])
+	expectFalse(s > s[...])
+	expectFalse(s[...] < s)
+	expectTrue(s[...] <= s)
+	expectTrue(s[...] >= s)
+	expectFalse(s[...] > s)
+	expectFalse(s[...] < s[...])
+	expectTrue(s[...] <= s[...])
+	expectTrue(s[...] >= s[...])
+	expectFalse(s[...] > s[...])
+
+	expectTrue(s < s.dropFirst())
+	expectFalse(s > s.dropFirst())
+	expectFalse(s < s.dropLast())
+	expectTrue(s > s.dropLast())
+	expectTrue(s.dropFirst() < s.dropFirst(2))
+	expectFalse(s.dropFirst() > s.dropFirst(2))
+	expectFalse(s.dropLast() < s.dropLast(2))
+	expectTrue(s.dropLast() > s.dropLast(2))
+	expectFalse(s.dropFirst() < s.dropFirst().dropLast())
+	expectTrue(s.dropFirst() > s.dropFirst().dropLast())
+	expectTrue(s.dropFirst() > s)
+	expectTrue(s.dropFirst() > s[...])
+	expectTrue(s >= s[...])
+	expectTrue(s.dropFirst() >= s.dropFirst())
+
+	// comparable conformance
+	expectEqualSequence("pen,pineapple,apple,pen".split(separator: ",").sorted(),
+		["apple", "pen", "pen", "pineapple"])
 }
 
 SubstringTests.test("CharacterView") {
diff --git a/test/stdlib/tgmath_optimized.swift b/test/stdlib/tgmath_optimized.swift
index 2b0fcbd..9e65115 100644
--- a/test/stdlib/tgmath_optimized.swift
+++ b/test/stdlib/tgmath_optimized.swift
@@ -1,4 +1,4 @@
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out -Ounchecked
 // RUN: %target-run %t/a.out
 // REQUIRES: executable_test
diff --git a/tools/SourceKit/include/SourceKit/Core/LangSupport.h b/tools/SourceKit/include/SourceKit/Core/LangSupport.h
index 9514a11..a02d1c6 100644
--- a/tools/SourceKit/include/SourceKit/Core/LangSupport.h
+++ b/tools/SourceKit/include/SourceKit/Core/LangSupport.h
@@ -153,6 +153,7 @@
     Literal,
     CustomCompletion,
     Identifier,
+    Description,
   };
   Kind kind;
   bool hide;
diff --git a/tools/SourceKit/lib/SwiftLang/CodeCompletion.h b/tools/SourceKit/lib/SwiftLang/CodeCompletion.h
index ae0de57..681340f 100644
--- a/tools/SourceKit/lib/SwiftLang/CodeCompletion.h
+++ b/tools/SourceKit/lib/SwiftLang/CodeCompletion.h
@@ -231,13 +231,13 @@
   // FIXME: hide individual custom completions
 
   llvm::StringMap<bool> hideModule;
-  llvm::StringMap<bool> hideByName;
+  llvm::StringMap<bool> hideByFilterName;
+  llvm::StringMap<bool> hideByDescription;
 
   bool hideCompletion(Completion *completion) const;
-  bool hideCompletion(SwiftResult *completion,
-                      StringRef name,
-                      void *customKind = nullptr) const;
-  bool hideName(StringRef name) const;
+  bool hideCompletion(SwiftResult *completion, StringRef name,
+                      StringRef description, void *customKind = nullptr) const;
+  bool hideFilterName(StringRef name) const;
 };
 
 } // end namespace CodeCompletion
diff --git a/tools/SourceKit/lib/SwiftLang/CodeCompletionOrganizer.cpp b/tools/SourceKit/lib/SwiftLang/CodeCompletionOrganizer.cpp
index c54b3f4..68fcae6 100644
--- a/tools/SourceKit/lib/SwiftLang/CodeCompletionOrganizer.cpp
+++ b/tools/SourceKit/lib/SwiftLang/CodeCompletionOrganizer.cpp
@@ -447,22 +447,32 @@
   }
 }
 
-bool FilterRules::hideName(StringRef name) const {
-  auto I = hideByName.find(name);
-  if (I != hideByName.end())
-      return I->getValue();
+bool FilterRules::hideFilterName(StringRef name) const {
+  auto I = hideByFilterName.find(name);
+  if (I != hideByFilterName.end())
+    return I->getValue();
   return hideAll;
 }
 
 bool FilterRules::hideCompletion(Completion *completion) const {
-  return hideCompletion(completion, completion->getName(), completion->getCustomKind());
+  return hideCompletion(completion, completion->getName(),
+                        completion->getDescription(),
+                        completion->getCustomKind());
 }
 
-bool FilterRules::hideCompletion(SwiftResult *completion, StringRef name, void *customKind) const {
+bool FilterRules::hideCompletion(SwiftResult *completion, StringRef filterName,
+                                 StringRef description,
+                                 void *customKind) const {
 
-  if (!name.empty()) {
-    auto I = hideByName.find(name);
-    if (I != hideByName.end())
+  if (!description.empty()) {
+    auto I = hideByDescription.find(description);
+    if (I != hideByDescription.end())
+      return I->getValue();
+  }
+
+  if (!filterName.empty()) {
+    auto I = hideByFilterName.find(filterName);
+    if (I != hideByFilterName.end())
       return I->getValue();
   }
 
diff --git a/tools/SourceKit/lib/SwiftLang/SwiftCompletion.cpp b/tools/SourceKit/lib/SwiftLang/SwiftCompletion.cpp
index 591f62d..23a8392 100644
--- a/tools/SourceKit/lib/SwiftLang/SwiftCompletion.cpp
+++ b/tools/SourceKit/lib/SwiftLang/SwiftCompletion.cpp
@@ -590,11 +590,10 @@
 
 static CodeCompletionKeywordKind
 getCodeCompletionKeywordKindForUID(UIdent uid) {
-#define SIL_KEYWORD(kw)
-#define KEYWORD(kw)                                                            \
-  static UIdent Keyword##kw##UID("source.lang.swift.keyword." #kw);            \
-  if (uid == Keyword##kw##UID) {                                               \
-    return CodeCompletionKeywordKind::kw_##kw;                                 \
+#define SWIFT_KEYWORD(kw) \
+  static UIdent Keyword##kw##UID("source.lang.swift.keyword." #kw); \
+  if (uid == Keyword##kw##UID) { \
+    return CodeCompletionKeywordKind::kw_##kw; \
   }
 #include "swift/Syntax/TokenKinds.def"
 
@@ -888,7 +887,12 @@
         // Note: name is null-terminated.
         if (canonicalizeFilterName(name.data(), canonName))
           continue;
-        filterRules.hideByName[canonName] = rule.hide;
+        filterRules.hideByFilterName[canonName] = rule.hide;
+      }
+      break;
+    case FilterRule::Description:
+      for (auto name : rule.names) {
+        filterRules.hideByDescription[name] = rule.hide;
       }
       break;
     case FilterRule::Module:
@@ -956,13 +960,19 @@
     if (!includeInnerOperators && result->isOperator())
       continue;
 
-    llvm::SmallString<64> name;
+    llvm::SmallString<64> filterName;
     {
-      llvm::raw_svector_ostream OSS(name);
+      llvm::raw_svector_ostream OSS(filterName);
       CodeCompletion::CompletionBuilder::getFilterName(
           result->getCompletionString(), OSS);
     }
-    if (rules.hideCompletion(result, name))
+    llvm::SmallString<64> description;
+    {
+      llvm::raw_svector_ostream OSS(description);
+      CodeCompletion::CompletionBuilder::getDescription(
+          result, OSS, /*leadingPunctuation=*/false);
+    }
+    if (rules.hideCompletion(result, filterName, description))
       continue;
 
     bool inner = checkInnerResult(result, hasDot, hasQDot, hasInit);
@@ -1041,11 +1051,11 @@
                            options.addInnerOperators, hasDot, hasQDot, hasInit,
                            rules);
     if (options.addInnerOperators) {
-      if (hasInit && !rules.hideName("("))
+      if (hasInit && !rules.hideFilterName("("))
         innerResults.insert(innerResults.begin(), buildParen());
-      if (hasDot && !rules.hideName("."))
+      if (hasDot && !rules.hideFilterName("."))
         innerResults.insert(innerResults.begin(), buildDot());
-      if (hasQDot && !rules.hideName("?."))
+      if (hasQDot && !rules.hideFilterName("?."))
         innerResults.insert(innerResults.begin(), buildQDot());
     }
 
@@ -1096,11 +1106,11 @@
     }
 
     if (options.addInnerOperators) {
-      if (hasInit && !rules.hideName("("))
+      if (hasInit && !rules.hideFilterName("("))
         innerResults.insert(innerResults.begin(), buildParen());
-      if (hasDot && !rules.hideName("."))
+      if (hasDot && !rules.hideFilterName("."))
         innerResults.insert(innerResults.begin(), buildDot());
-      if (hasQDot && !rules.hideName("?."))
+      if (hasQDot && !rules.hideFilterName("?."))
         innerResults.insert(innerResults.begin(), buildQDot());
     }
 
diff --git a/tools/SourceKit/tools/sourcekitd/lib/API/Requests.cpp b/tools/SourceKit/tools/sourcekitd/lib/API/Requests.cpp
index 6dc9d8b..f5b6ec4 100644
--- a/tools/SourceKit/tools/sourcekitd/lib/API/Requests.cpp
+++ b/tools/SourceKit/tools/sourcekitd/lib/API/Requests.cpp
@@ -123,6 +123,7 @@
 static LazySKDUID KindLiteral("source.codecompletion.literal");
 static LazySKDUID KindCustom("source.codecompletion.custom");
 static LazySKDUID KindIdentifier("source.codecompletion.identifier");
+static LazySKDUID KindDescription("source.codecompletion.description");
 
 static UIdent DiagKindNote("source.diagnostic.severity.note");
 static UIdent DiagKindWarning("source.diagnostic.severity.warning");
@@ -1719,6 +1720,8 @@
         rule.kind = FilterRule::CustomCompletion;
       } else if (kind == KindIdentifier) {
         rule.kind = FilterRule::Identifier;
+      } else if (kind == KindDescription) {
+        rule.kind = FilterRule::Description;
       } else {
         // Warning: unknown
       }
@@ -1746,6 +1749,16 @@
         rule.names.assign(names.begin(), names.end());
         break;
       }
+      case FilterRule::Description: {
+        SmallVector<const char *, 8> names;
+        if (dict.getStringArray(KeyNames, names, false)) {
+          failed = true;
+          CCC.failed("filter rule missing required key 'key.names'");
+          return true;
+        }
+        rule.names.assign(names.begin(), names.end());
+        break;
+      }
       case FilterRule::Keyword:
       case FilterRule::Literal:
       case FilterRule::CustomCompletion: {
diff --git a/tools/driver/CMakeLists.txt b/tools/driver/CMakeLists.txt
index ef4fd1c..cd9f779 100644
--- a/tools/driver/CMakeLists.txt
+++ b/tools/driver/CMakeLists.txt
@@ -31,6 +31,10 @@
   DESTINATION "swift-autolink-extract${CMAKE_EXECUTABLE_SUFFIX}"
   WORKING_DIRECTORY "${SWIFT_RUNTIME_OUTPUT_INTDIR}")
 
+add_swift_tool_symlink(swiftc swift compiler)
+add_swift_tool_symlink(swift-autolink-extract swift autolink-driver)
+add_swift_tool_symlink(swift-format swift editor-integration)
+
 # If building as part of clang, make sure the headers are installed.
 if(NOT SWIFT_BUILT_STANDALONE)
   add_dependencies(swift clang-headers)
diff --git a/tools/sil-opt/SILOpt.cpp b/tools/sil-opt/SILOpt.cpp
index f79a7ed..311d026 100644
--- a/tools/sil-opt/SILOpt.cpp
+++ b/tools/sil-opt/SILOpt.cpp
@@ -289,28 +289,35 @@
   SILOpts.AssumeUnqualifiedOwnershipWhenParsing =
     AssumeUnqualifiedOwnershipWhenParsing;
 
-  switch (EnforceExclusivity) {
-  case EnforceExclusivityMode::Unchecked:
-    // This option is analogous to the -Ounchecked optimization setting.
-    // It will disable dynamic checking but still diagnose statically.
-    SILOpts.EnforceExclusivityStatic = true;
-    SILOpts.EnforceExclusivityDynamic = false;
-    break;
-  case EnforceExclusivityMode::Checked:
-    SILOpts.EnforceExclusivityStatic = true;
-    SILOpts.EnforceExclusivityDynamic = true;
-    break;
-  case EnforceExclusivityMode::DynamicOnly:
-    // This option is intended for staging purposes. The intent is that
-    // it will eventually be removed.
-    SILOpts.EnforceExclusivityStatic = false;
-    SILOpts.EnforceExclusivityDynamic = true;
-    break;
-  case EnforceExclusivityMode::None:
-    // This option is for staging purposes.
-    SILOpts.EnforceExclusivityStatic = false;
-    SILOpts.EnforceExclusivityDynamic = false;
-    break;
+  if (EnforceExclusivity.getNumOccurrences() == 0) {
+    if (SILOpts.Optimization > SILOptions::SILOptMode::None) {
+      SILOpts.EnforceExclusivityStatic = false;
+      SILOpts.EnforceExclusivityDynamic = false;
+    }
+  } else {
+    switch (EnforceExclusivity) {
+    case EnforceExclusivityMode::Unchecked:
+      // This option is analogous to the -Ounchecked optimization setting.
+      // It will disable dynamic checking but still diagnose statically.
+      SILOpts.EnforceExclusivityStatic = true;
+      SILOpts.EnforceExclusivityDynamic = false;
+      break;
+    case EnforceExclusivityMode::Checked:
+      SILOpts.EnforceExclusivityStatic = true;
+      SILOpts.EnforceExclusivityDynamic = true;
+      break;
+    case EnforceExclusivityMode::DynamicOnly:
+      // This option is intended for staging purposes. The intent is that
+      // it will eventually be removed.
+      SILOpts.EnforceExclusivityStatic = false;
+      SILOpts.EnforceExclusivityDynamic = true;
+      break;
+    case EnforceExclusivityMode::None:
+      // This option is for staging purposes.
+      SILOpts.EnforceExclusivityStatic = false;
+      SILOpts.EnforceExclusivityDynamic = false;
+      break;
+    }
   }
 
   // Load the input file.
diff --git a/tools/swift-api-digester/swift-api-digester.cpp b/tools/swift-api-digester/swift-api-digester.cpp
index e21d589..80533ca 100644
--- a/tools/swift-api-digester/swift-api-digester.cpp
+++ b/tools/swift-api-digester/swift-api-digester.cpp
@@ -173,21 +173,6 @@
 typedef std::map<NodePtr, NodePtr> ParentMap;
 typedef std::vector<NodePtr> NodeVector;
 
-class SDKContext {
-  llvm::StringSet<> TextData;
-  std::vector<std::unique_ptr<SDKNode>> OwnedNodes;
-
-public:
-  SDKNode* own(SDKNode *Node) {
-    assert(Node);
-    OwnedNodes.emplace_back(Node);
-    return Node;
-  }
-  StringRef buffer(StringRef Text) {
-    return TextData.insert(Text).first->getKey();
-  }
-};
-
 // The interface used to visit the SDK tree.
 class SDKNodeVisitor {
   friend SDKNode;
@@ -218,6 +203,39 @@
   virtual ~MatchedNodeListener() = default;
 };
 
+using NodePairVector = llvm::MapVector<NodePtr, NodePtr>;
+
+// This map keeps track of updated nodes; thus we can conveniently find out what
+// is the counterpart of a node before or after being updated.
+class UpdatedNodesMap : public MatchedNodeListener {
+  NodePairVector MapImpl;
+  UpdatedNodesMap(const UpdatedNodesMap& that) = delete;
+public:
+  UpdatedNodesMap() = default;
+  NodePtr findUpdateCounterpart(const SDKNode *Node) const;
+  void foundMatch(NodePtr Left, NodePtr Right) override {
+    assert(Left && Right && "Not update operation.");
+    MapImpl.insert({Left, Right});
+  }
+};
+
+class SDKContext {
+  llvm::StringSet<> TextData;
+  llvm::BumpPtrAllocator Allocator;
+  UpdatedNodesMap UpdateMap;
+
+public:
+  llvm::BumpPtrAllocator &allocator() {
+    return Allocator;
+  }
+  StringRef buffer(StringRef Text) {
+    return TextData.insert(Text).first->getKey();
+  }
+  UpdatedNodesMap &getNodeUpdateMap() {
+    return UpdateMap;
+  }
+};
+
 // A node matcher will traverse two trees of SDKNode and find matched nodes
 struct NodeMatcher {
   virtual void match() = 0;
@@ -370,6 +388,16 @@
   bool isStatic() const { return IsStatic; };
 };
 
+NodePtr UpdatedNodesMap::findUpdateCounterpart(const SDKNode *Node) const {
+  assert(Node->isAnnotatedAs(NodeAnnotation::Updated) && "Not update operation.");
+  auto FoundPair = std::find_if(MapImpl.begin(), MapImpl.end(),
+                      [&](std::pair<NodePtr, NodePtr> Pair) {
+    return Pair.second == Node || Pair.first == Node;
+  });
+  assert(FoundPair != MapImpl.end() && "Cannot find update counterpart.");
+  return Node == FoundPair->first ? FoundPair->second : FoundPair->first;
+}
+
 class SDKNodeType : public SDKNode {
   std::vector<TypeAttrKind> TypeAttributes;
 
@@ -1069,15 +1097,14 @@
 }
 
 SDKNode *SDKNodeInitInfo::createSDKNode(SDKNodeKind Kind) {
-  SDKNode *Result;
   switch(Kind) {
 #define NODE_KIND(X)                                                           \
 case SDKNodeKind::X:                                                           \
-  Result = static_cast<SDKNode*>(new SDKNode##X(*this));                       \
+  return static_cast<SDKNode*>(new (Ctx.allocator().Allocate<SDKNode##X>())    \
+    SDKNode##X(*this));                                                        \
   break;
 #include "swift/IDE/DigesterEnums.def"
   }
-  return Ctx.own(Result);
 }
 
 // Recursively construct a node that represents a type, for instance,
@@ -1610,6 +1637,8 @@
         } else {
           return false;
         }
+        R->annotate(NodeAnnotation::PropertyName);
+        R->addAnnotateComment(NodeAnnotation::PropertyName, A->getPrintedName());
         foundMatch(R, A);
         return true;
       }
@@ -1840,7 +1869,8 @@
       return FuncPriority;
     } else {
       static NameMatchKind OtherPriority[] = { NameMatchKind::PrintedNameAndUSR,
-                                               NameMatchKind::PrintedName };
+                                               NameMatchKind::PrintedName,
+                                               NameMatchKind::USR };
       return OtherPriority;
     }
   }
@@ -1937,30 +1967,6 @@
   virtual ~SDKTreeDiffPass() {}
 };
 
-using NodePairVector = std::vector<std::pair<NodePtr, NodePtr>>;
-
-// This map keeps track of updated nodes; thus we can conveniently find out what
-// is the counterpart of a node before or after being updated.
-class UpdatedNodesMap : public MatchedNodeListener {
-  NodePairVector MapImpl;
-
-public:
-  void foundMatch(NodePtr Left, NodePtr Right) override {
-    assert(Left && Right && "Not update operation.");
-    MapImpl.push_back(std::make_pair(Left, Right));
-  }
-
-  NodePtr findUpdateCounterpart(const SDKNode *Node) const {
-    assert(Node->isAnnotatedAs(NodeAnnotation::Updated) && "Not update operation.");
-    auto FoundPair = std::find_if(MapImpl.begin(), MapImpl.end(),
-                        [&](std::pair<NodePtr, NodePtr> Pair) {
-      return Pair.second == Node || Pair.first == Node;
-    });
-    assert(FoundPair != MapImpl.end() && "Cannot find update counterpart.");
-    return Node == FoundPair->first ? FoundPair->second : FoundPair->first;
-  }
-};
-
 static void detectFuncDeclChange(NodePtr L, NodePtr R) {
   assert(L->getKind() == R->getKind());
   if (auto LF = dyn_cast<SDKNodeAbstractFunc>(L)) {
@@ -2018,10 +2024,10 @@
       Right->removeChild(R);
   }
 
-  std::unique_ptr<UpdatedNodesMap> UpdateMap;
+  UpdatedNodesMap &UpdateMap;
 
 public:
-  PrunePass() : UpdateMap(new UpdatedNodesMap()) {}
+  PrunePass(UpdatedNodesMap &UpdateMap) : UpdateMap(UpdateMap) {}
 
   void foundRemoveAddMatch(NodePtr Left, NodePtr Right) override {
     if (!Left)
@@ -2041,7 +2047,7 @@
     Left->annotate(NodeAnnotation::Updated);
     Right->annotate(NodeAnnotation::Updated);
     // Push the updated node to the map for future reference.
-    UpdateMap->foundMatch(Left, Right);
+    UpdateMap.foundMatch(Left, Right);
 
     if (Left->getKind() != Right->getKind()) {
       assert(isa<SDKNodeType>(Left) && isa<SDKNodeType>(Right) &&
@@ -2096,10 +2102,6 @@
   void pass(NodePtr Left, NodePtr Right) override {
     foundMatch(Left, Right);
   }
-
-  std::unique_ptr<UpdatedNodesMap> getNodeUpdateMap() {
-    return std::move(UpdateMap);
-  }
 };
 
 // For a given SDK node tree, this will build up a mapping from USR to node
@@ -2159,9 +2161,18 @@
     auto diffParent = diffNode->getParent();
     assert(nodeParent && diffParent && "trying to check Root?");
 
+    // Move from global variable to a member variable.
     if (nodeParent->getKind() == SDKNodeKind::TypeDecl &&
         diffParent->getKind() == SDKNodeKind::Root)
-      TypeMemberDiffs.push_back({diffNode, node});
+      TypeMemberDiffs.insert({diffNode, node});
+    // Move from a member variable to another member variable
+    if (nodeParent->getKind() == SDKNodeKind::TypeDecl &&
+        diffParent->getKind() == SDKNodeKind::TypeDecl &&
+        declNode->isStatic() &&
+        nodeParent->getAs<SDKNodeDecl>()->getFullyQualifiedName() !=
+          diffParent->getAs<SDKNodeDecl>()->getFullyQualifiedName())
+      TypeMemberDiffs.insert({diffNode, node});
+    // Move from a getter/setter function to a property
     else if (node->getKind() == SDKNodeKind::Getter &&
              diffNode->getKind() == SDKNodeKind::Function &&
              node->isNameValid()) {
@@ -2216,7 +2227,7 @@
 
 class ChangeRefinementPass : public SDKTreeDiffPass, public SDKNodeVisitor {
   bool IsVisitingLeft;
-  std::unique_ptr<UpdatedNodesMap> UpdateMap;
+  UpdatedNodesMap &UpdateMap;
 
 #define ANNOTATE(Node, Counter, X, Y)                                          \
   auto ToAnnotate = IsVisitingLeft ? Node : Counter;                           \
@@ -2288,14 +2299,13 @@
   }
 
   bool isUnhandledCase(SDKNodeType *Node) {
-    auto Counter = UpdateMap->findUpdateCounterpart(Node)->getAs<SDKNodeType>();
+    auto Counter = UpdateMap.findUpdateCounterpart(Node)->getAs<SDKNodeType>();
     return Node->getTypeKind() == KnownTypeKind::Void ||
            Counter->getTypeKind() == KnownTypeKind::Void;
   }
 
 public:
-  ChangeRefinementPass(std::unique_ptr<UpdatedNodesMap> UpdateMap) :
-    UpdateMap(std::move(UpdateMap)) {}
+  ChangeRefinementPass(UpdatedNodesMap &UpdateMap) : UpdateMap(UpdateMap) {}
 
   void pass(NodePtr Left, NodePtr Right) override {
 
@@ -2311,7 +2321,7 @@
     if (!Node || !Node->isAnnotatedAs(NodeAnnotation::Updated) ||
         isUnhandledCase(Node))
       return;
-    auto Counter = const_cast<SDKNodeType*>(UpdateMap->
+    auto Counter = const_cast<SDKNodeType*>(UpdateMap.
       findUpdateCounterpart(Node)->getAs<SDKNodeType>());
 
     bool Result = detectWrapOptional(Node, Counter)||
@@ -2322,10 +2332,6 @@
     (void) Result;
     return;
   }
-
-  std::unique_ptr<UpdatedNodesMap> getNodeUpdateMap() {
-    return std::move(UpdateMap);
-  }
 };
 
 typedef std::vector<CommonDiffItem> DiffVector;
@@ -2452,6 +2458,9 @@
         return Node->getAnnotateComment(NodeAnnotation::ModernizeEnum);
       case NodeAnnotation::Rename:
         return Node->getAnnotateComment(NodeAnnotation::RenameNewName);
+      case NodeAnnotation::GetterToProperty:
+      case NodeAnnotation::SetterToProperty:
+        return Node->getAnnotateComment(NodeAnnotation::PropertyName);
       default:
         return StringRef();
     }
@@ -2637,7 +2646,7 @@
   DiagBag<MovedDeclDiag> MovedDecls;
   DiagBag<RemovedDeclDiag> RemovedDecls;
 
-  UpdatedNodesMap UpdateMap;
+  UpdatedNodesMap &UpdateMap;
   DiagnosisEmitter(UpdatedNodesMap &UpdateMap) : UpdateMap(UpdateMap) {}
 public:
   static void diagnosis(NodePtr LeftRoot, NodePtr RightRoot,
@@ -2937,26 +2946,6 @@
 namespace fs = llvm::sys::fs;
 namespace path = llvm::sys::path;
 
-static StringRef constructFullTypeName(NodePtr Node) {
-  assert(Node->getKind() == SDKNodeKind::TypeDecl);
-  std::vector<NodePtr> TypeChain;
-  for (auto C = Node; C->getKind() == SDKNodeKind::TypeDecl; C = C->getParent()) {
-    TypeChain.insert(TypeChain.begin(), C);
-  }
-  assert(TypeChain.front()->getParent()->getKind() == SDKNodeKind::Root);
-  llvm::SmallString<64> Buffer;
-  bool First = true;
-  for (auto N : TypeChain) {
-    if (First) {
-      First = false;
-    } else {
-      Buffer.append(".");
-    }
-    Buffer.append(N->getName());
-  }
-  return Node->getSDKContext().buffer(Buffer.str());
-}
-
 struct RenameDetectorForMemberDiff : public MatchedNodeListener {
   void foundMatch(NodePtr Left, NodePtr Right) override {
     detectRename(Left, Right);
@@ -2998,15 +2987,20 @@
   RenameDetectorForMemberDiff Detector;
   for (auto pair : diffFinder.getDiffs()) {
     auto left = pair.first;
+    auto leftParent = left->getParent();
     auto right = pair.second;
     auto rightParent = right->getParent();
 
     // SDK_CHANGE_TYPE_MEMBER(USR, new type context name, new printed name, self
     // index, old printed name)
     TypeMemberDiffItem item = {
-        right->getAs<SDKNodeDecl>()->getUsr(), constructFullTypeName(rightParent),
+        right->getAs<SDKNodeDecl>()->getUsr(),
+        rightParent->getAs<SDKNodeDecl>()->getFullyQualifiedName(),
         right->getPrintedName(), findSelfIndex(right), None,
-        left->getPrintedName()};
+        leftParent->getKind() == SDKNodeKind::Root ?
+          StringRef() : leftParent->getAs<SDKNodeDecl>()->getFullyQualifiedName(),
+        left->getPrintedName()
+    };
     out.emplace_back(item);
     Detector.workOn(left, right);
   }
@@ -3028,12 +3022,11 @@
   RightCollector.deSerialize(RightPath);
   auto LeftModule = LeftCollector.getSDKRoot();
   auto RightModule = RightCollector.getSDKRoot();
-  PrunePass Prune;
+  PrunePass Prune(Ctx.getNodeUpdateMap());
   Prune.pass(LeftModule, RightModule);
-  ChangeRefinementPass RefinementPass(Prune.getNodeUpdateMap());
+  ChangeRefinementPass RefinementPass(Ctx.getNodeUpdateMap());
   RefinementPass.pass(LeftModule, RightModule);
-  DiagnosisEmitter::diagnosis(LeftModule, RightModule,
-                              *RefinementPass.getNodeUpdateMap());
+  DiagnosisEmitter::diagnosis(LeftModule, RightModule, Ctx.getNodeUpdateMap());
   return 0;
 }
 
@@ -3064,10 +3057,10 @@
   TypeMemberDiffVector typeMemberDiffs;
   findTypeMemberDiffs(LeftModule, RightModule, typeMemberDiffs);
 
-  PrunePass Prune;
+  PrunePass Prune(Ctx.getNodeUpdateMap());
   Prune.pass(LeftModule, RightModule);
   llvm::errs() << "Finished pruning" << "\n";
-  ChangeRefinementPass RefinementPass(Prune.getNodeUpdateMap());
+  ChangeRefinementPass RefinementPass(Ctx.getNodeUpdateMap());
   RefinementPass.pass(LeftModule, RightModule);
   DiffVector AllItems;
   DiffItemEmitter::collectDiffItems(LeftModule, AllItems);
diff --git a/tools/swift-ide-test/swift-ide-test.cpp b/tools/swift-ide-test/swift-ide-test.cpp
index 07bde7a..03218ef 100644
--- a/tools/swift-ide-test/swift-ide-test.cpp
+++ b/tools/swift-ide-test/swift-ide-test.cpp
@@ -1572,15 +1572,27 @@
       node = node->getFirstChild();
 
       switch (node->getKind()) {
-        case NodeKind::Structure:
-        case NodeKind::Class:
-        case NodeKind::Enum:
-          break;
+      case NodeKind::Structure:
+      case NodeKind::Class:
+      case NodeKind::Enum:
+        break;
 
-        default:
-          llvm::errs() << "Expected a nominal type node in " <<
-            MangledName << "\n";
-          return EXIT_FAILURE;
+      case NodeKind::BoundGenericStructure:
+      case NodeKind::BoundGenericClass:
+      case NodeKind::BoundGenericEnum:
+        // Base type
+        typeNode = node->getFirstChild();
+        // Nominal type
+        node = typeNode->getFirstChild();
+        assert(node->getKind() == NodeKind::Structure ||
+               node->getKind() == NodeKind::Class ||
+               node->getKind() == NodeKind::Enum);
+        break;
+
+      default:
+        llvm::errs() << "Expected a nominal type node in " <<
+          MangledName << "\n";
+        return EXIT_FAILURE;
       }
 
       while (node->getKind() != NodeKind::LocalDeclName)
diff --git a/tools/swift-syntax-test/swift-syntax-test.cpp b/tools/swift-syntax-test/swift-syntax-test.cpp
index 3170300..ceb05d6 100644
--- a/tools/swift-syntax-test/swift-syntax-test.cpp
+++ b/tools/swift-syntax-test/swift-syntax-test.cpp
@@ -27,6 +27,7 @@
 #include "swift/Parse/Lexer.h"
 #include "swift/Subsystems.h"
 #include "swift/Syntax/LegacyASTTransformer.h"
+#include "swift/Syntax/Serialization/SyntaxSerialization.h"
 #include "swift/Syntax/SyntaxData.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/FileSystem.h"
@@ -39,6 +40,7 @@
   DumpTokenSyntax,
   FullLexRoundTrip,
   FullParseRoundTrip,
+  SerializeRawTree,
   None
 };
 
@@ -58,7 +60,11 @@
         clEnumValN(ActionType::FullParseRoundTrip,
                    "round-trip-parse",
                    "Parse the source file and print it back out for "
-                   "comparing against the input")));
+                   "comparing against the input"),
+        clEnumValN(ActionType::SerializeRawTree,
+                   "serialize-raw-tree",
+                   "Parse the source file and serialize the raw tree"
+                   "to JSON")));
 
 static llvm::cl::opt<std::string>
 InputSourceFilename("input-source-filename",
@@ -94,55 +100,20 @@
   return getTokensFromFile(BufferID, LangOpts, SourceMgr, Diags, Tokens);
 }
 
-int doFullLexRoundTrip(const StringRef InputFilename) {
-  LangOptions LangOpts;
-  SourceManager SourceMgr;
-  DiagnosticEngine Diags(SourceMgr);
-  PrintingDiagnosticConsumer DiagPrinter;
-  Diags.addConsumer(DiagPrinter);
+void anchorForGetMainExecutable() {}
 
-  std::vector<std::pair<RC<syntax::TokenSyntax>,
-                                   syntax::AbsolutePosition>> Tokens;
-  if (getTokensFromFile(InputFilename, LangOpts, SourceMgr,
-                        Diags, Tokens) == EXIT_FAILURE) {
-    return EXIT_FAILURE;
-  }
-
-  for (auto TokAndPos : Tokens) {
-    TokAndPos.first->print(llvm::outs());
-  }
-
-  return Diags.hadAnyError() ? EXIT_FAILURE : EXIT_SUCCESS;
-}
-
-int doDumpTokenSyntax(const StringRef InputFilename) {
-  LangOptions LangOpts;
-  SourceManager SourceMgr;
-  DiagnosticEngine Diags(SourceMgr);
-  PrintingDiagnosticConsumer DiagPrinter;
-  Diags.addConsumer(DiagPrinter);
-
-
-  std::vector<std::pair<RC<syntax::TokenSyntax>,
-                        syntax::AbsolutePosition>> Tokens;
-  if (getTokensFromFile(InputFilename, LangOpts, SourceMgr,
-                        Diags, Tokens) == EXIT_FAILURE) {
-    return EXIT_FAILURE;
-  }
-
-  for (auto TokAndPos : Tokens) {
-    TokAndPos.second.printLineAndColumn(llvm::outs());
-    llvm::outs() << "\n";
-    TokAndPos.first->dump(llvm::outs());
-    llvm::outs() << "\n";
-  }
-
-  return Diags.hadAnyError() ? EXIT_FAILURE : EXIT_SUCCESS;
-}
-
-int doFullParseRoundTrip(const StringRef InputFilename) {
+int getSyntaxTree(const char *MainExecutablePath,
+                  const StringRef InputFilename,
+                  llvm::SmallVectorImpl<syntax::Syntax> &TopLevelDecls,
+                  std::vector<std::pair<RC<syntax::TokenSyntax>,
+                              syntax::AbsolutePosition>> &Tokens) {
   CompilerInvocation Invocation;
   Invocation.addInputFilename(InputFilename);
+
+  Invocation.setMainExecutablePath(
+    llvm::sys::fs::getMainExecutable(MainExecutablePath,
+      reinterpret_cast<void *>(&anchorForGetMainExecutable)));
+
   Invocation.setModuleName("Test");
   CompilerInstance Instance;
 
@@ -172,8 +143,6 @@
   assert(SF && "No source file");
 
   // Retokenize the buffer with full fidelity
-  std::vector<std::pair<RC<syntax::TokenSyntax>,
-                        syntax::AbsolutePosition>> Tokens;
   if (getTokensFromFile(BufferID, Invocation.getLangOptions(),
                         SourceMgr,
                         Instance.getDiags(), Tokens) == EXIT_FAILURE) {
@@ -192,11 +161,71 @@
     auto NewNode = transformAST(ASTNode(Decl), Sema, SourceMgr,
                                 BufferID, Tokens);
     if (NewNode.hasValue()) {
-      NewNode.getValue().print(llvm::outs());
-      auto Symbol = Sema.getNodeForSyntax(NewNode.getValue());
+      TopLevelDecls.push_back(NewNode.getValue());
     }
   }
 
+  return EXIT_SUCCESS;
+}
+
+int doFullLexRoundTrip(const StringRef InputFilename) {
+  LangOptions LangOpts;
+  SourceManager SourceMgr;
+  DiagnosticEngine Diags(SourceMgr);
+  PrintingDiagnosticConsumer DiagPrinter;
+  Diags.addConsumer(DiagPrinter);
+
+  std::vector<std::pair<RC<syntax::TokenSyntax>,
+                                   syntax::AbsolutePosition>> Tokens;
+  if (getTokensFromFile(InputFilename, LangOpts, SourceMgr,
+                        Diags, Tokens) == EXIT_FAILURE) {
+    return EXIT_FAILURE;
+  }
+
+  for (auto TokAndPos : Tokens) {
+    TokAndPos.first->print(llvm::outs());
+  }
+
+  return Diags.hadAnyError() ? EXIT_FAILURE : EXIT_SUCCESS;
+}
+
+int doDumpTokenSyntax(const StringRef InputFilename) {
+  LangOptions LangOpts;
+  SourceManager SourceMgr;
+  DiagnosticEngine Diags(SourceMgr);
+  PrintingDiagnosticConsumer DiagPrinter;
+  Diags.addConsumer(DiagPrinter);
+
+  std::vector<std::pair<RC<syntax::TokenSyntax>,
+                        syntax::AbsolutePosition>> Tokens;
+  if (getTokensFromFile(InputFilename, LangOpts, SourceMgr,
+                        Diags, Tokens) == EXIT_FAILURE) {
+    return EXIT_FAILURE;
+  }
+
+  for (auto TokAndPos : Tokens) {
+    TokAndPos.second.printLineAndColumn(llvm::outs());
+    llvm::outs() << "\n";
+    TokAndPos.first->dump(llvm::outs());
+    llvm::outs() << "\n";
+  }
+
+  return Diags.hadAnyError() ? EXIT_FAILURE : EXIT_SUCCESS;
+}
+
+int doFullParseRoundTrip(const char *MainExecutablePath,
+                         const StringRef InputFilename) {
+
+  llvm::SmallVector<syntax::Syntax, 10> TopLevelDecls;
+  std::vector<std::pair<RC<syntax::TokenSyntax>,
+                        syntax::AbsolutePosition>> Tokens;
+
+  getSyntaxTree(MainExecutablePath, InputFilename, TopLevelDecls, Tokens);
+
+  for (auto &Node : TopLevelDecls) {
+    Node.print(llvm::outs());
+  }
+
   if (Tokens.back().first->getTokenKind() == tok::eof) {
     Tokens.back().first->print(llvm::outs());
   }
@@ -204,6 +233,26 @@
   return EXIT_SUCCESS;
 }
 
+int doSerializeRawTree(const char *MainExecutablePath,
+                       const StringRef InputFilename) {
+
+  llvm::SmallVector<syntax::Syntax, 10> TopLevelDecls;
+  std::vector<std::pair<RC<syntax::TokenSyntax>,
+                        syntax::AbsolutePosition>> Tokens;
+
+  getSyntaxTree(MainExecutablePath, InputFilename, TopLevelDecls, Tokens);
+
+  for (auto &Node : TopLevelDecls) {
+    swift::json::Output out(llvm::outs());
+    auto Raw = Node.getRaw();
+    out << Raw;
+  }
+
+  llvm::outs() << "\n";
+
+  return EXIT_SUCCESS;
+}
+
 int main(int argc, char *argv[]) {
   llvm::cl::ParseCommandLineOptions(argc, argv, "Swift Syntax Test\n");
 
@@ -227,7 +276,10 @@
     ExitCode = doFullLexRoundTrip(options::InputSourceFilename);
     break;
   case ActionType::FullParseRoundTrip:
-    ExitCode = doFullParseRoundTrip(options::InputSourceFilename);
+    ExitCode = doFullParseRoundTrip(argv[0], options::InputSourceFilename);
+    break;
+  case ActionType::SerializeRawTree:
+    ExitCode = doSerializeRawTree(argv[0], options::InputSourceFilename);
     break;
   case ActionType::None:
     llvm::errs() << "an action is required\n";
diff --git a/unittests/runtime/Metadata.cpp b/unittests/runtime/Metadata.cpp
index 50ebf05..9e3a8c5 100644
--- a/unittests/runtime/Metadata.cpp
+++ b/unittests/runtime/Metadata.cpp
@@ -10,6 +10,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "swift/Runtime/Metadata.h"
+#include "swift/Runtime/HeapObject.h"
 #include "swift/Runtime/Concurrent.h"
 #include "swift/Runtime/HeapObject.h"
 #include "swift/Runtime/Metadata.h"
@@ -837,9 +839,6 @@
     });
 }
 
-static const void *AllocatedBuffer = nullptr;
-static const void *DeallocatedBuffer = nullptr;
-
 namespace swift {
   void installCommonValueWitnesses(ValueWitnessTable *vwtable);
 } // namespace swift
@@ -863,33 +862,27 @@
   installCommonValueWitnesses(&testTable);
 
   // Replace allocateBuffer and destroyBuffer with logging versions.
-  testTable.allocateBuffer =
-    [](ValueBuffer *buf, const Metadata *self) -> OpaqueValue * {
-      void *mem = malloc(self->getValueWitnesses()->size);
-      *reinterpret_cast<void**>(buf) = mem;
-      AllocatedBuffer = mem;
-
-      return reinterpret_cast<OpaqueValue *>(mem);
-    };
-  testTable.destroyBuffer =
-    [](ValueBuffer *buf, const Metadata *self) -> void {
-      void *mem = *reinterpret_cast<void**>(buf);
-      DeallocatedBuffer = mem;
-
-      free(mem);
-    };
   struct {
     ValueBuffer buffer;
     uintptr_t canary;
   } buf1{{}, 0x5A5A5A5AU}, buf2{{}, 0xA5A5A5A5U};
-  testTable.allocateBuffer(&buf1.buffer, &testMetadata);
+  testMetadata.allocateBoxForExistentialIn(&buf1.buffer);
+
   testTable.initializeBufferWithTakeOfBuffer(&buf2.buffer, &buf1.buffer,
                                              &testMetadata);
-  testTable.destroyBuffer(&buf2.buffer, &testMetadata);
 
-  EXPECT_EQ(AllocatedBuffer, DeallocatedBuffer);
+  // The existential's box reference should be copied.
+  EXPECT_EQ(buf1.buffer.PrivateData[0], buf2.buffer.PrivateData[0]);
+
+  // Ownership of the box should have been transfered.
+  auto *reference = reinterpret_cast<HeapObject *>(buf2.buffer.PrivateData[0]);
+  EXPECT_TRUE(swift_isUniquelyReferencedOrPinned_nonNull_native(reference));
+
   EXPECT_EQ(buf1.canary, (uintptr_t)0x5A5A5A5AU);
   EXPECT_EQ(buf2.canary, (uintptr_t)0xA5A5A5A5U);
+
+  // Release the buffer.
+  swift_release(reference);
 }
 
 // We cannot construct RelativeDirectPointer instances, so define
diff --git a/unittests/runtime/weak.mm b/unittests/runtime/weak.mm
index 80137fa..9fd44ac 100644
--- a/unittests/runtime/weak.mm
+++ b/unittests/runtime/weak.mm
@@ -845,3 +845,63 @@
   swift_unknownRelease(swift1);
   swift_unknownRelease(swift2);
 }
+
+TEST(WeakTest, objc_unowned_isEqual_DeathTest) {
+  ::testing::FLAGS_gtest_death_test_style = "threadsafe";
+
+  DestroyedObjCCount = 0;
+
+  UnownedReference ref1;
+  UnownedReference ref2;
+  void *objc1 = make_objc_object();
+  void *objc2 = make_objc_object();
+  HeapObject *swift1 = make_swift_object();
+  HeapObject *swift2 = make_swift_object();
+
+  // ref1 = swift1
+  swift_unownedInit(&ref1, swift1);
+  ASSERT_EQ(true,  swift_unownedIsEqual(&ref1, swift1));
+  ASSERT_EQ(false, swift_unownedIsEqual(&ref1, swift2));
+  ASSERT_EQ(true,  swift_unknownUnownedIsEqual(&ref1, swift1));
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref1, swift2));
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref1, objc1));
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref1, objc2));
+
+  // ref2 = objc1
+  swift_unknownUnownedInit(&ref2, objc1);
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref2, swift1));
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref2, swift2));
+  ASSERT_EQ(true,  swift_unknownUnownedIsEqual(&ref2, objc1));
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref2, objc2));
+
+  // Deinit the assigned objects, invalidating ref1 and ref2
+  swift_release(swift1);
+  ASSERT_DEATH(swift_unownedCheck(swift1),
+               "attempted to read an unowned reference");
+  ASSERT_EQ(0U, DestroyedObjCCount);
+  swift_unknownRelease(objc1);
+  ASSERT_EQ(1U, DestroyedObjCCount);
+
+  // Unequal does not abort, even after invalidation
+  // Equal but invalidated does abort (Swift)
+  // Formerly equal but now invalidated returns unequal (ObjC)
+  ASSERT_DEATH(swift_unownedIsEqual(&ref1, swift1),
+               "attempted to read an unowned reference");
+  ASSERT_EQ(false, swift_unownedIsEqual(&ref1, swift2));
+  ASSERT_DEATH(swift_unknownUnownedIsEqual(&ref1, swift1),
+               "attempted to read an unowned reference");
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref1, swift2));
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref1, objc1));
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref1, objc2));
+
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref2, swift1));
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref2, swift2));
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref2, objc1));
+  ASSERT_EQ(false, swift_unknownUnownedIsEqual(&ref2, objc2));
+
+  swift_release(swift2);
+  swift_unknownRelease(objc2);
+
+  swift_unownedDestroy(&ref1);
+  swift_unknownUnownedDestroy(&ref2);
+}
diff --git a/utils/android/build-toolchain b/utils/android/build-toolchain
new file mode 100755
index 0000000..53f44a3
--- /dev/null
+++ b/utils/android/build-toolchain
@@ -0,0 +1,38 @@
+#!/usr/bin/env bash
+#
+# android/build-toolchain
+#
+# This source file is part of the Swift.org open source project
+#
+# Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
+# Licensed under Apache License v2.0 with Runtime Library Exception
+#
+# See https://swift.org/LICENSE.txt for license information
+# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
+
+set -e
+
+cd "$(dirname $0)/../.." || exit
+SRC_DIR=$PWD
+
+ANDROID_NDK_DIR="${ANDROID_NDK_DIR:?Please set the Android NDK directory in the ANDROID_NDK_DIR environment variable}"
+ANDROID_ICU_DIR="${ANDROID_ICU_DIR:?Please set the libiconv-libicu-android directory in the ANDROID_ICU_DIR environment variable}"
+
+SWIFT_TOOLCHAIN_DIR="${SRC_DIR}/../swift-android-toolchain"
+SWIFT_LINUX_DIR="${SRC_DIR}/../build/Ninja-ReleaseAssert/swift-linux-x86_64"
+
+./utils/build-script \
+    -R \
+    --android \
+    --android-ndk "${ANDROID_NDK_DIR}" \
+    --android-api-level 21 \
+    --android-icu-uc "${ANDROID_ICU_DIR}/armeabi-v7a" \
+    --android-icu-uc-include "${ANDROID_ICU_DIR}/armeabi-v7a/icu/source/common" \
+    --android-icu-i18n "${ANDROID_ICU_DIR}/armeabi-v7a" \
+    --android-icu-i18n-include "${ANDROID_ICU_DIR}/armeabi-v7a/icu/source/i18n" || exit
+
+test -e ${SWIFT_LINUX_DIR} || exit
+rm -rf ${SWIFT_TOOLCHAIN_DIR}
+mkdir -p ${SWIFT_TOOLCHAIN_DIR}/usr
+
+cp -r ${SWIFT_LINUX_DIR}/{bin,lib,include} ${SWIFT_TOOLCHAIN_DIR}/usr
diff --git a/utils/build-presets.ini b/utils/build-presets.ini
index 355bda1..3ac8253 100644
--- a/utils/build-presets.ini
+++ b/utils/build-presets.ini
@@ -744,6 +744,25 @@
 install-libdispatch
 reconfigure
 
+# Linux package with out test
+[preset: buildbot_linux,no_test]
+mixin-preset=buildbot_linux
+
+dash-dash
+
+skip-test-cmark
+skip-test-lldb
+skip-test-swift
+skip-test-llbuild
+skip-test-swiftpm
+skip-test-xctest
+skip-test-foundation
+skip-test-libdispatch
+skip-test-playgroundlogger
+skip-test-playgroundsupport
+skip-test-libicu
+
+
 # Ubuntu 16.10 preset for backwards compat and future customizations.
 [preset: buildbot_linux_1610]
 mixin-preset=buildbot_linux
diff --git a/utils/build-script-impl b/utils/build-script-impl
index e9745d5..d08bba0 100755
--- a/utils/build-script-impl
+++ b/utils/build-script-impl
@@ -169,6 +169,7 @@
     build-serialized-stdlib-unittest "0"         "set to 1 to build the StdlibUnittest module with -sil-serialize-all"
     build-sil-debugging-stdlib  "0"              "set to 1 to build the Swift standard library with -gsil to enable debugging and profiling on SIL level"
     check-incremental-compilation "0"            "set to 1 to compile swift libraries multiple times to check if incremental compilation works"
+    report-statistics           "0"              "set to 1 to generate compilation statistics files for swift libraries"
     llvm-include-tests          "1"              "Set to true to generate testing targets for LLVM. Set to true by default."
     swift-include-tests         "1"              "Set to true to generate testing targets for Swift. This allows the build to proceed when 'test' directory is missing (required for B&I builds)"
     native-llvm-tools-path      ""               "directory that contains LLVM tools that are executable on the build machine"
@@ -1485,7 +1486,7 @@
 }
 
 
-COMMON_C_FLAGS=""
+COMMON_C_FLAGS=" -Wno-unknown-warning-option -Werror=unguarded-availability-new"
 
 # Convert to an array.
 eval COMMON_CMAKE_OPTIONS=(${COMMON_CMAKE_OPTIONS})
@@ -1588,34 +1589,34 @@
 
     case $1 in
         iphonesimulator-i386)
-            echo "-arch i386 -mios-simulator-version-min=${DARWIN_DEPLOYMENT_VERSION_IOS}"
+            echo -n " -arch i386 -mios-simulator-version-min=${DARWIN_DEPLOYMENT_VERSION_IOS}"
             ;;
         iphonesimulator-x86_64)
-            echo "-arch x86_64 -mios-simulator-version-min=${DARWIN_DEPLOYMENT_VERSION_IOS}"
+            echo -n " -arch x86_64 -mios-simulator-version-min=${DARWIN_DEPLOYMENT_VERSION_IOS}"
             ;;
         iphoneos-armv7)
-            echo "-arch armv7 -miphoneos-version-min=${DARWIN_DEPLOYMENT_VERSION_IOS}"
+            echo -n " -arch armv7 -miphoneos-version-min=${DARWIN_DEPLOYMENT_VERSION_IOS}"
             ;;
         iphoneos-armv7s)
-            echo "-arch armv7s -miphoneos-version-min=${DARWIN_DEPLOYMENT_VERSION_IOS}"
+            echo -n " -arch armv7s -miphoneos-version-min=${DARWIN_DEPLOYMENT_VERSION_IOS}"
             ;;
         iphoneos-arm64)
-            echo "-arch arm64 -miphoneos-version-min=${DARWIN_DEPLOYMENT_VERSION_IOS}"
+            echo -n " -arch arm64 -miphoneos-version-min=${DARWIN_DEPLOYMENT_VERSION_IOS}"
             ;;
         appletvsimulator-x86_64)
-            echo "-arch x86_64 -mtvos-simulator-version-min=${DARWIN_DEPLOYMENT_VERSION_TVOS}"
+            echo -n " -arch x86_64 -mtvos-simulator-version-min=${DARWIN_DEPLOYMENT_VERSION_TVOS}"
             ;;
         appletvos-arm64)
-            echo "-arch arm64 -mtvos-version-min=${DARWIN_DEPLOYMENT_VERSION_TVOS}"
+            echo -n " -arch arm64 -mtvos-version-min=${DARWIN_DEPLOYMENT_VERSION_TVOS}"
             ;;
         watchsimulator-i386)
-            echo "-arch i386 -mwatchos-simulator-version-min=${DARWIN_DEPLOYMENT_VERSION_WATCHOS}"
+            echo -n " -arch i386 -mwatchos-simulator-version-min=${DARWIN_DEPLOYMENT_VERSION_WATCHOS}"
             ;;
         watchos-armv7k)
-            echo "-arch armv7k -mwatchos-version-min=${DARWIN_DEPLOYMENT_VERSION_WATCHOS}"
+            echo -n " -arch armv7k -mwatchos-version-min=${DARWIN_DEPLOYMENT_VERSION_WATCHOS}"
             ;;
         android-armv7)
-            echo "-arch armv7"
+            echo -n " -arch armv7"
             ;;
     esac
 }
@@ -2118,7 +2119,6 @@
                     -DSWIFT_STDLIB_BUILD_TYPE:STRING="${SWIFT_STDLIB_BUILD_TYPE}"
                     -DSWIFT_STDLIB_ASSERTIONS:BOOL=$(true_false "${SWIFT_STDLIB_ENABLE_ASSERTIONS}")
                     -DSWIFT_STDLIB_ENABLE_RESILIENCE:BOOL=$(true_false "${SWIFT_STDLIB_ENABLE_RESILIENCE}")
-                    -DSWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS:BOOL=$(true_false "${SWIFT_RUNTIME_ENABLE_COW_EXISTENTIALS}")
                     -DSWIFT_STDLIB_USE_NONATOMIC_RC:BOOL=$(true_false "${SWIFT_STDLIB_USE_NONATOMIC_RC}")
                     -DSWIFT_STDLIB_SIL_SERIALIZE_ALL:BOOL=$(true_false "${SWIFT_STDLIB_SIL_SERIALIZE_ALL}")
                     -DSWIFT_NATIVE_LLVM_TOOLS_PATH:STRING="${native_llvm_tools_path}"
@@ -2129,6 +2129,7 @@
                     -DSWIFT_SERIALIZE_STDLIB_UNITTEST:BOOL=$(true_false "${BUILD_SERIALIZED_STDLIB_UNITTEST}")
                     -DSWIFT_STDLIB_SIL_DEBUGGING:BOOL=$(true_false "${BUILD_SIL_DEBUGGING_STDLIB}")
                     -DSWIFT_CHECK_INCREMENTAL_COMPILATION:BOOL=$(true_false "${CHECK_INCREMENTAL_COMPILATION}")
+                    -DSWIFT_REPORT_STATISTICS:BOOL=$(true_false "${REPORT_STATISTICS}")
                     -DSWIFT_BUILD_DYNAMIC_STDLIB:BOOL=$(true_false "${BUILD_SWIFT_DYNAMIC_STDLIB}")
                     -DSWIFT_BUILD_STATIC_STDLIB:BOOL=$(true_false "${BUILD_SWIFT_STATIC_STDLIB}")
                     -DSWIFT_BUILD_DYNAMIC_SDK_OVERLAY:BOOL=$(true_false "${BUILD_SWIFT_DYNAMIC_SDK_OVERLAY}")
diff --git a/utils/cmpcodesize/cmpcodesize/compare.py b/utils/cmpcodesize/cmpcodesize/compare.py
index 6a230f6..4a07a0d 100644
--- a/utils/cmpcodesize/cmpcodesize/compare.py
+++ b/utils/cmpcodesize/cmpcodesize/compare.py
@@ -32,7 +32,8 @@
     # Function signature specialization of a generic specialization.
     ["FuncSigGen Spec", re.compile(
         '^__(TTSf.*__TTSg|T0.*T[gGpP]q?[0-9].*Tfq?[0-9])')],
-    ["Generic Spec", re.compile('^__(TTSg|T0.*T[gGpP]q?[0-9])')],
+    ["Generic Spec", re.compile('^__(TTSg|T0.*T[gG]q?[0-9])')],
+    ["Partial Spec", re.compile('^__(T0.*T[pP]q?[0-9])')],
     ["FuncSig Spec", re.compile('^__(TTSf|T0.*Tfq?[0-9])')],
     ["Generic Function", re.compile(
         '__(T[^0].*q(x|d?[0-9]*_)|T0.*q(z|d?[0-9]*_))')],
@@ -151,17 +152,26 @@
     add_function(sizes, curr_func, start_addr, end_addr, group_by_prefix)
 
 
-def compare_sizes(old_sizes, new_sizes, name_key, title):
+def compare_sizes(old_sizes, new_sizes, name_key, title, total_size_key=""):
     old_size = old_sizes[name_key]
     new_size = new_sizes[name_key]
+    if total_size_key:
+        old_total_size = old_sizes[total_size_key]
+        new_total_size = new_sizes[total_size_key]
     if old_size is not None and new_size is not None:
         if old_size != 0:
             perc = "%.1f%%" % (
                 (1.0 - float(new_size) / float(old_size)) * 100.0)
         else:
             perc = "- "
-        print("%-26s%16s: %8d  %8d  %6s" %
-              (title, name_key, old_size, new_size, perc))
+        if total_size_key:
+            print("%-26s%16s: %8d (%2d%%)  %8d (%2d%%)  %7s" %
+                  (title, name_key, old_size,
+                   old_size * 100.0 / old_total_size,
+                   new_size, new_size * 100.0 / new_total_size, perc))
+        else:
+            print("%-26s%16s: %14d  %14d  %7s" %
+                  (title, name_key, old_size, new_size, perc))
 
 
 def compare_sizes_of_file(old_files, new_files, all_sections, list_categories):
@@ -181,11 +191,11 @@
     else:
         title = "old-new"
 
-    compare_sizes(old_sizes, new_sizes, "__text", title)
+    compare_sizes(old_sizes, new_sizes, "__text", title, "")
     if list_categories:
         for cat in categories:
             cat_name = cat[0]
-            compare_sizes(old_sizes, new_sizes, cat_name, "")
+            compare_sizes(old_sizes, new_sizes, cat_name, "", "__text")
 
     if all_sections:
         section_title = "    section"
diff --git a/utils/cmpcodesize/cmpcodesize/main.py b/utils/cmpcodesize/cmpcodesize/main.py
index b112a04..3f02353 100644
--- a/utils/cmpcodesize/cmpcodesize/main.py
+++ b/utils/cmpcodesize/cmpcodesize/main.py
@@ -183,7 +183,7 @@
         else:
             compare_function_sizes(old_files, new_files)
     else:
-        print("%-26s%16s  %8s  %8s  %s" %
+        print("%-26s%16s  %14s  %14s  %s" %
               ("", "Section", "Old", "New", "Percent"))
         if parsed_arguments.sum_sizes:
             compare_sizes_of_file(old_files, new_files,
diff --git a/utils/process-stats-dir.py b/utils/process-stats-dir.py
index b016268..497c0ab 100755
--- a/utils/process-stats-dir.py
+++ b/utils/process-stats-dir.py
@@ -17,11 +17,16 @@
 
 import argparse
 import csv
+import datetime
 import json
 import os
+import platform
 import random
 import re
 import sys
+import time
+import urllib
+import urllib2
 
 
 class JobStats:
@@ -90,11 +95,64 @@
                 "dur": self.dur_usec,
                 "args": self.jobargs}
 
+    def start_timestr(self):
+        t = datetime.datetime.fromtimestamp(self.start_usec / 1000000.0)
+        return t.strftime("%Y-%m-%d %H:%M:%S")
+
+    def end_timestr(self):
+        t = datetime.datetime.fromtimestamp((self.start_usec +
+                                             self.dur_usec) / 1000000.0)
+        return t.strftime("%Y-%m-%d %H:%M:%S")
+
+    def pick_lnt_metric_suffix(self, metric_name):
+        if "BytesOutput" in metric_name:
+            return "code_size"
+        if "RSS" in metric_name or "BytesAllocated" in metric_name:
+            return "mem"
+        return "compile"
+
+    # Return a JSON-formattable object of the form preferred by LNT's
+    # 'submit' format.
+    def to_lnt_test_obj(self, args):
+        run_info = {
+            "run_order": str(args.lnt_order),
+            "tag": str(args.lnt_tag),
+        }
+        run_info.update(dict(args.lnt_run_info))
+        stats = self.stats
+        return {
+            "Machine":
+            {
+                "Name": args.lnt_machine,
+                "Info": dict(args.lnt_machine_info)
+            },
+            "Run":
+            {
+                "Start Time": self.start_timestr(),
+                "End Time": self.end_timestr(),
+                "Info": run_info
+            },
+            "Tests":
+            [
+                {
+                    "Data": [v],
+                    "Info": {},
+                    "Name": "%s.%s.%s.%s" % (args.lnt_tag, self.module,
+                                             k, self.pick_lnt_metric_suffix(k))
+                }
+                for (k, v) in stats.items()
+            ]
+        }
+
 
 # Return an array of JobStats objects
 def load_stats_dir(path):
     jobstats = []
-    fpat = r"^stats-(?P<start>\d+)-swift-(?P<kind>\w+)-(?P<pid>\d+).json$"
+    auxpat = (r"(?P<module>[^-]+)-(?P<input>[^-]+)-(?P<triple>[^-]+)" +
+              r"-(?P<out>[^-]+)-(?P<opt>[^-]+)")
+    fpat = (r"^stats-(?P<start>\d+)-swift-(?P<kind>\w+)-" +
+            auxpat +
+            r"-(?P<pid>\d+)(-.*)?.json$")
     for root, dirs, files in os.walk(path):
         for f in files:
             m = re.match(fpat, f)
@@ -104,13 +162,13 @@
                 jobkind = mg['kind']
                 jobid = int(mg['pid'])
                 start_usec = int(mg['start'])
+                module = mg["module"]
+                jobargs = [mg["input"], mg["triple"], mg["out"], mg["opt"]]
 
                 j = json.load(open(os.path.join(root, f)))
                 dur_usec = 1
-                jobargs = None
-                module = "module"
-                patstr = (r"time\.swift-" + jobkind +
-                          r"\.(?P<module>[^\.]+)(?P<filename>.*)\.wall$")
+                patstr = (r"time\.swift-" + jobkind + r"\." + auxpat +
+                          r"\.wall$")
                 pat = re.compile(patstr)
                 stats = dict()
                 for (k, v) in j.items():
@@ -119,14 +177,7 @@
                     stats[k] = v
                     tm = re.match(pat, k)
                     if tm:
-                        tmg = tm.groupdict()
                         dur_usec = v
-                        module = tmg['module']
-                        if 'filename' in tmg:
-                            ff = tmg['filename']
-                            if ff.startswith('.'):
-                                ff = ff[1:]
-                            jobargs = [ff]
 
                 e = JobStats(jobkind=jobkind, jobid=jobid,
                              module=module, start_usec=start_usec,
@@ -165,6 +216,30 @@
     json.dump([s.to_catapult_trace_obj() for s in allstats], args.output)
 
 
+def write_lnt_values(args):
+    for d in args.remainder:
+        stats = load_stats_dir(d)
+        merged = merge_all_jobstats(stats)
+        j = merged.to_lnt_test_obj(args)
+        if args.lnt_submit is None:
+            json.dump(j, args.output, indent=4)
+        else:
+            url = args.lnt_submit
+            print "\nsubmitting to LNT server: " + url
+            json_report = {'input_data': json.dumps(j), 'commit': '1'}
+            data = urllib.urlencode(json_report)
+            response_str = urllib2.urlopen(urllib2.Request(url, data))
+            response = json.loads(response_str.read())
+            print "### response:"
+            print response
+            if 'success' in response:
+                print "server response:\tSuccess"
+            else:
+                print "server response:\tError"
+                print "error:\t", response['error']
+                sys.exit(1)
+
+
 def merge_all_jobstats(jobstats):
     m = None
     for j in jobstats:
@@ -216,40 +291,127 @@
                                   incrementality=pct))
 
 
-def compare_frontend_stats(args):
-    assert(len(args.remainder) == 2)
-    (olddir, newdir) = args.remainder
+def diff_and_pct(old, new):
+    if old == 0:
+        if new == 0:
+            return (0, 0.0)
+        else:
+            return (new, 100.0)
+    delta = (new - old)
+    delta_pct = round((float(delta) / float(old)) * 100.0, 2)
+    return (delta, delta_pct)
+
+
+def update_epoch_value(d, name, epoch, value):
+    changed = 0
+    if name in d:
+        (existing_epoch, existing_value) = d[name]
+        if existing_epoch > epoch:
+            print("note: keeping newer value %d from epoch %d for %s"
+                  % (existing_value, existing_epoch, name))
+            epoch = existing_epoch
+            value = existing_value
+        elif existing_value == value:
+            epoch = existing_epoch
+        else:
+            (_, delta_pct) = diff_and_pct(existing_value, value)
+            print ("note: changing value %d -> %d (%.2f%%) for %s" %
+                   (existing_value, value, delta_pct, name))
+            changed = 1
+    d[name] = (epoch, value)
+    return (epoch, value, changed)
+
+
+def read_stats_dict_from_csv(f):
+    infieldnames = ["epoch", "name", "value"]
+    c = csv.DictReader(f, infieldnames,
+                       dialect='excel-tab',
+                       quoting=csv.QUOTE_NONNUMERIC)
+    d = {}
+    for row in c:
+        epoch = int(row["epoch"])
+        name = row["name"]
+        value = int(row["value"])
+        update_epoch_value(d, name, epoch, value)
+    return d
+
+
+# The idea here is that a "baseline" is a (tab-separated) CSV file full of
+# the counters you want to track, each prefixed by an epoch timestamp of
+# the last time the value was reset.
+#
+# When you set a fresh baseline, all stats in the provided stats dir are
+# written to the baseline. When you set against an _existing_ baseline,
+# only the counters mentioned in the existing baseline are updated, and
+# only if their values differ.
+#
+# Finally, since it's a line-oriented CSV file, you can put:
+#
+#    mybaseline.csv merge=union
+#
+# in your .gitattributes file, and forget about merge conflicts. The reader
+# function above will take the later epoch anytime it detects duplicates,
+# so union-merging is harmless. Duplicates will be eliminated whenever the
+# next baseline-set is done.
+def set_csv_baseline(args):
+    existing = None
+    if os.path.exists(args.set_csv_baseline):
+        with open(args.set_csv_baseline, "r") as f:
+            existing = read_stats_dict_from_csv(f)
+            print ("updating %d baseline entries in %s" %
+                   (len(existing), args.set_csv_baseline))
+    else:
+        print "making new baseline " + args.set_csv_baseline
+    fieldnames = ["epoch", "name", "value"]
+    with open(args.set_csv_baseline, "wb") as f:
+        out = csv.DictWriter(f, fieldnames, dialect='excel-tab',
+                             quoting=csv.QUOTE_NONNUMERIC)
+        m = merge_all_jobstats([s for d in args.remainder
+                                for s in load_stats_dir(d)])
+        changed = 0
+        newepoch = int(time.time())
+        for name in sorted(m.stats.keys()):
+            epoch = newepoch
+            value = m.stats[name]
+            if existing is not None:
+                if name not in existing:
+                    continue
+                (epoch, value, chg) = update_epoch_value(existing, name,
+                                                         epoch, value)
+                changed += chg
+            out.writerow(dict(epoch=int(epoch),
+                              name=name,
+                              value=int(value)))
+        if existing is not None:
+            print "changed %d entries in baseline" % changed
+    return 0
+
+
+def compare_to_csv_baseline(args):
+    old_stats = read_stats_dict_from_csv(args.compare_to_csv_baseline)
+    m = merge_all_jobstats([s for d in args.remainder
+                            for s in load_stats_dir(d)])
+    new_stats = m.stats
 
     regressions = 0
-    fieldnames = ["old", "new", "delta_pct", "name"]
-    out = csv.DictWriter(args.output, fieldnames, dialect='excel-tab')
+    outfieldnames = ["old", "new", "delta_pct", "name"]
+    out = csv.DictWriter(args.output, outfieldnames, dialect='excel-tab')
     out.writeheader()
 
-    old_stats = load_stats_dir(olddir)
-    new_stats = load_stats_dir(newdir)
-    old_merged = merge_all_jobstats([x for x in old_stats
-                                     if x.is_frontend_job()])
-    new_merged = merge_all_jobstats([x for x in new_stats
-                                     if x.is_frontend_job()])
-    if old_merged is None or new_merged is None:
-        return regressions
-    for stat_name in sorted(old_merged.stats.keys()):
-        if stat_name in new_merged.stats:
-            old = old_merged.stats[stat_name]
-            new = new_merged.stats.get(stat_name, 0)
-            if old == 0 or new == 0:
-                continue
-            delta = (new - old)
-            delta_pct = round((float(delta) / float(old)) * 100.0, 2)
-            if (stat_name.startswith("time.") and
-               abs(delta) < args.delta_usec_thresh):
-                continue
-            if abs(delta_pct) < args.delta_pct_thresh:
-                continue
-            out.writerow(dict(name=stat_name, old=old, new=new,
-                              delta_pct=delta_pct))
-            if delta > 0:
-                regressions += 1
+    for stat_name in sorted(old_stats.keys()):
+        (_, old) = old_stats[stat_name]
+        new = new_stats.get(stat_name, 0)
+        (delta, delta_pct) = diff_and_pct(old, new)
+        if (stat_name.startswith("time.") and
+           abs(delta) < args.delta_usec_thresh):
+            continue
+        if abs(delta_pct) < args.delta_pct_thresh:
+            continue
+        out.writerow(dict(name=stat_name,
+                          old=int(old), new=int(new),
+                          delta_pct=delta_pct))
+        if delta > 0:
+            regressions += 1
     return regressions
 
 
@@ -266,13 +428,34 @@
                         help="Percentage change required to report")
     parser.add_argument("--delta-usec-thresh", type=int, default=100000,
                         help="Absolute delta on times required to report")
+    parser.add_argument("--lnt-machine", type=str, default=platform.node(),
+                        help="Machine name for LNT submission")
+    parser.add_argument("--lnt-run-info", action='append', default=[],
+                        type=lambda kv: kv.split("="),
+                        help="Extra key=value pairs for LNT run-info")
+    parser.add_argument("--lnt-machine-info", action='append', default=[],
+                        type=lambda kv: kv.split("="),
+                        help="Extra key=value pairs for LNT machine-info")
+    parser.add_argument("--lnt-order", type=str,
+                        default=str(int(time.time())),
+                        help="Order for LNT submission")
+    parser.add_argument("--lnt-tag", type=str, default="swift-compile",
+                        help="Tag for LNT submission")
+    parser.add_argument("--lnt-submit", type=str, default=None,
+                        help="URL to submit LNT data to (rather than print)")
     modes = parser.add_mutually_exclusive_group(required=True)
     modes.add_argument("--catapult", action="store_true",
                        help="emit a 'catapult'-compatible trace of events")
     modes.add_argument("--incrementality", action="store_true",
                        help="summarize the 'incrementality' of a build")
-    modes.add_argument("--compare-frontend-stats", action="store_true",
-                       help="Compare frontend stats from two stats-dirs")
+    modes.add_argument("--set-csv-baseline", type=str, default=None,
+                       help="Merge stats from a stats-dir into a CSV baseline")
+    modes.add_argument("--compare-to-csv-baseline",
+                       type=argparse.FileType('rb', 0), default=None,
+                       metavar="BASELINE.csv",
+                       help="Compare stats dir to named CSV baseline")
+    modes.add_argument("--lnt", action="store_true",
+                       help="Emit an LNT-compatible test summary")
     parser.add_argument('remainder', nargs=argparse.REMAINDER,
                         help="stats-dirs to process")
 
@@ -282,13 +465,18 @@
         return 1
     if args.catapult:
         write_catapult_trace(args)
-    elif args.compare_frontend_stats:
-        return compare_frontend_stats(args)
+    elif args.set_csv_baseline is not None:
+        return set_csv_baseline(args)
+    elif args.compare_to_csv_baseline is not None:
+        return compare_to_csv_baseline(args)
     elif args.incrementality:
         if args.paired:
             show_paired_incrementality(args)
         else:
             show_incrementality(args)
+    elif args.lnt:
+        write_lnt_values(args)
     return None
 
+
 sys.exit(main())
diff --git a/utils/rusage.py b/utils/rusage.py
index f61a33c..2701a70 100755
--- a/utils/rusage.py
+++ b/utils/rusage.py
@@ -91,9 +91,13 @@
                     action='store_true',
                     default=False,
                     help="write results as CSV")
+parser.add_argument("--csv-header",
+                    action='store_true',
+                    default=False,
+                    help="Emit CSV header")
 parser.add_argument("--csv-output", default="-",
-                    type=argparse.FileType('ab', 0),
-                    help="Append CSV output to file")
+                    type=argparse.FileType('wb', 0),
+                    help="Write CSV output to file")
 parser.add_argument("--csv-name", type=str,
                     default=str(datetime.datetime.now()),
                     help="Label row in CSV with name")
@@ -147,7 +151,7 @@
 if args.csv:
     fieldnames = ["time", "mem", "run"]
     out = csv.DictWriter(args.csv_output, fieldnames, dialect='excel-tab')
-    if args.csv_output.tell() == 0:
+    if args.csv_header:
         out.writeheader()
     out.writerow(dict(time=used.ru_utime,
                       mem=used.ru_maxrss,
diff --git a/utils/swift-mode.el b/utils/swift-mode.el
index b87f3e6..6430674 100644
--- a/utils/swift-mode.el
+++ b/utils/swift-mode.el
@@ -350,7 +350,7 @@
                            1)
                           ((save-match-data
                              (looking-at
-                              "case \\|default *:\\|[a-zA-Z_][a-zA-Z0-9_]*\\(\\s-\\|\n\\)*:\\(\\s-\\|\n\\)*\\(for\\|do\\|\\while\\|switch\\)\\>"))
+                              "case \\|default *:\\|[a-zA-Z_][a-zA-Z0-9_]*\\(\\s-\\|\n\\)*:\\(\\s-\\|\n\\)*\\(for\\|do\\|\\while\\|switch\\|repeat\\)\\>"))
                            1)
                           (t 0))))))
       (indent-line-to (max target-column 0)))
diff --git a/utils/swift_build_support/swift_build_support/targets.py b/utils/swift_build_support/swift_build_support/targets.py
index ab3e6dc..1127aab 100644
--- a/utils/swift_build_support/swift_build_support/targets.py
+++ b/utils/swift_build_support/swift_build_support/targets.py
@@ -92,7 +92,7 @@
 
     iOS = DarwinPlatform("iphoneos", archs=["armv7", "armv7s", "arm64"],
                          sdk_name="IOS")
-    iOSSimulator = DarwinPlatform("iphonesimulator", archs=["i386", "x86_64"],
+    iOSSimulator = DarwinPlatform("iphonesimulator", archs=["x86_64"],
                                   sdk_name="IOS_SIMULATOR",
                                   is_simulator=True)
 
diff --git a/utils/symbolicate-linux-fatal b/utils/symbolicate-linux-fatal
index 81d403f..86f77ad 100755
--- a/utils/symbolicate-linux-fatal
+++ b/utils/symbolicate-linux-fatal
@@ -28,7 +28,17 @@
 import os
 import subprocess
 
-import lldb
+try:
+    import lldb
+except ImportError:
+    from distutils import spawn
+    swift_exec = spawn.find_executable('swift')
+    if swift_exec is not None:
+        site_packages = os.path.join(os.path.dirname(swift_exec),
+                                     '../lib/python2.7/site-packages/')
+        import sys
+        sys.path.append(site_packages)
+        import lldb
 
 
 def process_ldd(lddoutput):
@@ -38,7 +48,7 @@
         if len(ldd_tokens) >= 2:
             lib = ldd_tokens[-2]
             dyn_libs[ldd_tokens[0]] = lib
-            real_name = os.path.basename(os.path.realpath(lib)) 
+            real_name = os.path.basename(os.path.realpath(lib))
             dyn_libs[real_name] = lib
     return dyn_libs
 
@@ -58,7 +68,20 @@
     return lldb_target
 
 
+def add_lldb_target_modules(lldb_target, memmap):
+    for dynlib_path in memmap:
+        module = lldb_target.AddModule(
+            dynlib_path, lldb.LLDB_ARCH_DEFAULT, None, None)
+        lldb_target.SetModuleLoadAddress(module, memmap[dynlib_path])
+
+
+lldb_target = None
+known_memmap = {}
+
+
 def process_stack(binary, dyn_libs, stack):
+    global lldb_target
+    global known_memmap
     if len(stack) == 0:
         return
     memmap = {}
@@ -77,21 +100,29 @@
             framePC = int(stack_tokens[2], 16)
             symbol_offset = int(stack_tokens[-1], 10)
             dynlib_baseaddr = framePC - symbol_offset
-            if dynlib_path in memmap:
-                if memmap[dynlib_path] != dynlib_baseaddr:
+            if dynlib_path in memmap or dynlib_path in known_memmap:
+                if dynlib_path in memmap:
+                    existing_baseaddr = memmap[dynlib_path]
+                else:
+                    existing_baseaddr = known_memmap[dynlib_path]
+                if existing_baseaddr != dynlib_baseaddr:
                     error_msg = "Mismatched base address for: {0:s}, " \
                                 "had: {1:x}, now got {2:x}"
                     error_msg = error_msg.format(
-                        dynlib_path, memmap[dynlib_path], dynlib_baseaddr)
+                        dynlib_path, existing_baseaddr, dynlib_baseaddr)
                     raise Exception(error_msg)
             else:
+                known_memmap[dynlib_path] = dynlib_baseaddr
                 memmap[dynlib_path] = dynlib_baseaddr
         else:
             framePC = int(stack_tokens[2], 16) + int(stack_tokens[-1], 10)
         full_stack.append(
             {"line": line, "framePC": framePC, "dynlib_fname": dynlib_fname})
 
-    lldb_target = create_lldb_target(binary, memmap)
+    if lldb_target is None:
+        lldb_target = create_lldb_target(binary, memmap)
+    else:
+        add_lldb_target_modules(lldb_target, memmap)
     frame_idx = 0
     for frame in full_stack:
         use_orig_line = True
@@ -130,8 +161,8 @@
     parser.add_argument(
         "binary", help="Executable which produced the log file")
     parser.add_argument(
-        "log", type=argparse.FileType("rU"),
-        help="Log file containing the stack trace to symbolicate")
+        "log", nargs='?', type=argparse.FileType("rU"), default="-",
+        help="Log file for symbolication. Defaults to stdin.")
     args = parser.parse_args()
 
     binary = args.binary
@@ -143,7 +174,11 @@
     instack = False
     stackidx = 0
     stack = []
-    for line in args.log:
+
+    while True:
+        line = args.log.readline()
+        if not line:
+            break
         if instack and line.startswith(str(stackidx)):
             stack.append(line)
             stackidx = stackidx + 1
diff --git a/utils/update-checkout-config.json b/utils/update-checkout-config.json
index 92057f3..2683626 100644
--- a/utils/update-checkout-config.json
+++ b/utils/update-checkout-config.json
@@ -129,6 +129,25 @@
                 "swift-xcode-playground-support": "swift-4.0-branch",
                 "ninja": "release"
             }
+        },
+         "swift-4.0-branch-06-02-2017" : {
+            "aliases": ["swift-4.0-branch-06-02-2017"],
+            "repos": {
+                "llvm": "swift-4.0-branch-06-02-2017",
+                "clang": "swift-4.0-branch-06-02-2017",
+                "swift": "swift-4.0-branch-06-02-2017",
+                "lldb": "swift-4.0-branch-06-02-2017",
+                "cmark": "swift-4.0-branch",
+                "llbuild": "swift-4.0-branch",
+                "swiftpm": "swift-4.0-branch",
+                "compiler-rt": "swift-4.0-branch-06-02-2017",
+                "swift-corelibs-xctest": "swift-4.0-branch",
+                "swift-corelibs-foundation": "swift-4.0-branch",
+                "swift-corelibs-libdispatch": "swift-4.0-branch",
+                "swift-integration-tests": "swift-4.0-branch",
+                "swift-xcode-playground-support": "swift-4.0-branch",
+                "ninja": "release"
+            }
         }
     }
 }
diff --git a/utils/update_checkout.py b/utils/update_checkout.py
index fb9dc3f..257df29 100755
--- a/utils/update_checkout.py
+++ b/utils/update_checkout.py
@@ -42,11 +42,15 @@
 def find_rev_by_timestamp(timestamp, repo_name, refspec):
     base_args = ["git", "log", "-1", "--format=%H",
                  '--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()
-    if rev:
-        return rev
+    # On repos with regular batch-automerges from swift-ci -- namely clang,
+    # llvm and lldb -- 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.
+    if repo_name in ["llvm", "clang", "lldb"]:
+        rev = shell.capture(base_args +
+                            ['--author', 'swift-ci', refspec]).strip()
+        if rev:
+            return rev
     rev = shell.capture(base_args + [refspec]).strip()
     if rev:
         return rev
diff --git a/utils/vim/swift-format.py b/utils/vim/swift-format.py
index 8f13c48..3835a46 100644
--- a/utils/vim/swift-format.py
+++ b/utils/vim/swift-format.py
@@ -91,5 +91,6 @@
         if op[0] is not 'equal':
             vim.current.buffer[op[1]:op[2]] = lines[op[3]:op[4]]
 
+
 if __name__ == '__main__':
     main(len(sys.argv), sys.argv)
diff --git a/utils/vim/syntax/swift.vim b/utils/vim/syntax/swift.vim
index 68601c4..4512999 100644
--- a/utils/vim/syntax/swift.vim
+++ b/utils/vim/syntax/swift.vim
@@ -22,13 +22,11 @@
       \ guard
       \ if
       \ in
-      \ let
       \ repeat
       \ return
       \ switch
       \ throw
       \ try
-      \ var
       \ where
       \ while
 syn match swiftMultiwordKeyword
@@ -52,6 +50,9 @@
       \ static
       \ throws
 
+syn keyword swiftInOutKeyword skipwhite nextgroup=swiftTypeName
+      \ inout
+
 syn keyword swiftIdentifierKeyword
       \ Self
       \ metatype
@@ -130,7 +131,7 @@
 syn keyword swiftConstraint contained
       \ where
 
-syn match swiftTypeDeclaration skipwhite nextgroup=swiftType
+syn match swiftTypeDeclaration skipwhite nextgroup=swiftType,swiftInOutKeyword
       \ /:/
 syn match swiftTypeDeclaration skipwhite nextgroup=swiftType
       \ /->/
@@ -178,6 +179,7 @@
 hi def link swiftConstraint Special
 hi def link swiftFuncDefinition Define
 hi def link swiftDefinitionModifier Define
+hi def link swiftInOutKeyword Define
 hi def link swiftFuncKeyword Function
 hi def link swiftFuncKeywordGeneral Function
 hi def link swiftVarDefinition Define
diff --git a/validation-test/Driver/Dependencies/rdar25405605.swift b/validation-test/Driver/Dependencies/rdar25405605.swift
index 57ba4a7..823d406 100644
--- a/validation-test/Driver/Dependencies/rdar25405605.swift
+++ b/validation-test/Driver/Dependencies/rdar25405605.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: cp %s %t/main.swift
 // RUN: cp %S/Inputs/rdar25405605/helper-1.swift %t/helper.swift
diff --git a/validation-test/Driver/many-inputs.swift b/validation-test/Driver/many-inputs.swift
index 016fcc5..5e7d889 100644
--- a/validation-test/Driver/many-inputs.swift
+++ b/validation-test/Driver/many-inputs.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // This limit was chosen because multi-threaded compilation broke here on OS X
 // at one point.
diff --git a/validation-test/IDE/crashers_2/0004-unmapped-dependent-type.swift b/validation-test/IDE/crashers_2/0004-unmapped-dependent-type.swift
deleted file mode 100644
index 92daecf..0000000
--- a/validation-test/IDE/crashers_2/0004-unmapped-dependent-type.swift
+++ /dev/null
@@ -1,8 +0,0 @@
-// RUN: not --crash %target-swift-ide-test -code-completion -code-completion-token=A -source-filename=%s
-// REQUIRES: asserts
-
-func _thread() {
-  _ = #^A^#
-}
-
-func run<InputCollection : Collection, Result>(_: InputCollection) -> Result {}
diff --git a/validation-test/IDE/crashers_2/0005-should-have-found-non-type-context-by-now.swift b/validation-test/IDE/crashers_2/0005-should-have-found-non-type-context-by-now.swift
index 2ab6c1c..67d5606 100644
--- a/validation-test/IDE/crashers_2/0005-should-have-found-non-type-context-by-now.swift
+++ b/validation-test/IDE/crashers_2/0005-should-have-found-non-type-context-by-now.swift
@@ -2,12 +2,13 @@
 // RUN: %target-swift-ide-test -code-completion -code-completion-token=B1 -source-filename=%s
 // RUN: %target-swift-ide-test -code-completion -code-completion-token=C1 -source-filename=%s
 
-// RUN: not --crash %target-swift-ide-test -code-completion -code-completion-token=A2 -source-filename=%s
-// RUN: not --crash %target-swift-ide-test -code-completion -code-completion-token=B2 -source-filename=%s
-// RUN: not --crash %target-swift-ide-test -code-completion -code-completion-token=C2 -source-filename=%s
+// RUN: %target-swift-ide-test -code-completion -code-completion-token=A2 -source-filename=%s
+// RUN: %target-swift-ide-test -code-completion -code-completion-token=B2 -source-filename=%s
+// RUN: %target-swift-ide-test -code-completion -code-completion-token=C2 -source-filename=%s
 
 // RUN: %target-swift-ide-test -code-completion -code-completion-token=A3 -source-filename=%s
 // RUN: not --crash %target-swift-ide-test -code-completion -code-completion-token=B3 -source-filename=%s
+
 // REQUIRES: asserts
 
 class a1<b#^A1^#> {}
diff --git a/validation-test/IDE/crashers_2/0007-archetype-not-in-context.swift b/validation-test/IDE/crashers_2/0007-archetype-not-in-context.swift
deleted file mode 100644
index 2ad1988..0000000
--- a/validation-test/IDE/crashers_2/0007-archetype-not-in-context.swift
+++ /dev/null
@@ -1,11 +0,0 @@
-// RUN: not --crash %target-swift-ide-test -code-completion -code-completion-token=A -source-filename=%s
-// REQUIRES: asserts
-
-class D<X, Y>() {}
-
-class C<T> {
-  func f<U>() -> D<U, T> {}
-  func g() {
-    f#^A^#
-  }
-}
diff --git a/validation-test/IDE/crashers_2/0008-must-conform-to-literal-protocol.swift b/validation-test/IDE/crashers_2/0008-must-conform-to-literal-protocol.swift
deleted file mode 100644
index 04850e4..0000000
--- a/validation-test/IDE/crashers_2/0008-must-conform-to-literal-protocol.swift
+++ /dev/null
@@ -1,4 +0,0 @@
-// RUN: not --crash %target-swift-ide-test -code-completion -code-completion-token=A -source-filename=%s
-// REQUIRES: asserts
-
-.a != nil #^A^#
diff --git a/validation-test/IDE/crashers_2_fixed/0004-unmapped-dependent-type.swift b/validation-test/IDE/crashers_2_fixed/0004-unmapped-dependent-type.swift
new file mode 100644
index 0000000..9c62458
--- /dev/null
+++ b/validation-test/IDE/crashers_2_fixed/0004-unmapped-dependent-type.swift
@@ -0,0 +1,7 @@
+// RUN: %target-swift-ide-test -code-completion -code-completion-token=A -source-filename=%s
+
+func _thread() {
+  _ = #^A^#
+}
+
+func run<InputCollection : Collection, Result>(_: InputCollection) -> Result {}
diff --git a/validation-test/IDE/crashers_2_fixed/0007-archetype-not-in-context.swift b/validation-test/IDE/crashers_2_fixed/0007-archetype-not-in-context.swift
new file mode 100644
index 0000000..13f4349
--- /dev/null
+++ b/validation-test/IDE/crashers_2_fixed/0007-archetype-not-in-context.swift
@@ -0,0 +1,10 @@
+// RUN: %target-swift-ide-test -code-completion -code-completion-token=A -source-filename=%s
+
+class D<X, Y>() {}
+
+class C<T> {
+  func f<U>() -> D<U, T> {}
+  func g() {
+    f#^A^#
+  }
+}
diff --git a/validation-test/IDE/crashers_2_fixed/0008-must-conform-to-literal-protocol.swift b/validation-test/IDE/crashers_2_fixed/0008-must-conform-to-literal-protocol.swift
new file mode 100644
index 0000000..4f47a6e
--- /dev/null
+++ b/validation-test/IDE/crashers_2_fixed/0008-must-conform-to-literal-protocol.swift
@@ -0,0 +1,3 @@
+// RUN: %target-swift-ide-test -code-completion -code-completion-token=A -source-filename=%s
+
+.a != nil #^A^#
diff --git a/validation-test/Python/benchmark-scripts.test-sh b/validation-test/Python/benchmark-scripts.test-sh
new file mode 100644
index 0000000..16715ac
--- /dev/null
+++ b/validation-test/Python/benchmark-scripts.test-sh
@@ -0,0 +1,2 @@
+// RUN: %{python} -m unittest discover -s %swift_src_root/benchmark/scripts/
+// REQUIRES: OS=macosx 
diff --git a/validation-test/Reflection/existentials.swift b/validation-test/Reflection/existentials.swift
index fba79b5..3d65ef7 100644
--- a/validation-test/Reflection/existentials.swift
+++ b/validation-test/Reflection/existentials.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/existentials
 // RUN: %target-run %target-swift-reflection-test %t/existentials | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/functions.swift b/validation-test/Reflection/functions.swift
index c46c56d..3b4e0b2 100644
--- a/validation-test/Reflection/functions.swift
+++ b/validation-test/Reflection/functions.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/functions
 // RUN: %target-run %target-swift-reflection-test %t/functions | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize
 
diff --git a/validation-test/Reflection/functions_objc.swift b/validation-test/Reflection/functions_objc.swift
index 6e6139b..dd56664 100644
--- a/validation-test/Reflection/functions_objc.swift
+++ b/validation-test/Reflection/functions_objc.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/functions
 // RUN: %target-run %target-swift-reflection-test %t/functions | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/inherits_NSObject.swift b/validation-test/Reflection/inherits_NSObject.swift
index 2582e26..208d301 100644
--- a/validation-test/Reflection/inherits_NSObject.swift
+++ b/validation-test/Reflection/inherits_NSObject.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/inherits_NSObject
 // RUN: %target-run %target-swift-reflection-test %t/inherits_NSObject | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize
 
@@ -23,12 +23,12 @@
 // CHECK-64: (class inherits_NSObject.BaseNSClass)
 
 // CHECK-64: Type info:
-// CHECK-64-NEXT: (class_instance size=25 alignment=8 stride=32 num_extra_inhabitants=0
-// CHECK-64-NEXT:   (field name=w offset=16
+// CHECK-64-NEXT: (class_instance size=17 alignment=8 stride=24 num_extra_inhabitants=0
+// CHECK-64-NEXT:   (field name=w offset=8
 // CHECK-64-NEXT:     (struct size=8 alignment=8 stride=8 num_extra_inhabitants=0
 // CHECK-64-NEXT:       (field name=_value offset=0
 // CHECK-64-NEXT:         (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=0))))
-// CHECK-64-NEXT:   (field name=x offset=24
+// CHECK-64-NEXT:   (field name=x offset=16
 // CHECK-64-NEXT:     (struct size=1 alignment=1 stride=1 num_extra_inhabitants=254
 // CHECK-64-NEXT:       (field name=_value offset=0
 // CHECK-64-NEXT:         (builtin size=1 alignment=1 stride=1 num_extra_inhabitants=254)))))
@@ -38,12 +38,12 @@
 // CHECK-32: (class inherits_NSObject.BaseNSClass)
 
 // CHECK-32: Type info:
-// CHECK-32-NEXT: (class_instance size=17 alignment=4 stride=20 num_extra_inhabitants=0
-// CHECK-32-NEXT:   (field name=w offset=12
+// CHECK-32-NEXT: (class_instance size=9 alignment=4 stride=12 num_extra_inhabitants=0
+// CHECK-32-NEXT:   (field name=w offset=4
 // CHECK-32-NEXT:     (struct size=4 alignment=4 stride=4 num_extra_inhabitants=0
 // CHECK-32-NEXT:       (field name=_value offset=0
 // CHECK-32-NEXT:         (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=0))))
-// CHECK-32-NEXT:   (field name=x offset=16
+// CHECK-32-NEXT:   (field name=x offset=8
 // CHECK-32-NEXT:     (struct size=1 alignment=1 stride=1 num_extra_inhabitants=254
 // CHECK-32-NEXT:       (field name=_value offset=0
 // CHECK-32-NEXT:         (builtin size=1 alignment=1 stride=1 num_extra_inhabitants=254)))))
@@ -61,12 +61,12 @@
 // CHECK-64: (class inherits_NSObject.DerivedNSClass)
 
 // CHECK-64: Type info:
-// CHECK-64-NEXT: (class_instance size=40 alignment=8 stride=40 num_extra_inhabitants=0
-// CHECK-64-NEXT:   (field name=y offset=25
+// CHECK-64-NEXT: (class_instance size=32 alignment=8 stride=32 num_extra_inhabitants=0
+// CHECK-64-NEXT:   (field name=y offset=17
 // CHECK-64-NEXT:     (struct size=1 alignment=1 stride=1 num_extra_inhabitants=254
 // CHECK-64-NEXT:       (field name=_value offset=0
 // CHECK-64-NEXT:         (builtin size=1 alignment=1 stride=1 num_extra_inhabitants=254))))
-// CHECK-64-NEXT:   (field name=z offset=32
+// CHECK-64-NEXT:   (field name=z offset=24
 // CHECK-64-NEXT:     (struct size=8 alignment=8 stride=8 num_extra_inhabitants=0
 // CHECK-64-NEXT:       (field name=_value offset=0
 // CHECK-64-NEXT:         (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=0)))))
@@ -76,12 +76,12 @@
 // CHECK-32: (class inherits_NSObject.DerivedNSClass)
 
 // CHECK-32: Type info:
-// CHECK-32-NEXT: (class_instance size=24 alignment=4 stride=24 num_extra_inhabitants=0
-// CHECK-32-NEXT:   (field name=y offset=17
+// CHECK-32-NEXT: (class_instance size=16 alignment=4 stride=16 num_extra_inhabitants=0
+// CHECK-32-NEXT:   (field name=y offset=9
 // CHECK-32-NEXT:     (struct size=1 alignment=1 stride=1 num_extra_inhabitants=254
 // CHECK-32-NEXT:       (field name=_value offset=0
 // CHECK-32-NEXT:         (builtin size=1 alignment=1 stride=1 num_extra_inhabitants=254))))
-// CHECK-32-NEXT:   (field name=z offset=20
+// CHECK-32-NEXT:   (field name=z offset=12
 // CHECK-32-NEXT:     (struct size=4 alignment=4 stride=4 num_extra_inhabitants=0
 // CHECK-32-NEXT:       (field name=_value offset=0
 // CHECK-32-NEXT:         (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=0)))))
@@ -131,12 +131,12 @@
 // CHECK-64: (class inherits_NSObject.AlignedNSClass)
 
 // CHECK-64: Type info:
-// CHECK-64-NEXT: (class_instance size=48 alignment=16 stride=48 num_extra_inhabitants=0
-// CHECK-64-NEXT:   (field name=w offset=16
+// CHECK-64-NEXT: (class_instance size=32 alignment=16 stride=32 num_extra_inhabitants=0
+// CHECK-64-NEXT:   (field name=w offset=8
 // CHECK-64-NEXT:     (struct size=8 alignment=8 stride=8 num_extra_inhabitants=0
 // CHECK-64-NEXT:       (field name=_value offset=0
 // CHECK-64-NEXT:         (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=0))))
-// CHECK-64-NEXT:   (field name=x offset=32
+// CHECK-64-NEXT:   (field name=x offset=16
 // CHECK-64-NEXT:     (builtin size=16 alignment=16 stride=16 num_extra_inhabitants=0)))
 
 // CHECK-32: Reflecting an object.
@@ -145,7 +145,7 @@
 
 // CHECK-32: Type info:
 // CHECK-32-NEXT: (class_instance size=32 alignment=16 stride=32 num_extra_inhabitants=0
-// CHECK-32-NEXT:   (field name=w offset=12
+// CHECK-32-NEXT:   (field name=w offset=4
 // CHECK-32-NEXT:     (struct size=4 alignment=4 stride=4 num_extra_inhabitants=0
 // CHECK-32-NEXT:       (field name=_value offset=0
 // CHECK-32-NEXT:         (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=0))))
diff --git a/validation-test/Reflection/inherits_ObjCClasses.swift b/validation-test/Reflection/inherits_ObjCClasses.swift
index 40d76f7..8b569c9 100644
--- a/validation-test/Reflection/inherits_ObjCClasses.swift
+++ b/validation-test/Reflection/inherits_ObjCClasses.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %clang %target-cc-options -isysroot %sdk -fobjc-arc %S/Inputs/ObjCClasses/ObjCClasses.m -c -o %t/ObjCClasses.o
 // RUN: %target-build-swift -I %S/Inputs/ObjCClasses/ -lswiftSwiftReflectionTest %t/ObjCClasses.o %s -o %t/inherits_ObjCClasses
@@ -61,8 +61,8 @@
 // CHECK-32: (class inherits_ObjCClasses.FirstClassB)
 
 // CHECK-32: Type info:
-// CHECK-32-NEXT: (class_instance size=16 alignment=4 stride=16 num_extra_inhabitants=0
-// CHECK-32-NEXT:   (field name=zz offset=12
+// CHECK-32-NEXT: (class_instance size=12 alignment=4 stride=12 num_extra_inhabitants=0
+// CHECK-32-NEXT:   (field name=zz offset=8
 // CHECK-32-NEXT:     (struct size=4 alignment=4 stride=4 num_extra_inhabitants=0
 // CHECK-32-NEXT:       (field name=_value offset=0
 // CHECK-32-NEXT:         (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=0)))))
diff --git a/validation-test/Reflection/inherits_Swift.swift b/validation-test/Reflection/inherits_Swift.swift
index 51646be..67a1c50 100644
--- a/validation-test/Reflection/inherits_Swift.swift
+++ b/validation-test/Reflection/inherits_Swift.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/inherits_Swift
 // RUN: %target-run %target-swift-reflection-test %t/inherits_Swift | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize
 
diff --git a/validation-test/Reflection/reflect_Array.swift b/validation-test/Reflection/reflect_Array.swift
index 25cca6a..c8b84e7 100644
--- a/validation-test/Reflection/reflect_Array.swift
+++ b/validation-test/Reflection/reflect_Array.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Array
 // RUN: %target-run %target-swift-reflection-test %t/reflect_Array 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_Bool.swift b/validation-test/Reflection/reflect_Bool.swift
index 8724800..9cabb01 100644
--- a/validation-test/Reflection/reflect_Bool.swift
+++ b/validation-test/Reflection/reflect_Bool.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Bool
 // RUN: %target-run %target-swift-reflection-test %t/reflect_Bool 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_Character.swift b/validation-test/Reflection/reflect_Character.swift
index 4f64c4d..9fcda45 100644
--- a/validation-test/Reflection/reflect_Character.swift
+++ b/validation-test/Reflection/reflect_Character.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Character
 // RUN: %target-run %target-swift-reflection-test %t/reflect_Character 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
@@ -7,6 +7,9 @@
 // FIXME: https://bugs.swift.org/browse/SR-2808
 // XFAIL: resilient_stdlib
 
+// See https://bugs.swift.org/browse/SR-5066, rdar://32511557
+// XFAIL: *
+
 import SwiftReflectionTest
 
 class TestClass {
@@ -26,9 +29,9 @@
 // CHECK-64: (class reflect_Character.TestClass)
 
 // CHECK-64: Type info:
-// CHECK-64: (class_instance size=25 alignment=8 stride=32 num_extra_inhabitants=0
+// CHECK-64: (class_instance size=24 alignment=8 stride=24 num_extra_inhabitants=0
 // CHECK-64-NEXT:  (field name=t offset=16
-// CHECK-64-NEXT:    (struct size=9 alignment=8 stride=16 num_extra_inhabitants=0
+// CHECK-64-NEXT:    (struct size=8 alignment=8 stride=8 num_extra_inhabitants=0
 // CHECK-64-NEXT:      (field name=_representation offset=0
 // CHECK-64-NEXT:        (multi_payload_enum size=9 alignment=8 stride=16 num_extra_inhabitants=0
 // CHECK-64-NEXT:          (field name=large offset=0
diff --git a/validation-test/Reflection/reflect_Dictionary.swift b/validation-test/Reflection/reflect_Dictionary.swift
index b88995f..2eecc2d 100644
--- a/validation-test/Reflection/reflect_Dictionary.swift
+++ b/validation-test/Reflection/reflect_Dictionary.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Dictionary
 // RUN: %target-run %target-swift-reflection-test %t/reflect_Dictionary 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_Double.swift b/validation-test/Reflection/reflect_Double.swift
index 881cafa..80904ed 100644
--- a/validation-test/Reflection/reflect_Double.swift
+++ b/validation-test/Reflection/reflect_Double.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Double
 // RUN: %target-run %target-swift-reflection-test %t/reflect_Double 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_Float.swift b/validation-test/Reflection/reflect_Float.swift
index 074e20f..d59b985 100644
--- a/validation-test/Reflection/reflect_Float.swift
+++ b/validation-test/Reflection/reflect_Float.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Float
 // RUN: %target-run %target-swift-reflection-test %t/reflect_Float 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_Int.swift b/validation-test/Reflection/reflect_Int.swift
index 981562b..a8b8488 100644
--- a/validation-test/Reflection/reflect_Int.swift
+++ b/validation-test/Reflection/reflect_Int.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Int
 // RUN: %target-run %target-swift-reflection-test %t/reflect_Int 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_Int16.swift b/validation-test/Reflection/reflect_Int16.swift
index 3499350..d51a0e1 100644
--- a/validation-test/Reflection/reflect_Int16.swift
+++ b/validation-test/Reflection/reflect_Int16.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Int16
 // RUN: %target-run %target-swift-reflection-test %t/reflect_Int16 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_Int32.swift b/validation-test/Reflection/reflect_Int32.swift
index e8b2e07..a2d642e 100644
--- a/validation-test/Reflection/reflect_Int32.swift
+++ b/validation-test/Reflection/reflect_Int32.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Int32
 // RUN: %target-run %target-swift-reflection-test %t/reflect_Int32 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_Int64.swift b/validation-test/Reflection/reflect_Int64.swift
index 40f6d04..d1a1c1b 100644
--- a/validation-test/Reflection/reflect_Int64.swift
+++ b/validation-test/Reflection/reflect_Int64.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Int64
 // RUN: %target-run %target-swift-reflection-test %t/reflect_Int64 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_Int8.swift b/validation-test/Reflection/reflect_Int8.swift
index 9078030..b79ff1f 100644
--- a/validation-test/Reflection/reflect_Int8.swift
+++ b/validation-test/Reflection/reflect_Int8.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Int8
 // RUN: %target-run %target-swift-reflection-test %t/reflect_Int8 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_NSArray.swift b/validation-test/Reflection/reflect_NSArray.swift
index f46340d..7abeb2c 100644
--- a/validation-test/Reflection/reflect_NSArray.swift
+++ b/validation-test/Reflection/reflect_NSArray.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_NSArray
 // RUN: %target-run %target-swift-reflection-test %t/reflect_NSArray 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_NSNumber.swift b/validation-test/Reflection/reflect_NSNumber.swift
index 0f01f89..4f8c3f8 100644
--- a/validation-test/Reflection/reflect_NSNumber.swift
+++ b/validation-test/Reflection/reflect_NSNumber.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_NSNumber
 // RUN: %target-run %target-swift-reflection-test %t/reflect_NSNumber 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_NSSet.swift b/validation-test/Reflection/reflect_NSSet.swift
index 7e3778e..f0c1f5c 100644
--- a/validation-test/Reflection/reflect_NSSet.swift
+++ b/validation-test/Reflection/reflect_NSSet.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_NSSet
 // RUN: %target-run %target-swift-reflection-test %t/reflect_NSSet 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_NSString.swift b/validation-test/Reflection/reflect_NSString.swift
index 4a58a5f..ee02334 100644
--- a/validation-test/Reflection/reflect_NSString.swift
+++ b/validation-test/Reflection/reflect_NSString.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_NSString
 // RUN: %target-run %target-swift-reflection-test %t/reflect_NSString 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_Set.swift b/validation-test/Reflection/reflect_Set.swift
index 6c8d2ff..dcfb477 100644
--- a/validation-test/Reflection/reflect_Set.swift
+++ b/validation-test/Reflection/reflect_Set.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Set
 // RUN: %target-run %target-swift-reflection-test %t/reflect_Set 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_String.swift b/validation-test/Reflection/reflect_String.swift
index 5d3fa9c..2e8dde6 100644
--- a/validation-test/Reflection/reflect_String.swift
+++ b/validation-test/Reflection/reflect_String.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_String
 // RUN: %target-run %target-swift-reflection-test %t/reflect_String 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_UInt.swift b/validation-test/Reflection/reflect_UInt.swift
index 02925e7..3f951d3 100644
--- a/validation-test/Reflection/reflect_UInt.swift
+++ b/validation-test/Reflection/reflect_UInt.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_UInt
 // RUN: %target-run %target-swift-reflection-test %t/reflect_UInt 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_UInt16.swift b/validation-test/Reflection/reflect_UInt16.swift
index 09275d8..8d9ee6b 100644
--- a/validation-test/Reflection/reflect_UInt16.swift
+++ b/validation-test/Reflection/reflect_UInt16.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_UInt16
 // RUN: %target-run %target-swift-reflection-test %t/reflect_UInt16 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_UInt32.swift b/validation-test/Reflection/reflect_UInt32.swift
index b12819f..4fd5dcd 100644
--- a/validation-test/Reflection/reflect_UInt32.swift
+++ b/validation-test/Reflection/reflect_UInt32.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_UInt32
 // RUN: %target-run %target-swift-reflection-test %t/reflect_UInt32 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_UInt64.swift b/validation-test/Reflection/reflect_UInt64.swift
index 8a22bc9..2c8248a 100644
--- a/validation-test/Reflection/reflect_UInt64.swift
+++ b/validation-test/Reflection/reflect_UInt64.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_UInt64
 // RUN: %target-run %target-swift-reflection-test %t/reflect_UInt64 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_UInt8.swift b/validation-test/Reflection/reflect_UInt8.swift
index 1d1d14b..e02710a 100644
--- a/validation-test/Reflection/reflect_UInt8.swift
+++ b/validation-test/Reflection/reflect_UInt8.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_UInt8
 // RUN: %target-run %target-swift-reflection-test %t/reflect_UInt8 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_empty_class.swift b/validation-test/Reflection/reflect_empty_class.swift
index 7a14ea6..1f337fe 100644
--- a/validation-test/Reflection/reflect_empty_class.swift
+++ b/validation-test/Reflection/reflect_empty_class.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_empty_class
 // RUN: %target-run %target-swift-reflection-test %t/reflect_empty_class 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_existential.swift b/validation-test/Reflection/reflect_existential.swift
index 801e760..1247dc6 100644
--- a/validation-test/Reflection/reflect_existential.swift
+++ b/validation-test/Reflection/reflect_existential.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_existential
 // RUN: %target-run %target-swift-reflection-test %t/reflect_existential 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
diff --git a/validation-test/Reflection/reflect_multiple_types.swift b/validation-test/Reflection/reflect_multiple_types.swift
index f0f4caf..6f76f81 100644
--- a/validation-test/Reflection/reflect_multiple_types.swift
+++ b/validation-test/Reflection/reflect_multiple_types.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_multiple_types
 // RUN: %target-run %target-swift-reflection-test %t/reflect_multiple_types 2>&1 | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
 // REQUIRES: objc_interop
@@ -7,6 +7,9 @@
 // FIXME: https://bugs.swift.org/browse/SR-2808
 // XFAIL: resilient_stdlib
 
+// See https://bugs.swift.org/browse/SR-5066, rdar://32511557
+// XFAIL: *
+
 import SwiftReflectionTest
 import Foundation
 
@@ -115,7 +118,7 @@
 // CHECK-64: (class reflect_multiple_types.TestClass)
 
 // CHECK-64: Type info:
-// CHECK-64: (class_instance size=193 alignment=8 stride=200 num_extra_inhabitants=0
+// CHECK-64: (class_instance size=185 alignment=8 stride=192 num_extra_inhabitants=0
 // CHECK-64:   (field name=t00 offset=16
 // CHECK-64:     (struct size=8 alignment=8 stride=8 num_extra_inhabitants=1
 // (unstable implementation details omitted)
diff --git a/validation-test/Sema/protocol_typo_correction.swift b/validation-test/Sema/protocol_typo_correction.swift
index 14feac4..fef105a 100644
--- a/validation-test/Sema/protocol_typo_correction.swift
+++ b/validation-test/Sema/protocol_typo_correction.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -D LIB %s -o %t/Lib.swiftmodule
 // RUN: %target-swift-frontend -I %t -typecheck %s -verify
 // REQUIRES: objc_interop
diff --git a/validation-test/Sema/rdar32204609.swift b/validation-test/Sema/rdar32204609.swift
new file mode 100644
index 0000000..5e14f85
--- /dev/null
+++ b/validation-test/Sema/rdar32204609.swift
@@ -0,0 +1,11 @@
+// RUN: rm -rf %t
+// RUN: mkdir -p %t
+// RUN: %target-build-swift %s -o %t/a.out
+// RUN: %target-run %t/a.out
+
+// REQUIRES: executable_test
+
+let x: Int! = nil
+let y: Int! = 1
+
+print(x == y)
diff --git a/validation-test/Serialization/SR3915.swift b/validation-test/Serialization/SR3915.swift
index 4775381..4f1597e 100644
--- a/validation-test/Serialization/SR3915.swift
+++ b/validation-test/Serialization/SR3915.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -emit-module -o %t/SR3915.swiftmodule %s %S/Inputs/SR3915-other.swift
 
 public enum A {}
diff --git a/validation-test/Serialization/conformance-removed.swift b/validation-test/Serialization/conformance-removed.swift
index 15c851e..807675d 100644
--- a/validation-test/Serialization/conformance-removed.swift
+++ b/validation-test/Serialization/conformance-removed.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -emit-sil -emit-module-path %t/SwiftLib.swiftmodule -I %S/Inputs/conformance-removed/ %S/Inputs/conformance-removed/SwiftLib.swift -Xcc -DUSE_PROTO
 // RUN: not --crash %target-build-swift -typecheck -I %t -I %S/Inputs/custom-modules/ %s 2>&1 | %FileCheck %s
 
diff --git a/validation-test/Serialization/rdar29694978.swift b/validation-test/Serialization/rdar29694978.swift
index dcf9aa1..9530375 100644
--- a/validation-test/Serialization/rdar29694978.swift
+++ b/validation-test/Serialization/rdar29694978.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -import-objc-header %S/Inputs/rdar29694978.h -emit-module -o %t/Library.swiftmodule
 // RUN: %target-swift-ide-test -print-module -module-to-print=Library -source-filename=x -I %S/Inputs/ -I %t | %FileCheck %s
 
diff --git a/validation-test/Serialization/serialization_loops.swift b/validation-test/Serialization/serialization_loops.swift
index a1c776c..8e30220 100644
--- a/validation-test/Serialization/serialization_loops.swift
+++ b/validation-test/Serialization/serialization_loops.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module -import-objc-header %S/Inputs/serialization_loops.h -o %t %S/Inputs/serialization_loops_helper.swift
 // RUN: %target-swift-frontend -emit-module -import-objc-header %S/Inputs/serialization_loops.h -I %t -o %t %S/Inputs/serialization_loops_helper2.swift
 // RUN: %target-swift-frontend -emit-sil -import-objc-header %S/Inputs/serialization_loops.h -I %t -o /dev/null %s
diff --git a/validation-test/StdlibUnittest/CommandLine.swift b/validation-test/StdlibUnittest/CommandLine.swift
index 563e062..731957d 100644
--- a/validation-test/StdlibUnittest/CommandLine.swift
+++ b/validation-test/StdlibUnittest/CommandLine.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/main.out
 // RUN: %target-run %t/main.out | %FileCheck -check-prefix=CHECK-EMPTY %s
 // RUN: %target-run %t/main.out --abc | %FileCheck -check-prefix=CHECK-1 %s
diff --git a/validation-test/compiler_crashers/28663-impl-getgraphindex-typevariables-size-out-of-bounds-index.swift b/validation-test/compiler_crashers/28663-impl-getgraphindex-typevariables-size-out-of-bounds-index.swift
deleted file mode 100644
index a0ee1e3..0000000
--- a/validation-test/compiler_crashers/28663-impl-getgraphindex-typevariables-size-out-of-bounds-index.swift
+++ /dev/null
@@ -1,10 +0,0 @@
-// This source file is part of the Swift.org open source project
-// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
-// Licensed under Apache License v2.0 with Runtime Library Exception
-//
-// See https://swift.org/LICENSE.txt for license information
-// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
-
-// REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
-(_==_{return($0)u
diff --git a/validation-test/compiler_crashers/28664-typevariables-impl-getgraphindex-typevar-type-variable-mismatch.swift b/validation-test/compiler_crashers/28664-typevariables-impl-getgraphindex-typevar-type-variable-mismatch.swift
deleted file mode 100644
index d71feae..0000000
--- a/validation-test/compiler_crashers/28664-typevariables-impl-getgraphindex-typevar-type-variable-mismatch.swift
+++ /dev/null
@@ -1,11 +0,0 @@
-// This source file is part of the Swift.org open source project
-// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
-// Licensed under Apache License v2.0 with Runtime Library Exception
-//
-// See https://swift.org/LICENSE.txt for license information
-// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
-
-// REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
-[.s{return($0
-protocol r
diff --git a/validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift b/validation-test/compiler_crashers/28764-swift-protocolconformanceref-llvm-function-ref-swift-protocolconformanceref-swif.swift
similarity index 81%
copy from validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift
copy to validation-test/compiler_crashers/28764-swift-protocolconformanceref-llvm-function-ref-swift-protocolconformanceref-swif.swift
index 08dc305..639dc6b 100644
--- a/validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift
+++ b/validation-test/compiler_crashers/28764-swift-protocolconformanceref-llvm-function-ref-swift-protocolconformanceref-swif.swift
@@ -6,5 +6,4 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // RUN: not --crash %target-swift-frontend %s -emit-ir
-// REQUIRES: asserts
-{guard let{protocol A{extension{let d}}}let f=d
+protocol P{typealias a}{protocol A:P{{}class a{{}}typealias a:RangeReplaceableCollection
diff --git a/validation-test/compiler_crashers/28742-swift-type-subst-llvm-function-ref-swift-type-swift-substitutabletype-llvm-funct.swift b/validation-test/compiler_crashers/28766-swift-iterativetypechecker-isqualifiedlookupindeclcontextsatisfied-swift-declcon.swift
similarity index 86%
copy from validation-test/compiler_crashers/28742-swift-type-subst-llvm-function-ref-swift-type-swift-substitutabletype-llvm-funct.swift
copy to validation-test/compiler_crashers/28766-swift-iterativetypechecker-isqualifiedlookupindeclcontextsatisfied-swift-declcon.swift
index 4319075..b14096b 100644
--- a/validation-test/compiler_crashers/28742-swift-type-subst-llvm-function-ref-swift-type-swift-substitutabletype-llvm-funct.swift
+++ b/validation-test/compiler_crashers/28766-swift-iterativetypechecker-isqualifiedlookupindeclcontextsatisfied-swift-declcon.swift
@@ -6,4 +6,6 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // RUN: not --crash %target-swift-frontend %s -emit-ir
-protocol P{{}typealias a:=A.a:struct A:P
+protocol P{ a
+typealias e:A.eas ea}class A:Self.a{
+class a:A
diff --git a/validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift b/validation-test/compiler_crashers/28769-conformance-gettypewitness-assoctype-nullptr-isequal-type-conflicting-type-witne.swift
similarity index 80%
copy from validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift
copy to validation-test/compiler_crashers/28769-conformance-gettypewitness-assoctype-nullptr-isequal-type-conflicting-type-witne.swift
index 08dc305..81e2b26 100644
--- a/validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift
+++ b/validation-test/compiler_crashers/28769-conformance-gettypewitness-assoctype-nullptr-isequal-type-conflicting-type-witne.swift
@@ -5,6 +5,6 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -emit-ir
 // REQUIRES: asserts
-{guard let{protocol A{extension{let d}}}let f=d
+// RUN: not --crash %target-swift-frontend %s -emit-ir
+protocol P{{}func a{}typealias e}struct A:P{typealias e:Self.a{}typealias e:Self.a{}typealias e:P
diff --git a/validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift b/validation-test/compiler_crashers/28771-unreachable-executed-at-swift-include-swift-ast-cantypevisitor-h-41.swift
similarity index 85%
copy from validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift
copy to validation-test/compiler_crashers/28771-unreachable-executed-at-swift-include-swift-ast-cantypevisitor-h-41.swift
index 08dc305..effc4cd 100644
--- a/validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift
+++ b/validation-test/compiler_crashers/28771-unreachable-executed-at-swift-include-swift-ast-cantypevisitor-h-41.swift
@@ -6,5 +6,4 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // RUN: not --crash %target-swift-frontend %s -emit-ir
-// REQUIRES: asserts
-{guard let{protocol A{extension{let d}}}let f=d
+protocol A{typealias a{}typealias a=FlattenCollection}protocol b:A
diff --git a/validation-test/compiler_crashers_2/0100-sr4295.swift b/validation-test/compiler_crashers_2/0100-sr4295.swift
index b7a04d2..c3952ee 100644
--- a/validation-test/compiler_crashers_2/0100-sr4295.swift
+++ b/validation-test/compiler_crashers_2/0100-sr4295.swift
@@ -1,5 +1,7 @@
 // RUN: not --crash %target-swift-frontend -emit-ir -primary-file %s
 
+// REQUIRES: asserts
+
 internal protocol _UTFEncoding {
     associatedtype EncodedScalar where EncodedScalar == Int
 }
diff --git a/validation-test/compiler_crashers_2/0101-sr5014.swift b/validation-test/compiler_crashers_2/0101-sr5014.swift
index 3a80de5..cf6b121 100644
--- a/validation-test/compiler_crashers_2/0101-sr5014.swift
+++ b/validation-test/compiler_crashers_2/0101-sr5014.swift
@@ -1,5 +1,7 @@
 // RUN: not --crash %target-swift-frontend -emit-ir -primary-file %s
 
+// REQUIRES: asserts
+
 struct Version {
 }
 
diff --git a/validation-test/compiler_crashers_2_fixed/0068-sr3853.swift b/validation-test/compiler_crashers_2_fixed/0068-sr3853.swift
index 07b705f..fc3206c 100644
--- a/validation-test/compiler_crashers_2_fixed/0068-sr3853.swift
+++ b/validation-test/compiler_crashers_2_fixed/0068-sr3853.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module %s -DLIBRARY -I %S/Inputs/0068-sr3853/ -o %t/Lib.swiftmodule
 // RUN: %target-swift-frontend -emit-sil -primary-file %s %S/Inputs/0068-sr3853/other.swift -I %S/Inputs/0068-sr3853/ -I %t -module-name main -DVALID
 
@@ -19,4 +19,4 @@
 
 func foo(object: GrandSub) { }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/validation-test/compiler_crashers_2_fixed/0071-sr3714.swift b/validation-test/compiler_crashers_2_fixed/0071-sr3714.swift
index 904bd9a..a6a2060 100644
--- a/validation-test/compiler_crashers_2_fixed/0071-sr3714.swift
+++ b/validation-test/compiler_crashers_2_fixed/0071-sr3714.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir %t
+// RUN: %empty-directory(%t)
 // RUN: %target-swift-frontend -emit-module %s -DLIBRARY -o %t/Lib.swiftmodule
 // RUN: %target-swift-frontend -typecheck %s -I %t -verify
 
diff --git a/validation-test/compiler_crashers_2_fixed/0084-rdar31093854.swift b/validation-test/compiler_crashers_2_fixed/0084-rdar31093854.swift
index 7edcf08..9bf1a86 100644
--- a/validation-test/compiler_crashers_2_fixed/0084-rdar31093854.swift
+++ b/validation-test/compiler_crashers_2_fixed/0084-rdar31093854.swift
@@ -1,4 +1,4 @@
-// RUN: not %target-swift-frontend -swift-version 4 %s -typecheck -o /dev/null
+// RUN: %target-swift-frontend -swift-version 4 %s -typecheck -o /dev/null
 
 // This should actually type check successfully.
 
diff --git a/validation-test/compiler_crashers_2/0086-sr4301.swift b/validation-test/compiler_crashers_2_fixed/0086-sr4301.swift
similarity index 68%
rename from validation-test/compiler_crashers_2/0086-sr4301.swift
rename to validation-test/compiler_crashers_2_fixed/0086-sr4301.swift
index 09da123..5cfd2e3 100644
--- a/validation-test/compiler_crashers_2/0086-sr4301.swift
+++ b/validation-test/compiler_crashers_2_fixed/0086-sr4301.swift
@@ -1,4 +1,4 @@
-// RUN: not --crash %target-swift-frontend -typecheck -primary-file %s
+// RUN: not %target-swift-frontend -typecheck -primary-file %s
 
 protocol P {
   init()
diff --git a/validation-test/compiler_crashers_2_fixed/0104-sr4388.swift b/validation-test/compiler_crashers_2_fixed/0104-sr4388.swift
new file mode 100644
index 0000000..e1e0809
--- /dev/null
+++ b/validation-test/compiler_crashers_2_fixed/0104-sr4388.swift
@@ -0,0 +1,11 @@
+// RUN: %target-swift-frontend %s -emit-ir
+
+class IndexPath {
+  init(indexes: [Int]) {}
+}
+
+extension CountableRange where Bound == Int {
+  func indexPaths(inSection section: Bound) -> [IndexPath]  {
+    return reduce([]) { $0 + [IndexPath(indexes: [section, $1])] } 
+  }
+}
diff --git a/validation-test/compiler_crashers_2_fixed/0105-sr1261.swift b/validation-test/compiler_crashers_2_fixed/0105-sr1261.swift
new file mode 100644
index 0000000..9870be7
--- /dev/null
+++ b/validation-test/compiler_crashers_2_fixed/0105-sr1261.swift
@@ -0,0 +1,26 @@
+// RUN: %target-swift-frontend %s -emit-ir
+
+class Expression<A, R> {
+	typealias Arg = A
+	typealias Ret = R
+	subscript(x: Arg) -> Ret! { return nil }
+}
+class Op<A, R> : Expression<A, R> {
+	typealias OpType = (Arg) -> Ret
+	let op: OpType
+	init(op: @escaping OpType) {
+		self.op = op
+		super.init()
+	}
+}
+
+class BinaryOp<A1, A2, R> : Op<((A1, A2)), R> {
+	override init(op: @escaping OpType) {
+		super.init(op: op)
+	}
+	override subscript(x: Arg) -> Ret! {
+		return op(x)
+	}
+}
+let add = BinaryOp<Int, Int, Int> { return $0.0 + $0.1 }
+print(add[(1,1)])
diff --git a/validation-test/compiler_crashers_2_fixed/0105-sr5050.swift b/validation-test/compiler_crashers_2_fixed/0105-sr5050.swift
new file mode 100644
index 0000000..900706a
--- /dev/null
+++ b/validation-test/compiler_crashers_2_fixed/0105-sr5050.swift
@@ -0,0 +1,12 @@
+// RUN: not %target-swift-frontend %s -typecheck
+// REQUIRES: asserts
+
+protocol P {}
+
+func bar(p: P?) {
+  foo(p is String)
+}
+    
+func foo<T>(_: T, _: T) {}
+func foo<T>(_: T?, _: T?) {}
+
diff --git a/validation-test/compiler_crashers_2_fixed/0106-rdar32700180.swift b/validation-test/compiler_crashers_2_fixed/0106-rdar32700180.swift
new file mode 100644
index 0000000..f3cef39
--- /dev/null
+++ b/validation-test/compiler_crashers_2_fixed/0106-rdar32700180.swift
@@ -0,0 +1,19 @@
+// RUN: %target-swift-frontend %s -emit-ir
+// REQUIRES: objc_interop
+
+func f(_: AnyObject?) { }
+
+class C {
+  private var a: Int
+  private var b: Int
+
+  func test() {
+    f((self.a, self.b) as AnyObject)
+  }
+
+  init() {
+    a = 0
+    b = 0
+  }
+}
+
diff --git a/validation-test/compiler_crashers_2_fixed/0107-rdar32700180.swift b/validation-test/compiler_crashers_2_fixed/0107-rdar32700180.swift
new file mode 100644
index 0000000..97b296a
--- /dev/null
+++ b/validation-test/compiler_crashers_2_fixed/0107-rdar32700180.swift
@@ -0,0 +1,14 @@
+// RUN: %target-swift-frontend %s -emit-ir
+struct X<T: Q> {
+  func f(_: T.Z) { }
+}
+
+protocol P {
+  associatedtype A
+  associatedtype B
+}
+
+protocol Q {
+  associatedtype C: P
+  typealias Z = (C.A, C.B)
+}
diff --git a/validation-test/compiler_crashers/28350-swift-typechecker-performtypocorrection.swift b/validation-test/compiler_crashers_fixed/28350-swift-typechecker-performtypocorrection.swift
similarity index 87%
rename from validation-test/compiler_crashers/28350-swift-typechecker-performtypocorrection.swift
rename to validation-test/compiler_crashers_fixed/28350-swift-typechecker-performtypocorrection.swift
index 97137fd..e48931e 100644
--- a/validation-test/compiler_crashers/28350-swift-typechecker-performtypocorrection.swift
+++ b/validation-test/compiler_crashers_fixed/28350-swift-typechecker-performtypocorrection.swift
@@ -5,6 +5,6 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -typecheck
+// RUN: not %target-swift-frontend %s -typecheck
 // REQUIRES: asserts
 struct c{class A:A{}var f=A.s
diff --git a/validation-test/compiler_crashers/28389-swift-lookupvisibledecls.swift b/validation-test/compiler_crashers_fixed/28389-swift-lookupvisibledecls.swift
similarity index 87%
rename from validation-test/compiler_crashers/28389-swift-lookupvisibledecls.swift
rename to validation-test/compiler_crashers_fixed/28389-swift-lookupvisibledecls.swift
index a97928e..63fe9ac 100644
--- a/validation-test/compiler_crashers/28389-swift-lookupvisibledecls.swift
+++ b/validation-test/compiler_crashers_fixed/28389-swift-lookupvisibledecls.swift
@@ -5,6 +5,6 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -typecheck
+// RUN: not %target-swift-frontend %s -typecheck
 // REQUIRES: asserts
 struct B{let d=A.b}class A:A{let a=V
diff --git a/validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift b/validation-test/compiler_crashers_fixed/28482-hasaccessibility-accessibility-not-computed-yet.swift
similarity index 88%
rename from validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift
rename to validation-test/compiler_crashers_fixed/28482-hasaccessibility-accessibility-not-computed-yet.swift
index 08dc305..00f45d8 100644
--- a/validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift
+++ b/validation-test/compiler_crashers_fixed/28482-hasaccessibility-accessibility-not-computed-yet.swift
@@ -5,6 +5,6 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 // REQUIRES: asserts
 {guard let{protocol A{extension{let d}}}let f=d
diff --git a/validation-test/compiler_crashers/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift b/validation-test/compiler_crashers_fixed/28663-impl-getgraphindex-typevariables-size-out-of-bounds-index.swift
similarity index 82%
copy from validation-test/compiler_crashers/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
copy to validation-test/compiler_crashers_fixed/28663-impl-getgraphindex-typevariables-size-out-of-bounds-index.swift
index d626bb2..4793805 100644
--- a/validation-test/compiler_crashers/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
+++ b/validation-test/compiler_crashers_fixed/28663-impl-getgraphindex-typevariables-size-out-of-bounds-index.swift
@@ -5,5 +5,5 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -emit-ir
-protocol b:Self
+// RUN: not %target-swift-frontend %s -emit-ir
+(_==_{return($0)u
diff --git a/validation-test/compiler_crashers/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift b/validation-test/compiler_crashers_fixed/28664-typevariables-impl-getgraphindex-typevar-type-variable-mismatch.swift
similarity index 82%
copy from validation-test/compiler_crashers/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
copy to validation-test/compiler_crashers_fixed/28664-typevariables-impl-getgraphindex-typevar-type-variable-mismatch.swift
index d626bb2..d09b887 100644
--- a/validation-test/compiler_crashers/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
+++ b/validation-test/compiler_crashers_fixed/28664-typevariables-impl-getgraphindex-typevar-type-variable-mismatch.swift
@@ -5,5 +5,6 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -emit-ir
-protocol b:Self
+// RUN: not %target-swift-frontend %s -emit-ir
+[.s{return($0
+protocol r
diff --git a/validation-test/compiler_crashers/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift b/validation-test/compiler_crashers_fixed/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
similarity index 86%
rename from validation-test/compiler_crashers/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
rename to validation-test/compiler_crashers_fixed/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
index d626bb2..03e9930 100644
--- a/validation-test/compiler_crashers/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
+++ b/validation-test/compiler_crashers_fixed/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
@@ -5,5 +5,5 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 protocol b:Self
diff --git a/validation-test/compiler_crashers/28728-d-isbeingvalidated-d-hasvalidsignature.swift b/validation-test/compiler_crashers_fixed/28728-d-isbeingvalidated-d-hasvalidsignature.swift
similarity index 87%
rename from validation-test/compiler_crashers/28728-d-isbeingvalidated-d-hasvalidsignature.swift
rename to validation-test/compiler_crashers_fixed/28728-d-isbeingvalidated-d-hasvalidsignature.swift
index 57e4115..8f0ba7d 100644
--- a/validation-test/compiler_crashers/28728-d-isbeingvalidated-d-hasvalidsignature.swift
+++ b/validation-test/compiler_crashers_fixed/28728-d-isbeingvalidated-d-hasvalidsignature.swift
@@ -6,6 +6,6 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 typealias e:a
 struct A:a{}typealias a=A
diff --git a/validation-test/compiler_crashers/28733-parent-parent-is-nominaltype-parent-is-boundgenerictype-parent-is-unboundgeneric.swift b/validation-test/compiler_crashers_fixed/28733-parent-parent-is-nominaltype-parent-is-boundgenerictype-parent-is-unboundgeneric.swift
similarity index 87%
rename from validation-test/compiler_crashers/28733-parent-parent-is-nominaltype-parent-is-boundgenerictype-parent-is-unboundgeneric.swift
rename to validation-test/compiler_crashers_fixed/28733-parent-parent-is-nominaltype-parent-is-boundgenerictype-parent-is-unboundgeneric.swift
index 9482b4a..9b66b76 100644
--- a/validation-test/compiler_crashers/28733-parent-parent-is-nominaltype-parent-is-boundgenerictype-parent-is-unboundgeneric.swift
+++ b/validation-test/compiler_crashers_fixed/28733-parent-parent-is-nominaltype-parent-is-boundgenerictype-parent-is-unboundgeneric.swift
@@ -6,5 +6,5 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 protocol P{class a:Self.a
diff --git a/validation-test/compiler_crashers/28742-swift-type-subst-llvm-function-ref-swift-type-swift-substitutabletype-llvm-funct.swift b/validation-test/compiler_crashers_fixed/28742-swift-type-subst-llvm-function-ref-swift-type-swift-substitutabletype-llvm-funct.swift
similarity index 87%
rename from validation-test/compiler_crashers/28742-swift-type-subst-llvm-function-ref-swift-type-swift-substitutabletype-llvm-funct.swift
rename to validation-test/compiler_crashers_fixed/28742-swift-type-subst-llvm-function-ref-swift-type-swift-substitutabletype-llvm-funct.swift
index 4319075..0242964 100644
--- a/validation-test/compiler_crashers/28742-swift-type-subst-llvm-function-ref-swift-type-swift-substitutabletype-llvm-funct.swift
+++ b/validation-test/compiler_crashers_fixed/28742-swift-type-subst-llvm-function-ref-swift-type-swift-substitutabletype-llvm-funct.swift
@@ -5,5 +5,5 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 protocol P{{}typealias a:=A.a:struct A:P
diff --git a/validation-test/compiler_crashers/28743-swift-typechecker-substmembertypewithbase-swift-moduledecl-swift-typedecl-swift-.swift b/validation-test/compiler_crashers_fixed/28743-swift-typechecker-substmembertypewithbase-swift-moduledecl-swift-typedecl-swift-.swift
similarity index 87%
rename from validation-test/compiler_crashers/28743-swift-typechecker-substmembertypewithbase-swift-moduledecl-swift-typedecl-swift-.swift
rename to validation-test/compiler_crashers_fixed/28743-swift-typechecker-substmembertypewithbase-swift-moduledecl-swift-typedecl-swift-.swift
index fd6d161..0b92258 100644
--- a/validation-test/compiler_crashers/28743-swift-typechecker-substmembertypewithbase-swift-moduledecl-swift-typedecl-swift-.swift
+++ b/validation-test/compiler_crashers_fixed/28743-swift-typechecker-substmembertypewithbase-swift-moduledecl-swift-typedecl-swift-.swift
@@ -5,5 +5,5 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 protocol P}extension P{typealias a:Self.a{}func a:Self.a
diff --git a/validation-test/compiler_crashers/28745-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift b/validation-test/compiler_crashers_fixed/28745-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift
similarity index 87%
rename from validation-test/compiler_crashers/28745-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift
rename to validation-test/compiler_crashers_fixed/28745-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift
index 7461adb..f9d112f 100644
--- a/validation-test/compiler_crashers/28745-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift
+++ b/validation-test/compiler_crashers_fixed/28745-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift
@@ -6,5 +6,5 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 &{LazyFilterIndex{
diff --git a/validation-test/compiler_crashers/28748-genericenv-nullptr-too-much-circularity.swift b/validation-test/compiler_crashers_fixed/28748-genericenv-nullptr-too-much-circularity.swift
similarity index 88%
rename from validation-test/compiler_crashers/28748-genericenv-nullptr-too-much-circularity.swift
rename to validation-test/compiler_crashers_fixed/28748-genericenv-nullptr-too-much-circularity.swift
index 7dd56b9..8d68e87 100644
--- a/validation-test/compiler_crashers/28748-genericenv-nullptr-too-much-circularity.swift
+++ b/validation-test/compiler_crashers_fixed/28748-genericenv-nullptr-too-much-circularity.swift
@@ -6,5 +6,5 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 protocol A:a{{}typealias e:a}{}class a:A{typealias e:b
diff --git a/validation-test/compiler_crashers/28751-membertype-missing-type-witness.swift b/validation-test/compiler_crashers_fixed/28751-membertype-missing-type-witness.swift
similarity index 88%
rename from validation-test/compiler_crashers/28751-membertype-missing-type-witness.swift
rename to validation-test/compiler_crashers_fixed/28751-membertype-missing-type-witness.swift
index dbf30be..da91b69 100644
--- a/validation-test/compiler_crashers/28751-membertype-missing-type-witness.swift
+++ b/validation-test/compiler_crashers_fixed/28751-membertype-missing-type-witness.swift
@@ -6,5 +6,5 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 {class a:P{{}typealias a:Self.a}protocol P{typealias a
diff --git a/validation-test/compiler_crashers/28752-hasinterfacetype-no-interface-type-was-set.swift b/validation-test/compiler_crashers_fixed/28752-hasinterfacetype-no-interface-type-was-set.swift
similarity index 88%
rename from validation-test/compiler_crashers/28752-hasinterfacetype-no-interface-type-was-set.swift
rename to validation-test/compiler_crashers_fixed/28752-hasinterfacetype-no-interface-type-was-set.swift
index 10271f6..675bf9e 100644
--- a/validation-test/compiler_crashers/28752-hasinterfacetype-no-interface-type-was-set.swift
+++ b/validation-test/compiler_crashers_fixed/28752-hasinterfacetype-no-interface-type-was-set.swift
@@ -6,5 +6,5 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 @objc protocol P{typealias e:P{}var a}{}extension P{typealias e:P
diff --git a/validation-test/compiler_crashers/28753-conforms-equivclass-conformsto-end.swift b/validation-test/compiler_crashers_fixed/28753-conforms-equivclass-conformsto-end.swift
similarity index 87%
rename from validation-test/compiler_crashers/28753-conforms-equivclass-conformsto-end.swift
rename to validation-test/compiler_crashers_fixed/28753-conforms-equivclass-conformsto-end.swift
index 66e67fc..f14b655 100644
--- a/validation-test/compiler_crashers/28753-conforms-equivclass-conformsto-end.swift
+++ b/validation-test/compiler_crashers_fixed/28753-conforms-equivclass-conformsto-end.swift
@@ -6,5 +6,5 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 protocol A:A{{}class a{let ca{a{
diff --git a/validation-test/compiler_crashers/28760-dist-0-nested-type-should-have-matched-associated-type.swift b/validation-test/compiler_crashers_fixed/28760-dist-0-nested-type-should-have-matched-associated-type.swift
similarity index 88%
rename from validation-test/compiler_crashers/28760-dist-0-nested-type-should-have-matched-associated-type.swift
rename to validation-test/compiler_crashers_fixed/28760-dist-0-nested-type-should-have-matched-associated-type.swift
index 409b350..80bca15 100644
--- a/validation-test/compiler_crashers/28760-dist-0-nested-type-should-have-matched-associated-type.swift
+++ b/validation-test/compiler_crashers_fixed/28760-dist-0-nested-type-should-have-matched-associated-type.swift
@@ -6,5 +6,5 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 protocol P{typealias e:P{}class a{{}func a:Self.a.e
diff --git a/validation-test/compiler_crashers/28761-allowoverwrite-e-haslvalueaccesskind-l-value-access-kind-has-already-been-set.swift b/validation-test/compiler_crashers_fixed/28761-allowoverwrite-e-haslvalueaccesskind-l-value-access-kind-has-already-been-set.swift
similarity index 87%
rename from validation-test/compiler_crashers/28761-allowoverwrite-e-haslvalueaccesskind-l-value-access-kind-has-already-been-set.swift
rename to validation-test/compiler_crashers_fixed/28761-allowoverwrite-e-haslvalueaccesskind-l-value-access-kind-has-already-been-set.swift
index 70f0ba5..eb3ce30 100644
--- a/validation-test/compiler_crashers/28761-allowoverwrite-e-haslvalueaccesskind-l-value-access-kind-has-already-been-set.swift
+++ b/validation-test/compiler_crashers_fixed/28761-allowoverwrite-e-haslvalueaccesskind-l-value-access-kind-has-already-been-set.swift
@@ -6,5 +6,5 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 &_ is Character
diff --git a/validation-test/compiler_crashers/28762-valuetype-hasunboundgenerictype-valuetype-hastypeparameter.swift b/validation-test/compiler_crashers_fixed/28762-valuetype-hasunboundgenerictype-valuetype-hastypeparameter.swift
similarity index 87%
rename from validation-test/compiler_crashers/28762-valuetype-hasunboundgenerictype-valuetype-hastypeparameter.swift
rename to validation-test/compiler_crashers_fixed/28762-valuetype-hasunboundgenerictype-valuetype-hastypeparameter.swift
index 5f1c5d6..963d2de 100644
--- a/validation-test/compiler_crashers/28762-valuetype-hasunboundgenerictype-valuetype-hastypeparameter.swift
+++ b/validation-test/compiler_crashers_fixed/28762-valuetype-hasunboundgenerictype-valuetype-hastypeparameter.swift
@@ -6,5 +6,5 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 guard let f==A:UnfoldSequence
diff --git a/validation-test/compiler_crashers/28763-swift-typebase-getcanonicaltype.swift b/validation-test/compiler_crashers_fixed/28763-swift-typebase-getcanonicaltype.swift
similarity index 87%
rename from validation-test/compiler_crashers/28763-swift-typebase-getcanonicaltype.swift
rename to validation-test/compiler_crashers_fixed/28763-swift-typebase-getcanonicaltype.swift
index 36aa305..1f1e769 100644
--- a/validation-test/compiler_crashers/28763-swift-typebase-getcanonicaltype.swift
+++ b/validation-test/compiler_crashers_fixed/28763-swift-typebase-getcanonicaltype.swift
@@ -5,5 +5,5 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -emit-ir
+// RUN: not %target-swift-frontend %s -emit-ir
 protocol P{func a}extension P{lazy var f=a
diff --git a/validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift b/validation-test/compiler_crashers_fixed/28765-inprotocol-isrequirementsignaturecomputed-missing-signature.swift
similarity index 76%
copy from validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift
copy to validation-test/compiler_crashers_fixed/28765-inprotocol-isrequirementsignaturecomputed-missing-signature.swift
index 08dc305..a50bb7f 100644
--- a/validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift
+++ b/validation-test/compiler_crashers_fixed/28765-inprotocol-isrequirementsignaturecomputed-missing-signature.swift
@@ -5,6 +5,6 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -emit-ir
 // REQUIRES: asserts
-{guard let{protocol A{extension{let d}}}let f=d
+// RUN: not %target-swift-frontend %s -emit-ir
+protocol P{{}class a:A{}protocol A:P.a{typealias a{}func a:a
diff --git a/validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift b/validation-test/compiler_crashers_fixed/28767-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift
similarity index 77%
copy from validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift
copy to validation-test/compiler_crashers_fixed/28767-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift
index 08dc305..5eba003 100644
--- a/validation-test/compiler_crashers/28482-hasaccessibility-accessibility-not-computed-yet.swift
+++ b/validation-test/compiler_crashers_fixed/28767-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift
@@ -5,6 +5,6 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -emit-ir
 // REQUIRES: asserts
-{guard let{protocol A{extension{let d}}}let f=d
+// RUN: not %target-swift-frontend %s -emit-ir
+@objc protocol P{struct B{var f=_=a{}}class a{}typealias a
diff --git a/validation-test/compiler_crashers/28745-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift b/validation-test/compiler_crashers_fixed/28768-isactuallycanonicalornull-forming-a-cantype-out-of-a-non-canonical-type.swift
similarity index 82%
copy from validation-test/compiler_crashers/28745-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift
copy to validation-test/compiler_crashers_fixed/28768-isactuallycanonicalornull-forming-a-cantype-out-of-a-non-canonical-type.swift
index 7461adb..5b4f0e4 100644
--- a/validation-test/compiler_crashers/28745-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift
+++ b/validation-test/compiler_crashers_fixed/28768-isactuallycanonicalornull-forming-a-cantype-out-of-a-non-canonical-type.swift
@@ -6,5 +6,6 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
-&{LazyFilterIndex{
+// RUN: not %target-swift-frontend %s -emit-ir
+Indexable
+& ManagedBuffer
diff --git a/validation-test/compiler_crashers/28350-swift-typechecker-performtypocorrection.swift b/validation-test/compiler_crashers_fixed/28770-selfty-isequal-proto-getselfinterfacetype.swift
similarity index 78%
copy from validation-test/compiler_crashers/28350-swift-typechecker-performtypocorrection.swift
copy to validation-test/compiler_crashers_fixed/28770-selfty-isequal-proto-getselfinterfacetype.swift
index 97137fd..8c2d8ea 100644
--- a/validation-test/compiler_crashers/28350-swift-typechecker-performtypocorrection.swift
+++ b/validation-test/compiler_crashers_fixed/28770-selfty-isequal-proto-getselfinterfacetype.swift
@@ -5,6 +5,6 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -typecheck
 // REQUIRES: asserts
-struct c{class A:A{}var f=A.s
+// RUN: not %target-swift-frontend %s -emit-ir
+protocol P{protocol b:P{{}typealias e:a.a}typealias a
diff --git a/validation-test/compiler_crashers/28745-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift b/validation-test/compiler_crashers_fixed/28772-loc-isvalid-diagnosing-attribute-with-invalid-location.swift
similarity index 82%
copy from validation-test/compiler_crashers/28745-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift
copy to validation-test/compiler_crashers_fixed/28772-loc-isvalid-diagnosing-attribute-with-invalid-location.swift
index 7461adb..615f29c 100644
--- a/validation-test/compiler_crashers/28745-ty-getnominalorboundgenericnominal-ty-is-dynamicselftype-ty-isexistentialtype-ty.swift
+++ b/validation-test/compiler_crashers_fixed/28772-loc-isvalid-diagnosing-attribute-with-invalid-location.swift
@@ -6,5 +6,6 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
 // REQUIRES: asserts
-// RUN: not --crash %target-swift-frontend %s -emit-ir
-&{LazyFilterIndex{
+// RUN: not %target-swift-frontend %s -emit-ir
+class a{@objc@dynamic
+let d
diff --git a/validation-test/compiler_crashers/28742-swift-type-subst-llvm-function-ref-swift-type-swift-substitutabletype-llvm-funct.swift b/validation-test/compiler_crashers_fixed/28773-unreachable-executed-at-swift-lib-sema-cssimplify-cpp-4808.swift
similarity index 77%
copy from validation-test/compiler_crashers/28742-swift-type-subst-llvm-function-ref-swift-type-swift-substitutabletype-llvm-funct.swift
copy to validation-test/compiler_crashers_fixed/28773-unreachable-executed-at-swift-lib-sema-cssimplify-cpp-4808.swift
index 4319075..8e53a26 100644
--- a/validation-test/compiler_crashers/28742-swift-type-subst-llvm-function-ref-swift-type-swift-substitutabletype-llvm-funct.swift
+++ b/validation-test/compiler_crashers_fixed/28773-unreachable-executed-at-swift-lib-sema-cssimplify-cpp-4808.swift
@@ -5,5 +5,5 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -emit-ir
-protocol P{{}typealias a:=A.a:struct A:P
+// RUN: not %target-swift-frontend %s -emit-ir
+@objc protocol P{{}typealias a{}class a{let c=a{
diff --git a/validation-test/compiler_crashers/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift b/validation-test/compiler_crashers_fixed/28774-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
similarity index 77%
copy from validation-test/compiler_crashers/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
copy to validation-test/compiler_crashers_fixed/28774-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
index d626bb2..3a3afa4 100644
--- a/validation-test/compiler_crashers/28693-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
+++ b/validation-test/compiler_crashers_fixed/28774-swift-genericenvironment-queryinterfacetypesubstitutions-operator-swift-substitu.swift
@@ -5,5 +5,6 @@
 // See https://swift.org/LICENSE.txt for license information
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 
-// RUN: not --crash %target-swift-frontend %s -emit-ir
-protocol b:Self
+// RUN: not %target-swift-frontend %s -emit-ir
+protocol P{typealias e:P.e
+protocol P{typealias e:Self
diff --git a/validation-test/execution/dsohandle-multi-module.swift b/validation-test/execution/dsohandle-multi-module.swift
index b901347..314a80c 100644
--- a/validation-test/execution/dsohandle-multi-module.swift
+++ b/validation-test/execution/dsohandle-multi-module.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: (cd %t && %target-build-swift %S/Inputs/dsohandle-first.swift -emit-library -emit-module -module-name first)
 // RUN: (cd %t && %target-build-swift %S/Inputs/dsohandle-second.swift -emit-library -emit-module -module-name second)
diff --git a/validation-test/execution/interpret-with-dependencies-linux.swift b/validation-test/execution/interpret-with-dependencies-linux.swift
index 27f5bca..809d9b1 100644
--- a/validation-test/execution/interpret-with-dependencies-linux.swift
+++ b/validation-test/execution/interpret-with-dependencies-linux.swift
@@ -1,5 +1,5 @@
 // REQUIRES: OS=linux-gnu
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: echo 'int abc = 42;' | %clang -x c - -shared -fPIC -o %t/libabc.so
 // RUN: echo 'int test() { extern int abc; return abc; }' | %clang -x c - -L%t -shared -fPIC -labc -o %t/libfoo.so
@@ -8,11 +8,11 @@
 // CHECK: {{okay}}
 
 // Now test a dependency on a library in the compiler's resource directory.
-// RUN: mkdir -p %t/rsrc/%target-sdk-name/
+// RUN: %empty-directory(%t/rsrc/%target-sdk-name)
 // RUN: ln -s %t/libabc.so %t/rsrc/%target-sdk-name/
 // RUN: ln -s %platform-module-dir/../* %t/rsrc/%target-sdk-name/
 // RUN: ln -s %platform-module-dir/../../shims %t/rsrc/
-// RUN: mkdir -p %t/other
+// RUN: %empty-directory(%t/other)
 // RUN: ln -s %t/libfoo.so %t/other
 
 // RUN: %swift_driver -I %S/Inputs/custom-modules -L%t/other -resource-dir %t/rsrc/ %s | %FileCheck %s
diff --git a/validation-test/execution/interpret-with-dependencies.swift b/validation-test/execution/interpret-with-dependencies.swift
index 5fef6b3..0e37f49b 100644
--- a/validation-test/execution/interpret-with-dependencies.swift
+++ b/validation-test/execution/interpret-with-dependencies.swift
@@ -1,5 +1,5 @@
 // REQUIRES: OS=macosx
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: echo 'int abc = 42;' | %clang -x c - -dynamiclib -Xlinker -install_name -Xlinker libabc.dylib -o %t/libabc.dylib
 // RUN: echo 'int test() { extern int abc; return abc; }' | %clang -x c - -L%t -dynamiclib -labc -o %t/libfoo.dylib
@@ -8,11 +8,11 @@
 // CHECK: {{okay}}
 
 // Now test a dependency on a library in the compiler's resource directory.
-// RUN: mkdir -p %t/rsrc/%target-sdk-name/
+// RUN: %empty-directory(%t/rsrc/%target-sdk-name)
 // RUN: ln -s %t/libabc.dylib %t/rsrc/%target-sdk-name/
 // RUN: ln -s %platform-module-dir/../* %t/rsrc/%target-sdk-name/
 // RUN: ln -s %platform-module-dir/../../shims %t/rsrc/
-// RUN: mkdir -p %t/other
+// RUN: %empty-directory(%t/other)
 // RUN: ln -s %t/libfoo.dylib %t/other
 
 // RUN: %swift_driver -I %S/Inputs/custom-modules -L%t/other -resource-dir %t/rsrc/ %s | %FileCheck %s
diff --git a/validation-test/execution/testability.swift b/validation-test/execution/testability.swift
index 590144d..6b48e55 100644
--- a/validation-test/execution/testability.swift
+++ b/validation-test/execution/testability.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // This file is intended to match the run lines in
 // test/Interpreter/testability.swift, but with -O added to all compilations.
diff --git a/validation-test/stdlib/ArrayBridging.swift b/validation-test/stdlib/ArrayBridging.swift
index a6bea01..3d24c1e 100644
--- a/validation-test/stdlib/ArrayBridging.swift
+++ b/validation-test/stdlib/ArrayBridging.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang -fobjc-arc %S/Inputs/SlurpFastEnumeration/SlurpFastEnumeration.m -c -o %t/SlurpFastEnumeration.o
 // RUN: echo '#sourceLocation(file: "%s", line: 1)' > "%t/main.swift" && cat "%s" >> "%t/main.swift" && chmod -w "%t/main.swift"
diff --git a/validation-test/stdlib/ArrayNew.swift.gyb b/validation-test/stdlib/ArrayNew.swift.gyb
index e0d2a7b..5c62c3e 100644
--- a/validation-test/stdlib/ArrayNew.swift.gyb
+++ b/validation-test/stdlib/ArrayNew.swift.gyb
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %gyb %s -o %t/main.swift
 // RUN: if [ %target-runtime == "objc" ]; then \
diff --git a/validation-test/stdlib/ArrayTraps.swift.gyb b/validation-test/stdlib/ArrayTraps.swift.gyb
index 51ed5a8..d2993d4 100644
--- a/validation-test/stdlib/ArrayTraps.swift.gyb
+++ b/validation-test/stdlib/ArrayTraps.swift.gyb
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %gyb %s -o %t/ArrayTraps.swift
 // RUN: %line-directive %t/ArrayTraps.swift -- %target-build-swift %t/ArrayTraps.swift -o %t/a.out_Debug
 // RUN: %line-directive %t/ArrayTraps.swift -- %target-build-swift %t/ArrayTraps.swift -o %t/a.out_Release -O
diff --git a/validation-test/stdlib/ArrayTrapsObjC.swift.gyb b/validation-test/stdlib/ArrayTrapsObjC.swift.gyb
index 31490b2..49f71ae 100644
--- a/validation-test/stdlib/ArrayTrapsObjC.swift.gyb
+++ b/validation-test/stdlib/ArrayTrapsObjC.swift.gyb
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %gyb %s -o %t/ArrayTraps.swift
 // RUN: %line-directive %t/ArrayTraps.swift -- %target-build-swift %t/ArrayTraps.swift -o %t/a.out_Debug
 // RUN: %line-directive %t/ArrayTraps.swift -- %target-build-swift %t/ArrayTraps.swift -o %t/a.out_Release -O
diff --git a/validation-test/stdlib/Assert.swift b/validation-test/stdlib/Assert.swift
index 1822640..748be9e 100644
--- a/validation-test/stdlib/Assert.swift
+++ b/validation-test/stdlib/Assert.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -Xfrontend -disable-access-control -o %t/Assert_Debug
 // RUN: %target-build-swift %s -Xfrontend -disable-access-control -o %t/Assert_Release -O
 // RUN: %target-build-swift %s -Xfrontend -disable-access-control -o %t/Assert_Unchecked -Ounchecked
diff --git a/validation-test/stdlib/AtomicInt.swift b/validation-test/stdlib/AtomicInt.swift
index b076bce..158029f 100644
--- a/validation-test/stdlib/AtomicInt.swift
+++ b/validation-test/stdlib/AtomicInt.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-build-swift -module-name a %s -o %t.out -O
 // RUN: %target-run %t.out
diff --git a/validation-test/stdlib/CollectionCasts.swift.gyb b/validation-test/stdlib/CollectionCasts.swift.gyb
index 0d687c7..3c39a10 100644
--- a/validation-test/stdlib/CollectionCasts.swift.gyb
+++ b/validation-test/stdlib/CollectionCasts.swift.gyb
@@ -9,8 +9,7 @@
 // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
 //
 //===----------------------------------------------------------------------===//
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %gyb %s -o %t/CollectionCasts.swift
 // RUN: %line-directive %t/CollectionCasts.swift -- %target-build-swift %t/CollectionCasts.swift -o %t/a.out
 // RUN: %line-directive %t/CollectionCasts.swift -- %target-run %t/a.out 2>&1
diff --git a/validation-test/stdlib/CoreData.swift b/validation-test/stdlib/CoreData.swift
index 10f1370..dabeade 100644
--- a/validation-test/stdlib/CoreData.swift
+++ b/validation-test/stdlib/CoreData.swift
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t
+// RUN: %empty-directory(%t)
 
 // RUN: %target-clang %S/Inputs/CoreDataHelper/CoreDataHelper.m -c -o %t/CoreDataHelper.o -g -fmodules
 // RUN: %target-build-swift %s -import-objc-header %S/Inputs/CoreDataHelper/CoreDataHelper.h -Xlinker %t/CoreDataHelper.o -o %t/main
diff --git a/validation-test/stdlib/Dictionary.swift b/validation-test/stdlib/Dictionary.swift
index 752514b..0e93771 100644
--- a/validation-test/stdlib/Dictionary.swift
+++ b/validation-test/stdlib/Dictionary.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %gyb %s -o %t/main.swift
 // RUN: if [ %target-runtime == "objc" ]; then \
@@ -478,7 +477,7 @@
   }
 }
 
-DictionaryTestSuite.test("COW.Fast.MergeDoesNotReallocate") {
+DictionaryTestSuite.test("COW.Fast.MergeSequenceDoesNotReallocate") {
   do {
     var d1 = getCOWFastDictionary()
     var identity1 = d1._rawIdentifier()
@@ -502,6 +501,13 @@
     assert(d1.count == 7)
     assert(d1[30]! == 1030)
     assert(d1[70]! == 2070)
+
+    let d2 = d1.merging([(40, 3040), (80, 3080)]) { _, y in y }
+    assert(identity1 == d1._rawIdentifier())
+    assert(identity1 != d2._rawIdentifier())
+    assert(d2.count == 8)
+    assert(d2[40]! == 3040)
+    assert(d2[80]! == 3080)
   }
 
   do {
@@ -592,6 +598,127 @@
   }
 }
 
+DictionaryTestSuite.test("COW.Fast.MergeDictionaryDoesNotReallocate") {
+  do {
+    var d1 = getCOWFastDictionary()
+    var identity1 = d1._rawIdentifier()
+
+    // Merge some new values.
+    d1.merge([40: 2040, 50: 2050]) { _, y in y }
+    assert(identity1 == d1._rawIdentifier())
+    assert(d1.count == 5)
+    assert(d1[50]! == 2050)
+
+    // Merge and overwrite some existing values.
+    d1.merge([10: 2010, 60: 2060]) { _, y in y }
+    assert(identity1 == d1._rawIdentifier())
+    assert(d1.count == 6)
+    assert(d1[10]! == 2010)
+    assert(d1[60]! == 2060)
+
+    // Merge, keeping existing values.
+    d1.merge([30: 2030, 70: 2070]) { x, _ in x }
+    assert(identity1 == d1._rawIdentifier())
+    assert(d1.count == 7)
+    assert(d1[30]! == 1030)
+    assert(d1[70]! == 2070)
+
+    let d2 = d1.merging([40: 3040, 80: 3080]) { _, y in y }
+    assert(identity1 == d1._rawIdentifier())
+    assert(identity1 != d2._rawIdentifier())
+    assert(d2.count == 8)
+    assert(d2[40]! == 3040)
+    assert(d2[80]! == 3080)
+  }
+
+  do {
+    var d1 = getCOWFastDictionary()
+    var identity1 = d1._rawIdentifier()
+
+    var d2 = d1
+    assert(identity1 == d1._rawIdentifier())
+    assert(identity1 == d2._rawIdentifier())
+
+    // Merge some new values.
+    d2.merge([40: 2040, 50: 2050]) { _, y in y }
+    assert(identity1 == d1._rawIdentifier())
+    assert(identity1 != d2._rawIdentifier())
+
+    assert(d1.count == 3)
+    assert(d1[10]! == 1010)
+    assert(d1[20]! == 1020)
+    assert(d1[30]! == 1030)
+    assert(d1[40] == nil)
+
+    assert(d2.count == 5)
+    assert(d2[10]! == 1010)
+    assert(d2[20]! == 1020)
+    assert(d2[30]! == 1030)
+    assert(d2[40]! == 2040)
+    assert(d2[50]! == 2050)
+
+    // Keep variables alive.
+    _fixLifetime(d1)
+    _fixLifetime(d2)
+  }
+
+  do {
+    var d1 = getCOWFastDictionary()
+    var identity1 = d1._rawIdentifier()
+
+    var d2 = d1
+    assert(identity1 == d1._rawIdentifier())
+    assert(identity1 == d2._rawIdentifier())
+
+    // Merge and overwrite some existing values.
+    d2.merge([10: 2010]) { _, y in y }
+    assert(identity1 == d1._rawIdentifier())
+    assert(identity1 != d2._rawIdentifier())
+
+    assert(d1.count == 3)
+    assert(d1[10]! == 1010)
+    assert(d1[20]! == 1020)
+    assert(d1[30]! == 1030)
+
+    assert(d2.count == 3)
+    assert(d2[10]! == 2010)
+    assert(d2[20]! == 1020)
+    assert(d2[30]! == 1030)
+
+    // Keep variables alive.
+    _fixLifetime(d1)
+    _fixLifetime(d2)
+  }
+
+  do {
+    var d1 = getCOWFastDictionary()
+    var identity1 = d1._rawIdentifier()
+
+    var d2 = d1
+    assert(identity1 == d1._rawIdentifier())
+    assert(identity1 == d2._rawIdentifier())
+
+    // Merge, keeping existing values.
+    d2.merge([10: 2010]) { x, _ in x }
+    assert(identity1 == d1._rawIdentifier())
+    assert(identity1 != d2._rawIdentifier())
+
+    assert(d1.count == 3)
+    assert(d1[10]! == 1010)
+    assert(d1[20]! == 1020)
+    assert(d1[30]! == 1030)
+
+    assert(d2.count == 3)
+    assert(d2[10]! == 1010)
+    assert(d2[20]! == 1020)
+    assert(d2[30]! == 1030)
+
+    // Keep variables alive.
+    _fixLifetime(d1)
+    _fixLifetime(d2)
+  }
+}
+
 DictionaryTestSuite.test("COW.Fast.DefaultedSubscriptDoesNotReallocate") {
   do {
     var d1 = getCOWFastDictionary()
diff --git a/validation-test/stdlib/DictionaryBridging.swift b/validation-test/stdlib/DictionaryBridging.swift
index 2dc33e4..bb2b51c 100644
--- a/validation-test/stdlib/DictionaryBridging.swift
+++ b/validation-test/stdlib/DictionaryBridging.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %target-clang -fobjc-arc %S/Inputs/SlurpFastEnumeration/SlurpFastEnumeration.m -c -o %t/SlurpFastEnumeration.o
 // RUN: echo '#sourceLocation(file: "%s", line: 1)' > "%t/main.swift" && cat "%s" >> "%t/main.swift" && chmod -w "%t/main.swift"
diff --git a/validation-test/stdlib/DictionaryTrapsObjC.swift b/validation-test/stdlib/DictionaryTrapsObjC.swift
index cc14943..80dcdfe 100644
--- a/validation-test/stdlib/DictionaryTrapsObjC.swift
+++ b/validation-test/stdlib/DictionaryTrapsObjC.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out_Debug
 // RUN: %target-build-swift %s -o %t/a.out_Release -O
 //
diff --git a/validation-test/stdlib/FixedPointArithmeticTraps.swift.gyb b/validation-test/stdlib/FixedPointArithmeticTraps.swift.gyb
index 6983b3a..4ed2f92 100644
--- a/validation-test/stdlib/FixedPointArithmeticTraps.swift.gyb
+++ b/validation-test/stdlib/FixedPointArithmeticTraps.swift.gyb
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %gyb %s -o %t/FixedPointArithmeticTraps.swift
 // RUN: %line-directive %t/FixedPointArithmeticTraps.swift -- %target-build-swift %t/FixedPointArithmeticTraps.swift -o %t/a.out_Debug
 // RUN: %line-directive %t/FixedPointArithmeticTraps.swift -- %target-build-swift %t/FixedPointArithmeticTraps.swift -o %t/a.out_Release -O
diff --git a/validation-test/stdlib/FixedPointConversion.swift.gyb b/validation-test/stdlib/FixedPointConversion.swift.gyb
index 707b7ef..13e75ff 100644
--- a/validation-test/stdlib/FixedPointConversion.swift.gyb
+++ b/validation-test/stdlib/FixedPointConversion.swift.gyb
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %S/../../utils/gyb %s -o %t/FixedPointConversion.swift
 // RUN: %S/../../utils/line-directive %t/FixedPointConversion.swift -- %target-build-swift %t/FixedPointConversion.swift -o %t/a.out_Debug
 // RUN: %S/../../utils/line-directive %t/FixedPointConversion.swift -- %target-build-swift %t/FixedPointConversion.swift -o %t/a.out_Release -O
diff --git a/validation-test/stdlib/FixedPointDiagnostics.swift.gyb b/validation-test/stdlib/FixedPointDiagnostics.swift.gyb
index d62331c..9caccb2 100644
--- a/validation-test/stdlib/FixedPointDiagnostics.swift.gyb
+++ b/validation-test/stdlib/FixedPointDiagnostics.swift.gyb
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && mkdir -p %t && %gyb %s -o %t/main.swift
+// RUN: %empty-directory(%t)
+// RUN: %gyb %s -o %t/main.swift
 // RUN: %line-directive %t/main.swift -- %target-swift-frontend -typecheck -verify -swift-version 3 %t/main.swift
 
 func testUnaryMinusInUnsigned() {
diff --git a/validation-test/stdlib/FloatingPointConversion.swift.gyb b/validation-test/stdlib/FloatingPointConversion.swift.gyb
index 83e9b07..1632b6c 100644
--- a/validation-test/stdlib/FloatingPointConversion.swift.gyb
+++ b/validation-test/stdlib/FloatingPointConversion.swift.gyb
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %gyb %s -o %t/FloatingPointConversion.swift
 // RUN: %line-directive %t/FloatingPointConversion.swift -- %target-build-swift %t/FloatingPointConversion.swift -Xfrontend -disable-access-control -o %t/a.out_Debug
 // RUN: %line-directive %t/FloatingPointConversion.swift -- %target-build-swift %t/FloatingPointConversion.swift -Xfrontend -disable-access-control -o %t/a.out_Release -O
diff --git a/validation-test/stdlib/MicroStdlib/MicroStdlib.swift b/validation-test/stdlib/MicroStdlib/MicroStdlib.swift
index 3496403..9bd948c 100644
--- a/validation-test/stdlib/MicroStdlib/MicroStdlib.swift
+++ b/validation-test/stdlib/MicroStdlib/MicroStdlib.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift -c -force-single-frontend-invocation -parse-as-library -parse-stdlib -module-name Swift -emit-module -emit-module-path %t/Swift.swiftmodule -o %t/Swift.o %S/Inputs/Swift.swift
 // RUN: ls %t/Swift.swiftmodule
 // RUN: ls %t/Swift.swiftdoc
diff --git a/validation-test/stdlib/NewArray.swift.gyb b/validation-test/stdlib/NewArray.swift.gyb
index 505b2d8..dc5b899 100644
--- a/validation-test/stdlib/NewArray.swift.gyb
+++ b/validation-test/stdlib/NewArray.swift.gyb
@@ -11,7 +11,8 @@
 //
 //===----------------------------------------------------------------------===//
 // RUN-DISABLED: %target-run-simple-swift | %FileCheck %s
-// RUN: rm -rf %t && mkdir -p %t && %gyb %s -o %t/NewArray.swift
+// RUN: %empty-directory(%t)
+// RUN: %gyb %s -o %t/NewArray.swift
 // RUN: %line-directive %t/NewArray.swift -- %target-build-swift %t/NewArray.swift -o %t/a.out -Xfrontend -disable-access-control
 // RUN: %target-run %t/a.out 2>&1 | %line-directive %t/NewArray.swift -- %FileCheck %t/NewArray.swift --check-prefix=CHECK --check-prefix=CHECK-%target-runtime
 // REQUIRES: executable_test
diff --git a/validation-test/stdlib/NumericDiagnostics.swift.gyb b/validation-test/stdlib/NumericDiagnostics.swift.gyb
index e410e57..a4ea5a4 100644
--- a/validation-test/stdlib/NumericDiagnostics.swift.gyb
+++ b/validation-test/stdlib/NumericDiagnostics.swift.gyb
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && mkdir -p %t && %gyb %s -o %t/main.swift
+// RUN: %empty-directory(%t)
+// RUN: %gyb %s -o %t/main.swift
 // RUN: %line-directive %t/main.swift -- %target-build-swift -typecheck -Xfrontend -verify %t/main.swift
 // REQUIRES: executable_test
 // FIXME(integers): this test needs serious refactoring as there is now a lot
diff --git a/validation-test/stdlib/Prototypes/PersistentVector.swift.gyb b/validation-test/stdlib/Prototypes/PersistentVector.swift.gyb
index 7f539b6..0e0910d 100644
--- a/validation-test/stdlib/Prototypes/PersistentVector.swift.gyb
+++ b/validation-test/stdlib/Prototypes/PersistentVector.swift.gyb
@@ -1,4 +1,5 @@
-// RUN: rm -rf %t && mkdir -p %t && %gyb %s -o %t/PersistentVector.swift
+// RUN: %empty-directory(%t)
+// RUN: %gyb %s -o %t/PersistentVector.swift
 // RUN: %line-directive %t/PersistentVector.swift -- %target-build-swift -parse-stdlib %t/PersistentVector.swift -o %t/a.out
 // RUN: %line-directive %t/PersistentVector.swift -- %target-run %t/a.out
 // REQUIRES: executable_test
diff --git a/validation-test/stdlib/Set.swift b/validation-test/stdlib/Set.swift
index 1e968eb..bae09fa 100644
--- a/validation-test/stdlib/Set.swift
+++ b/validation-test/stdlib/Set.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 //
 // RUN: %gyb %s -o %t/main.swift
 // RUN: if [ %target-runtime == "objc" ]; then \
diff --git a/validation-test/stdlib/String.swift b/validation-test/stdlib/String.swift
index a0a8a5b..8ae6336 100644
--- a/validation-test/stdlib/String.swift
+++ b/validation-test/stdlib/String.swift
@@ -42,6 +42,12 @@
   }
 }
 
+extension Substring {
+  var bufferID: UInt {
+    return _ephemeralContent.bufferID
+  }
+}
+
 var StringTests = TestSuite("StringTests")
 
 StringTests.test("sizeof") {
@@ -406,15 +412,8 @@
         s0 = s0[s0.index(_nth: sliceStart)..<s0.index(_nth: sliceEnd)]
         expectEqual(originalIdentity, s0.bufferID)
         s0 += "x"
-        // For a small string size, the allocator could round up the allocation
-        // and we could get some unused capacity in the buffer.  In that case,
-        // the identity would not change.
-        if sliceEnd != initialSize {
-          if sliceStart != sliceEnd {
-            expectNotEqual(originalIdentity, s0.bufferID)
-          } else {
-            expectEqual(0, s0.bufferID)
-          }
+        if sliceStart == sliceEnd {
+          expectEqual(0, s0.bufferID)
         }
         expectEqual(
           String(
@@ -442,39 +441,64 @@
   // unused capacity (length of the prefix "abcdef" plus truly unused elements
   // at the end).
 
-  let size = 1024 * 16
-  let suffixSize = 16
-  let prefixSize = size - suffixSize
-  for i in 1..<10 {
-    // We will be overflowing s0 with s1.
-    var s0 = String(repeating: "x", count: size)
-    let s1 = String(repeating: "x", count: prefixSize)
-    let originalIdentity = s0.bufferID
-
-    // Turn s0 into a slice that points to the end.
-    s0 = s0[s0.index(_nth: prefixSize)..<s0.endIndex]
-
-    // Slicing should not reallocate.
-    expectEqual(originalIdentity, s0.bufferID)
-
-    let originalCapacity = s0.capacity
-
-    // Overflow.
-    s0 += s1
-
-    // We should correctly determine if the storage is too small and
-    // reallocate.
-    if size + prefixSize >= originalCapacity {
-      expectNotEqual(originalIdentity, s0.bufferID)
-    } else {
-      expectEqual(originalIdentity, s0.bufferID)
-    }
-
+  func unusedCapacity(_ s: String) -> Int {
+    let core = s._core
+    guard let buf = core.nativeBuffer else { return 0 }
+    let offset = (core._baseAddress! - buf.start) / core.elementWidth
+    return buf.capacity - core.count - offset
+  }
+  
+  func stringWithUnusedCapacity() -> (String, Int) {
+    var s0 = String(repeating: "x", count: 17)
+    if unusedCapacity(s0) == 0 { s0 += "y" }
+    let cap = unusedCapacity(s0)
+    expectNotEqual(0, cap)
+    
+    // This sorta checks for the original bug
     expectEqual(
-      String(
-        repeating: "x",
-        count: suffixSize + prefixSize),
-      s0)
+      cap, unusedCapacity(s0[s0.index(_nth: 1)..<s0.endIndex]))
+    
+    return (s0, cap)
+  }
+
+  do {
+    var (s, unused) = { ()->(String, Int) in
+      let (s0, unused) = stringWithUnusedCapacity()
+      return (s0[s0.index(_nth: 5)..<s0.endIndex], unused)
+    }()
+    let originalID = s.bufferID
+    // Appending to a String always results in storage that 
+    // starts at the beginning of its native buffer
+    s += "z"
+    expectNotEqual(originalID, s.bufferID)
+  }
+
+  do {
+    var (s, unused) = { ()->(Substring, Int) in
+      let (s0, unused) = stringWithUnusedCapacity()
+      return (s0[s0.index(_nth: 5)..<s0.endIndex], unused)
+    }()
+    let originalID = s.bufferID
+    // FIXME: Ideally, appending to a Substring with a unique buffer reference
+    // does not reallocate unless necessary.  Today, however, it appears to do
+    // so unconditionally unless the slice falls at the beginning of its buffer.
+    s += "z"
+    expectNotEqual(originalID, s.bufferID)
+  }
+
+  // Try again at the beginning of the buffer
+  do {
+    var (s, unused) = { ()->(Substring, Int) in
+      let (s0, unused) = stringWithUnusedCapacity()
+      return (s0[...], unused)
+    }()
+    let originalID = s.bufferID
+    s += "z"
+    expectEqual(originalID, s.bufferID)
+    s += String(repeating: "z", count: unused - 1)
+    expectEqual(originalID, s.bufferID)
+    s += "."
+    expectNotEqual(originalID, s.bufferID)
   }
 }
 
diff --git a/validation-test/stdlib/SwiftNativeNSBase.swift b/validation-test/stdlib/SwiftNativeNSBase.swift
index bbaea28..bb6fc8e 100644
--- a/validation-test/stdlib/SwiftNativeNSBase.swift
+++ b/validation-test/stdlib/SwiftNativeNSBase.swift
@@ -10,7 +10,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-// RUN: rm -rf %t  &&  mkdir -p %t
+// RUN: %empty-directory(%t)
 // 
 // RUN: %target-clang %S/Inputs/SwiftNativeNSBase/SwiftNativeNSBase.m -c -o %t/SwiftNativeNSBase.o -g
 // RUN: %target-build-swift %s -I %S/Inputs/SwiftNativeNSBase/ -Xlinker %t/SwiftNativeNSBase.o -o %t/SwiftNativeNSBase
diff --git a/validation-test/stdlib/Unicode.swift.gyb b/validation-test/stdlib/Unicode.swift.gyb
index c792e4f..07750e8 100644
--- a/validation-test/stdlib/Unicode.swift.gyb
+++ b/validation-test/stdlib/Unicode.swift.gyb
@@ -1545,6 +1545,9 @@
   required init(coder aDecoder: NSCoder) {
     fatalError("don't call this initializer")
   }
+  required init(itemProviderData data: Data, typeIdentifier: String) throws {
+    fatalError("don't call this initializer")
+  }
 
   @nonobjc
   convenience init(_ utf8: [UInt8]) {
diff --git a/validation-test/stdlib/UnicodeTrie.swift.gyb b/validation-test/stdlib/UnicodeTrie.swift.gyb
index f592819..738deb4 100644
--- a/validation-test/stdlib/UnicodeTrie.swift.gyb
+++ b/validation-test/stdlib/UnicodeTrie.swift.gyb
@@ -10,7 +10,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-// RUN: rm -rf %t && mkdir -p %t && %gyb -DunicodeGraphemeBreakPropertyFile=%utils/UnicodeData/GraphemeBreakProperty.txt -DunicodeGraphemeBreakTestFile=%utils/UnicodeData/GraphemeBreakTest.txt %s -o %t/UnicodeTrie.swift
+// RUN: %empty-directory(%t)
+// RUN: %gyb -DunicodeGraphemeBreakPropertyFile=%utils/UnicodeData/GraphemeBreakProperty.txt -DunicodeGraphemeBreakTestFile=%utils/UnicodeData/GraphemeBreakTest.txt %s -o %t/UnicodeTrie.swift
 // RUN: %line-directive %t/UnicodeTrie.swift -- %target-build-swift %t/UnicodeTrie.swift -o %t/a.out -g -Xfrontend -disable-access-control
 // RUN: %line-directive %t/UnicodeTrie.swift -- %target-run %t/a.out
 // REQUIRES: executable_test
@@ -87,6 +88,10 @@
     fatalError("don't call this initializer")
   }
 
+  required init(itemProviderData data: Data, typeIdentifier: String) throws {
+    fatalError("don't call this initializer")    
+  }
+
   @nonobjc
   init(_ value: [UInt16]) {
     _value = value
diff --git a/validation-test/stdlib/UnicodeTrieGenerator.gyb b/validation-test/stdlib/UnicodeTrieGenerator.gyb
index 4c76637..c72db82 100644
--- a/validation-test/stdlib/UnicodeTrieGenerator.gyb
+++ b/validation-test/stdlib/UnicodeTrieGenerator.gyb
@@ -1,6 +1,6 @@
 %{
 
-# RUN: rm -rf %t && mkdir -p %t && %gyb %s | %FileCheck %s
+# RUN: %empty-directory(%t) && %gyb %s | %FileCheck %s
 
 from __future__ import print_function
 
diff --git a/validation-test/stdlib/UnicodeUTFEncoders.swift b/validation-test/stdlib/UnicodeUTFEncoders.swift
index f3fc073..dc63ae4 100644
--- a/validation-test/stdlib/UnicodeUTFEncoders.swift
+++ b/validation-test/stdlib/UnicodeUTFEncoders.swift
@@ -1,5 +1,4 @@
-// RUN: rm -rf %t
-// RUN: mkdir -p %t
+// RUN: %empty-directory(%t)
 // RUN: %target-build-swift %s -o %t/a.out -O
 // RUN: %target-run %t/a.out
 // REQUIRES: executable_test
diff --git a/validation-test/stdlib/ValidationNSNumberBridging.swift b/validation-test/stdlib/ValidationNSNumberBridging.swift
index 07fdb85..3e99a47 100644
--- a/validation-test/stdlib/ValidationNSNumberBridging.swift
+++ b/validation-test/stdlib/ValidationNSNumberBridging.swift
@@ -18,6 +18,58 @@
 import Foundation
 import CoreGraphics
 
+extension Float {
+    init?(reasonably value: Float) {
+        self = value
+    }
+
+    init?(reasonably value: Double) {
+        guard !value.isNaN else {
+            self = Float.nan
+            return
+        }
+
+        guard !value.isInfinite else {
+            if value.sign == .minus {
+                self = -Float.infinity
+            } else {
+                self = Float.infinity
+            }
+            return
+        }
+
+        guard abs(value) <= Double(Float.greatestFiniteMagnitude) else {
+            return nil
+        }
+        
+        self = Float(value)
+    }
+}
+
+extension Double {
+    init?(reasonably value: Float) {
+        guard !value.isNaN else {
+            self = Double.nan
+            return
+        }
+
+        guard !value.isInfinite else {
+            if value.sign == .minus {
+                self = -Double.infinity
+            } else {
+                self = Double.infinity
+            }
+            return
+        }
+
+        self = Double(value)
+    }
+
+    init?(reasonably value: Double) {
+        self = value
+    }
+}
+
 var nsNumberBridging = TestSuite("NSNumberBridgingValidation")
 
 func testFloat(_ lhs: Float?, _ rhs: Float?, file: String = #file, line: UInt = #line) {
@@ -645,7 +697,7 @@
             expectEqual(UInt(exactly: interestingValue), uint)
 
             let float = (number!) as? Float
-            let expectedFloat = Float(exactly: interestingValue)
+            let expectedFloat = Float(reasonably: interestingValue)
             testFloat(expectedFloat, float)
             
             let double = (number!) as? Double
@@ -685,7 +737,7 @@
             expectEqual(UInt(exactly: interestingValue), uint)
 
             let float = (number!) as? Float
-            let expectedFloat = Float(exactly: interestingValue)
+            let expectedFloat = Float(reasonably: interestingValue)
             testFloat(expectedFloat, float)
             
             let double = (number!) as? Double
@@ -725,7 +777,7 @@
             expectEqual(UInt(exactly: interestingValue.native), uint)
             
             let float = (number!) as? Float
-            let expectedFloat = Float(exactly: interestingValue.native)
+            let expectedFloat = Float(reasonably: interestingValue.native)
             testFloat(expectedFloat, float)
             
             let double = (number!) as? Double
diff --git a/validation-test/stdlib/XCTest.swift b/validation-test/stdlib/XCTest.swift
index 4a93540..421fcca 100644
--- a/validation-test/stdlib/XCTest.swift
+++ b/validation-test/stdlib/XCTest.swift
@@ -184,6 +184,30 @@
   expectFalse(failingTestRun.hasSucceeded)
 }
 
+XCTestTestSuite.test("XCTAssertEqual/XCTAssertNotEqual + accuracy") {
+    class AssertEqualTestCase: XCTestCase {
+        dynamic func test_whenEqual_passes() {
+            XCTAssertEqual(1, 1.09, accuracy: 0.1)
+            XCTAssertNotEqual(1, 1.11, accuracy: 0.1)
+        }
+
+        dynamic func test_whenNotEqual_fails() {
+            XCTAssertEqual(1, 1.11, accuracy: 0.1)
+            XCTAssertNotEqual(1, 1.09, accuracy: 0.1)
+        }
+    }
+
+    let passingTestCase = AssertEqualTestCase(selector: #selector(AssertEqualTestCase.test_whenEqual_passes))
+    execute(passingTestCase.run)
+    expectTrue(passingTestCase.testRun!.hasSucceeded)
+
+    let failingTestCase = AssertEqualTestCase(selector: #selector(AssertEqualTestCase.test_whenNotEqual_fails))
+    execute(failingTestCase.run)
+    let failingTestRun = failingTestCase.testRun!
+    expectEqual(2, failingTestRun.failureCount)
+    expectEqual(0, failingTestRun.unexpectedExceptionCount)
+}
+
 XCTestTestSuite.test("XCTAssertThrowsError") {
     class ErrorTestCase: XCTestCase {
         var doThrow = true
@@ -407,5 +431,34 @@
     
 }
 
+XCTestTestSuite.test("XCTContext/runActivity(named:block:)") {
+  class RunActivityTestCase: XCTestCase {
+
+    dynamic func test_noThrow() {
+      var blockCalled = false
+      XCTContext.runActivity(named: "noThrow") { activity in
+        blockCalled = true
+      }
+      expectTrue(blockCalled)
+    }
+
+    dynamic func test_throwing() {
+      var blockCalled = false
+      var catchCalled = false
+      do {
+        try XCTContext.runActivity(named: "throwing") { activity in
+          blockCalled = true
+          throw NSError(domain: "MyDomain", code: -1, userInfo: nil)
+        }
+      } catch {
+        catchCalled = true
+      }
+      expectTrue(blockCalled)
+      expectTrue(catchCalled)
+    }
+  }
+}
+
+
 runAllTests()