 		case .success:
 			self = .success(value)
 
-		case let .substitution(substitutedValue, error):
-			self = .substitution(substituted: substitutedValue, proposed: value, error)
+		case let .substitution(substituted, error):
+			self = .substitution(substituted: substituted, proposed: value, error)
 
 		case let .failure(error):
 			self = .failure(proposed: value, error)

				guard let s = self else { return }

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

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