 		lhs = rhs
 	}
 }
-/// Assigns only when `rhs` is non-`nil`.
-/// - Remark: effectively `lhs = (rhs ?? lhs) ?? nil` _(skipping same-value assignments)_
-public func =??<Wrapped>(lhs:inout Wrapped!, rhsClosure:(@autoclosure ()throws->Wrapped?)) rethrows {
-	let rhs:Wrapped? = try rhsClosure()
-	if rhs != nil {
-		lhs = rhs
+
+#if (swift(>=3.4) && !swift(>=4.0)) || (swift(>=4.1.50) && !swift(>=4.2)) || swift(>=4.2)
+#else
+	/// Assigns only when `rhs` is non-`nil`.
+	/// - Remark: effectively `lhs = (rhs ?? lhs) ?? nil` _(skipping same-value assignments)_
+	public func =??<Wrapped>(lhs:inout Wrapped!, rhsClosure:(@autoclosure ()throws->Wrapped?)) rethrows {
+		let rhs:Wrapped? = try rhsClosure()
+		if rhs != nil {
+			lhs = rhs
+		}
 	}
-}
+#endif
 
 
 

		lhs = rhs!
	}
}
/// Assigns only when `rhs` is non-`nil`.
/// - Remark: effectively `lhs = (rhs ?? lhs) ?? nil` _(skipping same-value assignments)_
public func =??<Wrapped>(lhs:inout Wrapped?, rhsClosure:(@autoclosure ()throws->Wrapped?)) rethrows {

		}
	}
}

#if (swift(>=3.4) && !swift(>=4.0)) || (swift(>=4.1.50) && !swift(>=4.2)) || swift(>=4.2)
#else
	/// Assigns only when `lhs` is `nil` (and `rhs` is non-`nil`).
	/// - Remark: effectively `lhs = (lhs ?? rhs) ?? nil` _(skipping same-value assignments)_
	public func ??=<Wrapped>(lhs:inout Wrapped!, rhsClosure:(@autoclosure ()throws->Wrapped?)) rethrows {
		if lhs == nil {
			let rhs:Wrapped? = try rhsClosure()
			if rhs != nil {
				lhs = rhs
			}
		}
	}
#endif
