public IDisposable BeginScope <TState>(TState state)
        {
            if (state == null)
            {
                throw new ArgumentNullException(nameof(state));
            }

            return(ConsoleLogScope.Push(Name, state));
        }
        public static IDisposable Push(string name, object state)
        {
            var temp = Current;

            Current        = new ConsoleLogScope(name, state);
            Current.Parent = temp;

            return(new DisposableScope());
        }