teakJ :: [Width] -> [Chan] -> Chan -> MkPNMonad SimFlow SimValue ()
    teakJ inpWidths inp (_, (outR, outA)) = withLabel "J" $ do
        withLabel "r" $ newTrans inpR [outR] [PNAppend inpWidths (map PNInput [0..inpCount - 1])]
        withLabel "a" $ newTrans [outA] inpA (replicate (length inpA) (PNLiteral token))
        return ()
        where
            inpCount = length inp

            (inpPassive, _) = unzip inp
            (inpR, inpA) = unzip inpPassive
teakJ :: [Width] -> [Chan] -> Chan -> MkPNMonad SimFlow SimValue ()
teakJ inpWidths inp (_, (outR, outA)) = withLabel "J" $ do
        withLabel "r" $ newTrans inpR [outR] [PNAppend inpWidths (map PNInput [0..inpCount - 1])]
        withLabel "a" $ newTrans [outA] inpA (replicate (length inpA) (PNLiteral token))
        return ()
        where
            inpCount = length inp

            (inpPassive, _) = unzip inp
            (inpR, inpA) = unzip inpPassive
teakJ inpWidths inp (_, (outR, outA)) = withLabel "J" $ do
        withLabel "r" $ newTrans inpR [outR] [PNAppend inpWidths (map PNInput [0..inpCount - 1])]
        withLabel "a" $ newTrans [outA] inpA (replicate (length inpA) (PNLiteral token))
        return ()
        where
            inpCount = length inp

            (inpPassive, _) = unzip inp
            (inpR, inpA) = unzip inpPassive