anchor.diff:                          let songCmd =
                               match Field.getFieldSongOpt field with
                               | Some fieldSong ->
  -                                if currentSongOpt = Some fieldSong then Nop
  -                                else PlaySong (Constants.Audio.DefaultFadeOutMs, Constants.Audio.DefaultSongVolume, fieldSong)
  +                                if currentSongOpt <> Some fieldSong
  +                                then PlaySong (Constants.Audio.DefaultFadeOutMs, Constants.Audio.DefaultSongVolume, fieldSong)
  +                                else Nop
                               | None -> Nop
                           withCmds [moveCmd; songCmd] field
                       elif tickTime = fieldTransition.FieldTransitionTime then
  
positive.code:         | Interact
  
      type [<NoComparison>] FieldCommand =
          | PlaySound of int64 * single * Sound AssetTag
          | PlaySong of int * single * Song AssetTag
          | FadeOutSong of int
          | MoveAvatar of Vector2
          | UpdateEye
          | Nop
  
      type Screen with
  
negative.code:                          Entity.ClickEvent ==> msg (fieldMsg selection)])
  
          override this.Channel (_, field) =
              [field.SelectEvent => cmd PlayFieldSong
               Simulants.FieldAvatar.Avatar.ChangeEvent =|> fun evt -> msg (UpdateAvatar (evt.Data.Value :?> Avatar))
               field.UpdateEvent => msg UpdateDialog
               field.UpdateEvent => msg UpdatePortal
               field.UpdateEvent => msg UpdateSensor
  