protected override void finish()
        {
            MusicArtistJSON result = new MusicArtistJSON();

            Debug.Assert(result != null);
            finish(result);
            handle_result(result);
        }
 protected void finish(MusicArtistJSON result)
 {
     if (fieldGeneratorAlbumsLabel.have_value)
     {
         result.setAlbumsLabel(fieldGeneratorAlbumsLabel.value);
         fieldGeneratorAlbumsLabel.have_value = false;
     }
     if (fieldGeneratorAlbums.have_value)
     {
         result.initAlbums();
         int count = fieldGeneratorAlbums.value.Count;
         for (int num = 0; num < count; ++num)
         {
             result.appendAlbums(fieldGeneratorAlbums.value[num]);
         }
         fieldGeneratorAlbums.value.Clear();
         fieldGeneratorAlbums.have_value = false;
     }
     if (fieldGeneratorTracksLabel.have_value)
     {
         result.setTracksLabel(fieldGeneratorTracksLabel.value);
         fieldGeneratorTracksLabel.have_value = false;
     }
     if (fieldGeneratorTracks.have_value)
     {
         result.initTracks();
         int count = fieldGeneratorTracks.value.Count;
         for (int num = 0; num < count; ++num)
         {
             result.appendTracks(fieldGeneratorTracks.value[num]);
         }
         fieldGeneratorTracks.value.Clear();
         fieldGeneratorTracks.have_value = false;
     }
     base.finish(result);
 }
 protected override void handle_result(MusicArtistJSON result)
 {
     top.value.Add(result);
 }
        protected override void handle_result(MusicArtistJSON result)
        {
//@@@            Debug.Assert(!have_value);
            have_value = true;
            value      = result;
        }
 protected abstract void handle_result(MusicArtistJSON new_result);