public static ModelNode AddListFieldLink(this ModelNode model, FieldDefinition definition, Action<ModelNode> action)
        {
            if (definition.Id != default(Guid))
            {
                return model.AddDefinitionNode(new ListFieldLinkDefinition
                {
                    FieldId = definition.Id
                }, action);
            }

            return model.AddDefinitionNode(new ListFieldLinkDefinition
            {
                FieldInternalName = definition.InternalName
            }, action);
        }
        public static ModelNode AddWebPartGalleryFiles(this ModelNode model, IEnumerable<WebPartGalleryFileDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddContentTypeLinks(this ModelNode model, IEnumerable<ContentTypeLinkDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddProperties(this ModelNode model, IEnumerable<PropertyDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddBusinessDataFields(this ModelNode model, IEnumerable<BusinessDataFieldDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddAlternateUrls(this ModelNode model, IEnumerable<AlternateUrlDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddReusableTextItems(this ModelNode model, IEnumerable<ReusableTextItemDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddImageRenditions(this ModelNode model, IEnumerable<ImageRenditionDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddControlDisplayTemplates(this ModelNode model, IEnumerable<ControlDisplayTemplateDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddComposedLookItems(this ModelNode model, IEnumerable<ComposedLookItemDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddPublishingPageLayouts(this ModelNode model, IEnumerable<PublishingPageLayoutDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddEventReceivers(this ModelNode model, IEnumerable<EventReceiverDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddSummaryLinkFields(this ModelNode model, IEnumerable<SummaryLinkFieldDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddSandboxSolutions(this ModelNode model, IEnumerable<SandboxSolutionDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddUserCustomActions(this ModelNode model, IEnumerable<UserCustomActionDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddQuickLaunchNavigationNodes(this ModelNode model, IEnumerable<QuickLaunchNavigationNodeDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddMultiChoiceFields(this ModelNode model, IEnumerable<MultiChoiceFieldDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddListItemFieldValues(this ModelNode model, IEnumerable<ListItemFieldValuesDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddMasterPagePreviews(this ModelNode model, IEnumerable<MasterPagePreviewDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddWikiPages(this ModelNode model, IEnumerable<WikiPageDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddClientWebParts(this ModelNode model, IEnumerable<ClientWebPartDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddSP2013WorkflowSubscriptions(this ModelNode model, IEnumerable<SP2013WorkflowSubscriptionDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddProjectSummaryWebParts(this ModelNode model, IEnumerable<ProjectSummaryWebPartDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddSecurityRoles(this ModelNode model, IEnumerable<SecurityRoleDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddGeolocationFields(this ModelNode model, IEnumerable<GeolocationFieldDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddFields(this ModelNode model, IEnumerable<FieldDefinition> fieldDefinitions)
        {
            foreach (var fieldDefinition in fieldDefinitions)
                model.AddDefinitionNode(fieldDefinition);

            return model;
        }
        public static ModelNode AddTaxonomyTermSets(this ModelNode model, IEnumerable<TaxonomyTermSetDefinition> definitions)
        {
            foreach (var definition in definitions)
                model.AddDefinitionNode(definition);

            return model;
        }
        public static ModelNode AddSecurityRoleLink(this  ModelNode model, string securityRoleName, Action<ModelNode> action)
        {
            var newSecurityRoleLink = new SecurityRoleLinkDefinition
            {
                SecurityRoleName = securityRoleName
            };

            return model.AddDefinitionNode(newSecurityRoleLink, action);
        }
        public static ModelNode AddSecurityRoleLink(this ModelNode model, SecurityRoleDefinition definition, Action<ModelNode> action)
        {
            var roleLinkDefinition = new SecurityRoleLinkDefinition
            {
                SecurityRoleName = definition.Name
            };

            return model.AddDefinitionNode(roleLinkDefinition, action);
        }
 public static ModelNode AddHideContentTypeFieldLinks(this ModelNode model, HideContentTypeFieldLinksDefinition definition, Action<ModelNode> action)
 {
     return model.AddDefinitionNode(definition, action);
 }