protected override void onObjectRemoved(RectTransform item, int index)
    {
        AudioScreenButton component = item.GetComponent <AudioScreenButton>();

        component.Apply   -= onApplyButton;
        component.Preview -= onPreviewButton;
        component.Stop    -= onStopButton;
        component.Pause   -= onPauseButton;
    }
    private void SetupAudioButton(AudioScreenButton button, int index)
    {
        MusicTrackDefinition key = inventoryCountPairs[index - numberOfStaticButtons].Key;

        AudioScreenButton.ButtonState state = AudioScreenButton.ButtonState.Normal;
        if (sceneLayoutData != null)
        {
            if (sceneLayoutData.MusicTrackId == key.Id)
            {
                state = AudioScreenButton.ButtonState.Selected;
            }
            else if (currentlyPreviewedTrack == key.Id)
            {
                state = AudioScreenButton.ButtonState.Preview;
            }
        }
        button.Init(key, state, index);
        button.Apply   += onApplyButton;
        button.Preview += onPreviewButton;
        button.Stop    += onStopButton;
        button.Pause   += onPauseButton;
        inventoryProgressionStatus.TryGetValue(key.Id, out ProgressionUtils.ParsedProgression <MusicTrackDefinition> value);
        SetLockableButtonLockedStatus(button, key, value);
    }