Address Swift 3.2 warnings.

PiperOrigin-RevId: 185912561
diff --git a/src/Tulsi/Base.lproj/SplashScreenWindowController.xib b/src/Tulsi/Base.lproj/SplashScreenWindowController.xib
index ecdac33..99c0754 100644
--- a/src/Tulsi/Base.lproj/SplashScreenWindowController.xib
+++ b/src/Tulsi/Base.lproj/SplashScreenWindowController.xib
@@ -1,8 +1,10 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14092" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
-        <deployment version="101100" identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14092"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+        <capability name="system font weights other than Regular or Bold" minToolsVersion="7.0"/>
     </dependencies>
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="SplashScreenWindowController" customModule="Tulsi" customModuleProvider="target">
@@ -16,13 +18,14 @@
         <window title="Tulsi" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" frameAutosaveName="TulsiSplashScreen" animationBehavior="default" id="F0z-JX-Cv5">
             <windowStyleMask key="styleMask" titled="YES" closable="YES"/>
             <rect key="contentRect" x="196" y="240" width="618" height="377"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1418"/>
             <view key="contentView" wantsLayer="YES" id="se5-gp-TjO">
                 <rect key="frame" x="0.0" y="0.0" width="618" height="377"/>
                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                 <subviews>
                     <scrollView fixedFrame="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="66" horizontalPageScroll="10" verticalLineScroll="66" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lIe-Jb-eJQ">
                         <rect key="frame" x="302" y="0.0" width="316" height="377"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                         <clipView key="contentView" ambiguous="YES" id="rhv-1s-qIM">
                             <rect key="frame" x="0.0" y="0.0" width="316" height="377"/>
                             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -34,7 +37,7 @@
                                     <color key="backgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
                                     <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
                                     <tableColumns>
-                                        <tableColumn width="313" minWidth="40" maxWidth="1000" id="E0b-oY-vBl">
+                                        <tableColumn identifier="" width="313" minWidth="40" maxWidth="1000" id="E0b-oY-vBl">
                                             <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
                                                 <font key="font" metaFont="smallSystem"/>
                                                 <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
@@ -53,10 +56,12 @@
                                                     <subviews>
                                                         <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="eb5-0J-vRT">
                                                             <rect key="frame" x="8" y="8" width="32" height="32"/>
+                                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                                                             <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" id="VYj-Sd-CCU"/>
                                                         </imageView>
                                                         <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vbY-uf-dQf">
                                                             <rect key="frame" x="48" y="8" width="159" height="32"/>
+                                                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                                                             <textFieldCell key="cell" lineBreakMode="truncatingTail" allowsUndo="NO" sendsActionOnEndEditing="YES" placeholderString="Recent document name" drawsBackground="YES" id="Ed7-ov-gOg">
                                                                 <font key="font" metaFont="system"/>
                                                                 <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -92,24 +97,25 @@
                     </scrollView>
                     <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Cr0-BZ-yKF">
                         <rect key="frame" x="94" y="213" width="128" height="128"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                         <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="Wew-p3-Ia8"/>
                     </imageView>
                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gTk-1P-U8m">
                         <rect key="frame" x="35" y="166" width="238" height="39"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Welcome to Tulsi" id="4GE-zf-x1i">
                             <font key="font" metaFont="systemThin" size="32"/>
                             <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
                             <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                         </textFieldCell>
                     </textField>
-                    <box verticalHuggingPriority="750" fixedFrame="YES" title="Box" boxType="separator" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="YN8-Pe-4dY">
+                    <box verticalHuggingPriority="750" fixedFrame="YES" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="YN8-Pe-4dY">
                         <rect key="frame" x="35" y="121" width="268" height="5"/>
-                        <color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
-                        <color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
-                        <font key="titleFont" metaFont="system"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                     </box>
                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="r0o-iG-fXB">
                         <rect key="frame" x="35" y="141" width="238" height="17"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="center" title="Tulsi version information" usesSingleLineMode="YES" id="3kf-8j-4Yc">
                             <font key="font" metaFont="system"/>
                             <color key="textColor" name="windowFrameColor" catalog="System" colorSpace="catalog"/>
@@ -125,6 +131,7 @@
                     </textField>
                     <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ujV-sA-1qZ">
                         <rect key="frame" x="35" y="67" width="261" height="48"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                         <buttonCell key="cell" type="square" title="Create new project…" bezelStyle="shadowlessSquare" image="NewProject" imagePosition="left" alignment="left" state="on" imageScaling="proportionallyDown" inset="2" id="D9j-0y-ovw">
                             <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                             <font key="font" metaFont="systemBold"/>
@@ -135,6 +142,7 @@
                     </button>
                     <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9Gh-jw-2TU" userLabel="Open Existing Project">
                         <rect key="frame" x="35" y="14" width="261" height="48"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                         <buttonCell key="cell" type="square" title="Open existing project…" bezelStyle="shadowlessSquare" image="OpenProject" imagePosition="left" alignment="left" state="on" imageScaling="proportionallyDown" inset="2" id="PxS-uS-IAo">
                             <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                             <font key="font" metaFont="systemBold"/>
@@ -152,7 +160,7 @@
         </window>
     </objects>
     <resources>
-        <image name="NewProject" width="48" height="48"/>
-        <image name="OpenProject" width="48" height="48"/>
+        <image name="NewProject" width="512" height="512"/>
+        <image name="OpenProject" width="497" height="497"/>
     </resources>
 </document>
diff --git a/src/Tulsi/TulsiCommandlineParser.swift b/src/Tulsi/TulsiCommandlineParser.swift
index f654ea3..333936f 100644
--- a/src/Tulsi/TulsiCommandlineParser.swift
+++ b/src/Tulsi/TulsiCommandlineParser.swift
@@ -216,7 +216,7 @@
 
             let pathFilters = valueString.components(separatedBy: " ").map() { path -> String in
               if path.hasPrefix("//") {
-                return path.substring(from: path.characters.index(path.startIndex, offsetBy: 2))
+                return path.substring(from: path.index(path.startIndex, offsetBy: 2))
               }
               return path
             }
diff --git a/src/Tulsi/WizardSubviewProtocol.swift b/src/Tulsi/WizardSubviewProtocol.swift
index 5b748d2..b079103 100644
--- a/src/Tulsi/WizardSubviewProtocol.swift
+++ b/src/Tulsi/WizardSubviewProtocol.swift
@@ -18,7 +18,7 @@
 @objc
 protocol WizardSubviewProtocol {
   /// Informs the receiver of the enclosing WizardViewController.
-  weak var presentingWizardViewController: ConfigEditorWizardViewController? { get set }
+  var presentingWizardViewController: ConfigEditorWizardViewController? { get set }
 
   /// Invoked when the wizard subview is about to become active due to a "next" navigation.
   @objc optional func wizardSubviewWillActivateMovingForward()
diff --git a/src/TulsiGenerator/BuildLabel.swift b/src/TulsiGenerator/BuildLabel.swift
index 1254779..df5b6de 100644
--- a/src/TulsiGenerator/BuildLabel.swift
+++ b/src/TulsiGenerator/BuildLabel.swift
@@ -37,7 +37,7 @@
     }
 
     if package.hasPrefix("//") {
-      package.removeSubrange(Range(package.startIndex ..< package.characters.index(package.startIndex, offsetBy: 2)))
+      package.removeSubrange(Range(package.startIndex ..< package.index(package.startIndex, offsetBy: 2)))
     }
     if package.isEmpty || package.hasSuffix("/") {
       return ""
diff --git a/src/TulsiGenerator/PBXProjSerializer.swift b/src/TulsiGenerator/PBXProjSerializer.swift
index 55e7f57..e78851b 100644
--- a/src/TulsiGenerator/PBXProjSerializer.swift
+++ b/src/TulsiGenerator/PBXProjSerializer.swift
@@ -378,7 +378,7 @@
   // string encodings vary from region to region, this representation makes the format fragile.
   // You may see strings containing unreadable sequences of ASCII characters; these are used to
   // represent Unicode characters.
-  let valueRange = NSMakeRange(0, val.characters.count)
+  let valueRange = NSMakeRange(0, val.count)
   if unquotedSerializableStringRegex.firstMatch(in: val, options: NSRegularExpression.MatchingOptions.anchored, range: valueRange) != nil {
     return val
   } else {
diff --git a/src/TulsiGenerator/PBXTargetGenerator.swift b/src/TulsiGenerator/PBXTargetGenerator.swift
index 862432d..f9d7baa 100644
--- a/src/TulsiGenerator/PBXTargetGenerator.swift
+++ b/src/TulsiGenerator/PBXTargetGenerator.swift
@@ -378,7 +378,7 @@
     // If outputFolder contains workspaceRoot, return a relative group with the path from
     // outputFolder to workspaceRoot
     if workspaceRoot.hasPrefix(slashTerminatedOutputFolder) {
-      let index = workspaceRoot.characters.index(workspaceRoot.startIndex, offsetBy: slashTerminatedOutputFolder.characters.count)
+      let index = workspaceRoot.index(workspaceRoot.startIndex, offsetBy: slashTerminatedOutputFolder.count)
       let relativePath = workspaceRoot.substring(from: index)
       return PBXGroup(name: "mainGroup",
                       path: relativePath,
@@ -389,7 +389,7 @@
     // If workspaceRoot contains outputFolder, return a relative group using .. to walk up to
     // workspaceRoot from outputFolder.
     if outputFolder.hasPrefix(slashTerminatedWorkspaceRoot) {
-      let index = outputFolder.characters.index(outputFolder.startIndex, offsetBy: slashTerminatedWorkspaceRoot.characters.count + 1)
+      let index = outputFolder.index(outputFolder.startIndex, offsetBy: slashTerminatedWorkspaceRoot.count + 1)
       let pathToWalkBackUp = outputFolder.substring(from: index) as NSString
       let numberOfDirectoriesToWalk = pathToWalkBackUp.pathComponents.count
       let relativePath = [String](repeating: "..", count: numberOfDirectoriesToWalk).joined(separator: "/")
@@ -843,7 +843,7 @@
   /// given set of pathFilters.
   private func pathFilterFunc(_ pathFilters: Set<String>) -> (String) -> Bool {
     let recursiveFilters = Set<String>(pathFilters.filter({ $0.hasSuffix("/...") }).map() {
-      $0.substring(to: $0.characters.index($0.endIndex, offsetBy: -3))
+      $0.substring(to: $0.index($0.endIndex, offsetBy: -3))
     })
 
     func includePath(_ path: String) -> Bool {
@@ -1210,9 +1210,9 @@
       // TODO(abaire): Add support for shell tokenization as advertised in the Bazel build
       //     encyclopedia.
       if opt.hasPrefix("-D") {
-        localDefines.insert(opt.substring(from: opt.characters.index(opt.startIndex, offsetBy: 2)))
+        localDefines.insert(opt.substring(from: opt.index(opt.startIndex, offsetBy: 2)))
       } else if opt.hasPrefix("-I") {
-        var path = opt.substring(from: opt.characters.index(opt.startIndex, offsetBy: 2))
+        var path = opt.substring(from: opt.index(opt.startIndex, offsetBy: 2))
         if !path.hasPrefix("/") {
           path = "$(\(PBXTargetGenerator.BazelWorkspaceSymlinkVarName))/\(path)"
         }
@@ -1453,8 +1453,8 @@
 
   static func indexerNameForTargetName(_ targetName: String, hash: Int, suffix: String?) -> String {
     let normalizedTargetName: String
-    if targetName.characters.count > MaxIndexerNameLength {
-      let endIndex = targetName.characters.index(targetName.startIndex, offsetBy: MaxIndexerNameLength - 4)
+    if targetName.count > MaxIndexerNameLength {
+      let endIndex = targetName.index(targetName.startIndex, offsetBy: MaxIndexerNameLength - 4)
       normalizedTargetName = targetName.substring(to: endIndex) + "_etc"
     } else {
       normalizedTargetName = targetName
diff --git a/src/TulsiGenerator/XcodeProjectGenerator.swift b/src/TulsiGenerator/XcodeProjectGenerator.swift
index 319465c..27582eb 100644
--- a/src/TulsiGenerator/XcodeProjectGenerator.swift
+++ b/src/TulsiGenerator/XcodeProjectGenerator.swift
@@ -1132,8 +1132,6 @@
 
       func addPath<T: Collection>(_ pathComponents: T)
                   where T.SubSequence : Collection,
-                  T.SubSequence.Iterator.Element == T.Iterator.Element,
-                  T.SubSequence.SubSequence == T.SubSequence,
                   T.Iterator.Element == String {
         guard let firstComponent = pathComponents.first else {
           return
diff --git a/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift b/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
index ec1b601..ac8e43f 100644
--- a/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
+++ b/src/TulsiGeneratorTests/PBXTargetGeneratorTests.swift
@@ -2435,7 +2435,7 @@
     XCTAssertEqual(targets.count, 1)
 
     let resultingTarget = targets.values.first!
-    XCTAssertLessThan(resultingTarget.name.characters.count, 255)
+    XCTAssertLessThan(resultingTarget.name.count, 255)
 
     validateIndexerTarget(resultingTarget.name,
                           sourceFileNames: sourceFiles1,
@@ -2474,7 +2474,7 @@
     XCTAssertEqual(targets.count, 1)
 
     let resultingTarget = targets.values.first!
-    XCTAssertLessThan(resultingTarget.name.characters.count, 255)
+    XCTAssertLessThan(resultingTarget.name.count, 255)
 
     validateIndexerTarget(resultingTarget.name,
                           sourceFileNames: sourceFiles1 + sourceFiles2,