public static object Merge()

in src/Microsoft.Atlas.CommandLine/Execution/MergeUtils.cs [11:50]


        public static object Merge(object overlayValues, object underlayValues)
        {
            var overlayProperties = overlayValues as IDictionary<object, object>;
            var underlayProperties = underlayValues as IDictionary<object, object>;

            if (overlayProperties != null && underlayProperties != null)
            {
                var result = new Dictionary<object, object>();
                foreach (var key in underlayProperties.Keys.Concat(overlayProperties.Keys.Except(underlayProperties.Keys)))
                {
                    if (overlayProperties.TryGetValue(key, out var childValue1))
                    {
                        if (underlayProperties.TryGetValue(key, out var childValue2))
                        {
                            result.Add(key, Merge(childValue1, childValue2));
                        }
                        else
                        {
                            result.Add(key, childValue1);
                        }
                    }
                    else
                    {
                        if (underlayProperties.TryGetValue(key, out var childValue2))
                        {
                            result.Add(key, childValue2);
                        }
                        else
                        {
                            // NOTE: hitting this line is technically impossible...
                            result.Add(key, null);
                        }
                    }
                }

                return result;
            }

            return overlayValues;
        }