 	/// The `SignalProducer` representation of `self`.
 	var producer: SignalProducer<Value, Error> { get }
 }
-
+#else
+/// Represents reactive primitives that can be represented by `SignalProducer`.
+public protocol SignalProducerConvertible {
+	/// The type of values being sent by `self`.
+	associatedtype Value
+
+	/// The type of error that can occur on `self`.
+	associatedtype Error: Swift.Error
+
+	/// The `SignalProducer` representation of `self`.
+	var producer: SignalProducer<Value, Error> { get }
+}
+#endif
+
+#if swift(>=5.7)
 /// A protocol for constraining associated types to `SignalProducer`.
 public protocol SignalProducerProtocol<Value, Error> {
 	/// The type of values being sent by `self`.

	/// The materialized `self`.
	var producer: SignalProducer<Value, Error> { get }
}

extension SignalProducer: SignalProducerConvertible, SignalProducerProtocol {
	public var producer: SignalProducer {

	}
}

#if swift(>=5.7)
/// Represents reactive primitives that can be represented by `SignalProducer`.
public protocol SignalProducerConvertible<Value, Error> {
	/// The type of values being sent by `self`.
