public static TSetting GetMetadataAwareOrCreateNew <TSetting>([NotNull] this ModelMetadataItem item) where TSetting : class, IMetadataAware, new() { var setting = item.GetMetadataAware <TSetting>(); if (setting == null) { setting = new TSetting(); item.MetadataAwares.Add(setting); } return(setting); }