Renamed generic parameter "O" to "D" (output Domain), resolving clash with Mealy machine output symbol parameter name