private void  fromJSONAmenityGroup(JSONValue json_value, bool ignore_extras)
    {
        Debug.Assert(json_value != null);
        JSONArrayValue json_array1 = json_value.array_value();

        if (json_array1 == null)
        {
            throw new Exception("The value for field AmenityGroup of AmenityGroupSpecJSON is not an array.");
        }
        int count1 = json_array1.componentCount();
        List <TypeAmenityGroupJSON> vector_AmenityGroup1 = new List <TypeAmenityGroupJSON>(count1);

        for (int num1 = 0; num1 < count1; ++num1)
        {
            TypeAmenityGroupJSON convert_classy = TypeAmenityGroupJSON.from_json(json_array1.component(num1), ignore_extras, true);
            vector_AmenityGroup1.Add(convert_classy);
        }
        initAmenityGroup();
        for (int num1 = 0; num1 < vector_AmenityGroup1.Count; ++num1)
        {
            appendAmenityGroup(vector_AmenityGroup1[num1]);
        }
        for (int num1 = 0; num1 < vector_AmenityGroup1.Count; ++num1)
        {
        }
    }
            protected override void finish()
            {
                TypeAmenityGroupJSON result = new TypeAmenityGroupJSON();

                Debug.Assert(result != null);
                finish(result);
                handle_result(result);
            }
 public void appendAmenityGroup(TypeAmenityGroupJSON to_append)
 {
     if (!flagHasAmenityGroup)
     {
         flagHasAmenityGroup = true;
         storeAmenityGroup.Clear();
     }
     Debug.Assert(flagHasAmenityGroup);
     storeAmenityGroup.Add(to_append);
 }
 protected void finish(TypeAmenityGroupJSON result)
 {
     if (fieldGeneratorAmenityAlias.have_value)
     {
         result.setAmenityAlias(fieldGeneratorAmenityAlias.value);
         fieldGeneratorAmenityAlias.have_value = false;
     }
     else if ((!(result.hasAmenityAlias())) && !allow_incomplete)
     {
         error("When parsing the object for %what%, the \"AmenityAlias\" field was missing.");
     }
     if (fieldGeneratorAmenityName.have_value)
     {
         result.setAmenityName(fieldGeneratorAmenityName.value);
         fieldGeneratorAmenityName.have_value = false;
     }
     else if ((!(result.hasAmenityName())) && !allow_incomplete)
     {
         error("When parsing the object for %what%, the \"AmenityName\" field was missing.");
     }
     if (fieldGeneratorAmenitySpokenNameSingular.have_value)
     {
         result.setAmenitySpokenNameSingular(fieldGeneratorAmenitySpokenNameSingular.value);
         fieldGeneratorAmenitySpokenNameSingular.have_value = false;
     }
     if (fieldGeneratorAmenitySpokenNamePlural.have_value)
     {
         result.setAmenitySpokenNamePlural(fieldGeneratorAmenitySpokenNamePlural.value);
         fieldGeneratorAmenitySpokenNamePlural.have_value = false;
     }
     if (fieldGeneratorAmenityTopLevelName.have_value)
     {
         result.setAmenityTopLevelName(fieldGeneratorAmenityTopLevelName.value);
         fieldGeneratorAmenityTopLevelName.have_value = false;
     }
     if (fieldGeneratorAmenityTopLevelSpokenNameSingular.have_value)
     {
         result.setAmenityTopLevelSpokenNameSingular(fieldGeneratorAmenityTopLevelSpokenNameSingular.value);
         fieldGeneratorAmenityTopLevelSpokenNameSingular.have_value = false;
     }
     if (fieldGeneratorAmenityTopLevelSpokenNamePlural.have_value)
     {
         result.setAmenityTopLevelSpokenNamePlural(fieldGeneratorAmenityTopLevelSpokenNamePlural.value);
         fieldGeneratorAmenityTopLevelSpokenNamePlural.have_value = false;
     }
 }
 protected override void handle_result(TypeAmenityGroupJSON result)
 {
     top.value.Add(result);
 }
 protected override void handle_result(TypeAmenityGroupJSON result)
 {
     //@@@            Debug.Assert(!have_value);
     have_value = true;
     value      = result;
 }
 protected abstract void handle_result(TypeAmenityGroupJSON new_result);