     // According to Ali Ozer, there may be some real advantage to
     // dispatching to the minimal selector for the supplied options.
     // So let's do that; the switch should compile away anyhow.
-    return locale ? _ns.compare(
+    return locale != nil ? _ns.compare(
       aString, options: mask,
-      range: _toNSRange(range ? range! : indices(self)), locale: locale)
+      range: _toNSRange(range != nil ? range! : indices(self)), locale: locale)
     
-    : range ? _ns.compare(
-      aString, options: mask, range: _toNSRange(range ? range! : indices(self)))
+    : range != nil ? _ns.compare(
+      aString, options: mask, range: _toNSRange(range != nil ? range! : indices(self)))
       
     : mask ? _ns.compare(aString, options: mask)
       

    locale: NSLocale? = nil
  ) -> Range<Index>? {
    return _optionalRange(
      locale ? _ns.rangeOfString(
        aString, options: mask,
        range: _toNSRange(searchRange ? searchRange! : indices(self)),
        locale: locale
      )
      : searchRange ? _ns.rangeOfString(
        aString, options: mask, range: _toNSRange(searchRange!)
      )
      : mask ? _ns.rangeOfString(aString, options: mask)

    range searchRange: Range<Index>? = nil
  ) -> String {
    // FIXME: " != nil" needed pending <rdar://problem/16997968> 
    return (searchRange !=  nil) || (options != nil)
    ? _ns.stringByReplacingOccurrencesOfString(
      target,
      withString: replacement, options: options,
      range: _toNSRange(searchRange != nil ? searchRange! : indices(self))
    )
    : _ns.stringByReplacingOccurrencesOfString(target, withString: replacement)
  }
