## decide what to do based on message labels and the operation we're performing
dothis, new_labels = case
when (op == :restore) && restored_state[m.id] && old_m && (old_m.labels != restored_state[m.id])
+ num_restored += 1
[:update_message_state, restored_state[m.id]]
+ when (op == :restore) && restored_state[m.id] && !old_m
+ num_restored += 1
+ m.labels = restored_state[m.id]
+ :add_message
when op == :discard
if old_m && (old_m.labels != m.labels)
[:update_message_state, m.labels]