protected void finish(MusicAlbumJSON result)
 {
     if (fieldGeneratorArtists.have_value)
     {
         result.initArtists();
         int count = fieldGeneratorArtists.value.Count;
         for (int num = 0; num < count; ++num)
         {
             result.appendArtists(fieldGeneratorArtists.value[num]);
         }
         fieldGeneratorArtists.value.Clear();
         fieldGeneratorArtists.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 finish()
        {
            MusicAlbumJSON result = new MusicAlbumJSON();

            Debug.Assert(result != null);
            finish(result);
            handle_result(result);
        }
 protected override void handle_result(MusicAlbumJSON result)
 {
     top.value.Add(result);
 }
        protected override void handle_result(MusicAlbumJSON result)
        {
//@@@            Debug.Assert(!have_value);
            have_value = true;
            value      = result;
        }
 protected abstract void handle_result(MusicAlbumJSON new_result);