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

            Debug.Assert(result != null);
            finish(result);
            handle_result(result);
        }
 protected void finish(MusicPreviewLinkJSON result)
 {
     if (fieldGeneratorSource.have_value)
     {
         result.setSource(fieldGeneratorSource.value);
         fieldGeneratorSource.have_value = false;
     }
     else if ((!(result.hasSource())) && !allow_incomplete)
     {
         error("When parsing the object for %what%, the \"Source\" field was missing.");
     }
     if (fieldGeneratorUrl.have_value)
     {
         result.setUrl(fieldGeneratorUrl.value);
         fieldGeneratorUrl.have_value = false;
     }
     else if ((!(result.hasUrl())) && !allow_incomplete)
     {
         error("When parsing the object for %what%, the \"Url\" field was missing.");
     }
 }
 protected override void handle_result(MusicPreviewLinkJSON result)
 {
     top.value.Add(result);
 }
        protected override void handle_result(MusicPreviewLinkJSON result)
        {
//@@@            Debug.Assert(!have_value);
            have_value = true;
            value      = result;
        }
 protected abstract void handle_result(MusicPreviewLinkJSON new_result);