protected IObjectTypeConfig <S, T> Config(IObjectTypeConfig <S, T> config) { return(new ObjectTypeConfig <S, T> { Name = config.Name ?? Name, Hooks = new[] { Hooks, config.Hooks } .SelectMany(d => d) .GroupBy ( kvp => kvp.Key, (key, kvps) => new { Key = key, Value = kvps.SelectMany(x => x.Value).ToList() } ) .ToDictionary(x => x.Key, y => y.Value), Mutables = config.Mutables.Concat(Mutables).ToList(), Volatiles = config.Volatiles.Concat(Volatiles).ToList(), Views = Views.Concat(config.Views).Distinct().ToList(), Actions = Actions.Concat(config.Actions).Distinct().ToList(), Initializers = config.Initializers.Concat(Initializers).ToList(), PreProcessor = config.PreProcessor ?? PreProcessor, Proxify = config.Proxify ?? Proxify, Snapshoty = config.Snapshoty ?? Snapshoty }); }