 				switch s.result.value {
 				case let .failure(failedValue, _):
 					s.value = failedValue
-				case let .substitution(substitutedValue, _, _):
-					s.value = substitutedValue
+				case let .substitution(_, failedValue, _):
+					s.value = failedValue
 				case let .success(value):
 					s.value = value
 				}

			let otherValue: U

			switch otherValidations.value {
			case let .success(value):
				otherValue = value
			case let .substitution(_, value, _):
				otherValue = value
			case let .failure(value, _):
				otherValue = value
			}

			return validator(input, otherValue)

		case .success:
			self = .success(value)

		case let .substitution(substituted, error):
			self = .substitution(substituted: substituted, proposed: value, error)

		case let .failure(error):
			self = .failure(proposed: value, error)
