protected override void finish()
        {
            if (!(getCommandResultJSONKey().Equals("AgeCalculatorStartCommand")))
            {
                throw new Exception("The key field has a value other than `AgeCalculatorStartCommand'.");
            }
            AgeCalculatorStartCommandJSON result = new AgeCalculatorStartCommandJSON();

            Debug.Assert(result != null);
            finish(result);
            handle_result(result);
        }
 protected void finish(AgeCalculatorStartCommandJSON result)
 {
     if (fieldGeneratorMode.have_value)
     {
         result.setMode();
         fieldGeneratorMode.have_value = false;
     }
     if (fieldGeneratorUnderstood.have_value)
     {
         result.setUnderstood(fieldGeneratorUnderstood.value);
         fieldGeneratorUnderstood.have_value = false;
     }
     if (fieldGeneratorInvalidBornDateWasGiven.have_value)
     {
         result.setInvalidBornDateWasGiven(fieldGeneratorInvalidBornDateWasGiven.value);
         fieldGeneratorInvalidBornDateWasGiven.have_value = false;
     }
     if (fieldGeneratorDestinationDate.have_value)
     {
         result.setDestinationDate(fieldGeneratorDestinationDate.value);
         fieldGeneratorDestinationDate.have_value = false;
     }
     else if ((!(result.hasDestinationDate())) && !allow_incomplete)
     {
         error("When parsing the object for %what%, the \"DestinationDate\" field was missing.");
     }
     if (fieldGeneratorDestinationIsNow.have_value)
     {
         result.setDestinationIsNow(fieldGeneratorDestinationIsNow.value);
         fieldGeneratorDestinationIsNow.have_value = false;
     }
     if (fieldGeneratorDestinationIsToday.have_value)
     {
         result.setDestinationIsToday(fieldGeneratorDestinationIsToday.value);
         fieldGeneratorDestinationIsToday.have_value = false;
     }
     if (fieldGeneratorNowDate.have_value)
     {
         result.setNowDate(fieldGeneratorNowDate.value);
         fieldGeneratorNowDate.have_value = false;
     }
     if (fieldGeneratorPerspective.have_value)
     {
         result.setPerspective(fieldGeneratorPerspective.value);
         fieldGeneratorPerspective.have_value = false;
     }
     base.finish(result);
 }
 protected override void handle_result(AgeCalculatorStartCommandJSON result)
 {
     top.value.Add(result);
 }
        protected override void handle_result(AgeCalculatorStartCommandJSON result)
        {
//@@@            Debug.Assert(!have_value);
            have_value = true;
            value      = result;
        }
 protected abstract void handle_result(AgeCalculatorStartCommandJSON new_result);