 		_ validator: @escaping (Value, Other.Value) -> Result<(), E>
 	) -> TransactionalProperty<Value, E> {
 		let proposed = Atomic<Value?>(nil)
+		let other = Property(other)
 
 		let property = initializer { proposedInput -> Result<Value, E> in
 			switch validator(proposedInput, other.value) {

	public let lifetime: Lifetime

	/// Validations that have been made by the property.
	public let validations: Property<Result<(), TransactionError>>

	/// The action associated with the property.
	private let action: (Value) -> Void

		_ body: @escaping (Value) -> Result<T.Value, TransactionError>
	) {
		self.init(inner, transform: transform, validator: body, validationSetup: { validations in
			let d = validations <~ inner.property.validations.producer.map { $0?.mapError(errorTransform) }
			validations.lifetime.ended.observeCompleted { d?.dispose() }
		})
	}
