 
 		return replacedElementToReturn
 	}
+
+
+	public subscript(bounds: Range<Int>) -> OrderedSet<T> {
+		var set = OrderedSet<T>()
+		for element in orderedElements[bounds] {
+			set.add(element)
+		}
+
+		return set
+	}
 }
 
 

	}


	public func isSubsetOf<S: SetType where S.Element == T>(set: S) -> Bool {
		return elements.isSubsetOf(set)
	}

	}


	public mutating func move(#fromIndex: Int, toIndex: Int) {
		precondition(fromIndex >= startIndex && fromIndex < endIndex, "fromIndex outside range \(startIndex) ..< \(endIndex)")
		precondition(toIndex >= startIndex && toIndex < endIndex, "toIndex outside range \(startIndex) ..< \(endIndex)")

		if fromIndex == toIndex {
			return
		}

		orderedElements.insert(orderedElements.removeAtIndex(fromIndex), atIndex: toIndex)
	}


