subcomponentToQCBuilder :: GateToQCBuilder g => Builder -> QCComponentId -> QCComponent g -> Builder
subcomponentToQCBuilder nl compId (QCComponent touched steps) =
    fromString "BEGIN C" <> fromShow compId <> fromChar '(' <> touchedToQCBuilder touched <> fromChar ')' <> nl <>
    stepsToQCBuilder nl steps <>
    fromString "END C" <> fromShow compId <> nl
subcomponentToQCBuilder :: GateToQCBuilder g => Builder -> QCComponentId -> QCComponent g -> Builder
subcomponentToQCBuilder nl compId (QCComponent touched steps) =
    fromString "BEGIN C" <> fromShow compId <> fromChar '(' <> touchedToQCBuilder touched <> fromChar ')' <> nl <>
    stepsToQCBuilder nl steps <>
    fromString "END C" <> fromShow compId <> nl
subcomponentToQCBuilder nl compId (QCComponent touched steps) =
    fromString "BEGIN C" <> fromShow compId <> fromChar '(' <> touchedToQCBuilder touched <> fromChar ')' <> nl <>
    stepsToQCBuilder nl steps <>
    fromString "END C" <> fromShow compId <> nl