   /// A textual representation of `self`, suitable for debugging.
   public var debugDescription: String {
     return "RangeOfStrideable(\(String(reflecting: lowerBound))..<\(String(reflecting: upperBound)))"
+  }
+
+  public // ambiguity resolution between _RangeProtocol and Collection defaults
+  var isEmpty: Bool {
+    return lowerBound == upperBound
   }
 }
 

  // FIXME: swift-3-indexing-model: tests for traps.
  _precondition(start <= end, "Can't form Range with end < start")
  _precondition(endPlusOne > end, "Range end has no valid successor")
  return RangeOfStrideable(lowerBound: start, upperBound: endPlusOne)
}

@warn_unused_result

  /// reachable from `lowerBound` by zero or more applications of
  /// `successor()`.
  // FIXME: swift-3-indexing-model: rename to `end`.
  public let upperBound: Bound

  // FIXME: does not implement a requirement in `Collection`.
  // We need to implement `_customContainsEquatableElement` instead.
