 
   @public func generate() -> IndexingGenerator<String> {
     return IndexingGenerator(self)
+  }
+  
+  @internal struct _IndexMirror : Mirror {
+    var _value: Index
+
+    init(_ x: Index) {
+      _value = x
+    }
+
+    @public var value: Any { return _value }
+
+    @public var valueType: Any.Type { return (_value as Any).dynamicType }
+
+    @public var objectIdentifier: ObjectIdentifier? { return .None }
+
+    @public var disposition: MirrorDisposition { return .Aggregate }
+    
+    @public var count: Int { return 0 }
+
+    @public subscript(i: Int) -> (String,Mirror) { 
+      _fatalError("Mirror access out of bounds")
+    }
+
+    @public var summary: String { return "\(_value._utf16Index)" }
+
+    @public var quickLookObject: QuickLookObject? { return .Some(.Int(Int64(_value._utf16Index))) }
   }
 }
 


      return endIndexUTF16 - graphemeClusterStartUTF16
    }
  }

  @public var startIndex: Index {

/// String is a Collection of Character
extension String : Collection {
  // An adapter over UnicodeScalarView that advances by whole Character
  @public struct Index : BidirectionalIndex, Reflectable {
    @public init(_ _base: UnicodeScalarView.IndexType) {
      self._base = _base
      self._lengthUTF16 = Index._measureExtendedGraphemeClusterForward(_base)
