 		rawArguments.removeAll()
 
 		var foundValue: String?
-		argumentLoop: for var index = 0; index < oldArguments.count; index++ {
+		var index = 0
+
+		while index < oldArguments.count {
+			defer { index++ }
+
 			let arg = oldArguments[index]
 
 			if arg == .Key(key) {

	/// Returns the next positional argument that hasn't yet been returned, or
	/// nil if there are no more positional arguments.
	internal func consumePositionalArgument() -> String? {
		for var index = 0; index < rawArguments.count; index++ {
			switch rawArguments[index] {
			case let .Value(value):
				rawArguments.removeAtIndex(index)
				return value

					switch oldArguments[index] {
					case let .Value(value):
						foundValue = value
						continue

					default:
						break
