using System.Runtime.CompilerServices; namespace Qrakhen.Qamp.Core.Abstractions; public interface IDebug { T Debug(DebugLevel level = DebugLevel.None); } public interface IDebug { TOut Debug(TContext? context, DebugLevel level = DebugLevel.None); } public enum DebugLevel { None = 0, Mild = 1, Strong = 2, Verbose = 3 } public static class Debugger { public static string GetContextString(object? origin, [CallerMemberName] string? caller = null) { return $"{{Debugger::Builder}}: [{origin?.ToString() ?? "null"}] <{origin?.GetType().Name ?? "null"}> ({caller ?? "null"})"; } }