putLabel' :: Label -> Instr
putLabel' l = Instr $ do
  debug $ do
    offset <- getOffset
    liftIO $ print ("putLabel'", l, offset)
  modify' $ \s@InstrState { isLabelTable = lt
                          , isRunAgain = ra
                          , isOffset = off } ->
              s { isLabelTable = insertLT l off lt
                , isRunAgain = updateRunAgain ra (isDifferentLT l off lt) }
putLabel' :: Label -> Instr
putLabel' l = Instr $ do
  debug $ do
    offset <- getOffset
    liftIO $ print ("putLabel'", l, offset)
  modify' $ \s@InstrState { isLabelTable = lt
                          , isRunAgain = ra
                          , isOffset = off } ->
              s { isLabelTable = insertLT l off lt
                , isRunAgain = updateRunAgain ra (isDifferentLT l off lt) }
putLabel' l = Instr $ do
  debug $ do
    offset <- getOffset
    liftIO $ print ("putLabel'", l, offset)
  modify' $ \s@InstrState { isLabelTable = lt
                          , isRunAgain = ra
                          , isOffset = off } ->
              s { isLabelTable = insertLT l off lt
                , isRunAgain = updateRunAgain ra (isDifferentLT l off lt) }