In that other post, there is a problem with this section:
Because it should be more like:
protocol Bindable<T> {
// …
associatedtype Flattenable: Bindable = Self
func flatMap(_ transform: (Self.Element) throws -> Flattenable) rethrows → Output<Flattenable.Element>
}