/// <summary>
        /// Initializes a new instance of the <see cref="ConfigurationRecipe" /> class.
        /// </summary>
        /// <param name="code">User given string name (code) to identify the recipe. (required).</param>
        /// <param name="market">market.</param>
        /// <param name="pricing">pricing.</param>
        /// <param name="aggregation">aggregation.</param>
        /// <param name="inheritedRecipes">A list of parent recipes (scope,code) that can be used to share functionality between recipes. For instance one might use common recipes to set up  pricing for individual asset classes, e.g. rates or credit, and then combine them into a single recipe to be used by an exotics desk in conjunction with  some overrides that it requires for models or other pricing options..</param>
        public ConfigurationRecipe(string code = default(string), MarketContext market = default(MarketContext), PricingContext pricing = default(PricingContext), AggregationContext aggregation = default(AggregationContext), List <ResourceId> inheritedRecipes = default(List <ResourceId>))
        {
            // to ensure "code" is required (not null)
            if (code == null)
            {
                throw new InvalidDataException("code is a required property for ConfigurationRecipe and cannot be null");
            }
            else
            {
                this.Code = code;
            }

            this.Market           = market;
            this.Pricing          = pricing;
            this.Aggregation      = aggregation;
            this.InheritedRecipes = inheritedRecipes;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ConfigurationRecipe" /> class.
 /// </summary>
 /// <param name="scope">The scope used when updating or inserting the Configuration Recipe. (required).</param>
 /// <param name="code">User given string name (code) to identify the recipe. (required).</param>
 /// <param name="market">market.</param>
 /// <param name="pricing">pricing.</param>
 /// <param name="aggregation">aggregation.</param>
 /// <param name="inheritedRecipes">A list of parent recipes (scope,code) that can be used to share functionality between recipes. For instance one might use common recipes to set up  pricing for individual asset classes, e.g. rates or credit, and then combine them into a single recipe to be used by an exotics desk in conjunction with  some overrides that it requires for models or other pricing options..</param>
 /// <param name="description">User can assign a description to understand more humanly the recipe..</param>
 /// <param name="holding">holding.</param>
 public ConfigurationRecipe(string scope = default(string), string code = default(string), MarketContext market = default(MarketContext), PricingContext pricing = default(PricingContext), AggregationContext aggregation = default(AggregationContext), List <ResourceId> inheritedRecipes = default(List <ResourceId>), string description = default(string), HoldingContext holding = default(HoldingContext))
 {
     // to ensure "scope" is required (not null)
     this.Scope = scope ?? throw new ArgumentNullException("scope is a required property for ConfigurationRecipe and cannot be null");
     // to ensure "code" is required (not null)
     this.Code             = code ?? throw new ArgumentNullException("code is a required property for ConfigurationRecipe and cannot be null");
     this.Market           = market;
     this.Pricing          = pricing;
     this.Aggregation      = aggregation;
     this.InheritedRecipes = inheritedRecipes;
     this.Description      = description;
     this.Holding          = holding;
 }