public void AddStave(Track track, Stave stave) { var group = GetStaveTrackGroup(track); if (group == null) { group = new StaveTrackGroup(this, track); Staves.Add(group); } stave.StaveTrackGroup = group; stave.StaveGroup = this; stave.Index = _allStaves.Count; _allStaves.Add(stave); group.Staves.Add(stave); if (stave.IsInAccolade) { if (_firstStaveInAccolade == null) { _firstStaveInAccolade = stave; stave.IsFirstInAccolade = true; } if (group.FirstStaveInAccolade == null) { group.FirstStaveInAccolade = stave; } if (_lastStaveInAccolade == null) { _lastStaveInAccolade = stave; stave.IsLastInAccolade = true; } if (_lastStaveInAccolade != null) { _lastStaveInAccolade.IsLastInAccolade = false; } _lastStaveInAccolade = stave; _lastStaveInAccolade.IsLastInAccolade = true; group.LastStaveInAccolade = stave; } }