// A spot for immutable helpers // TODO // TODO // TODO // x) Wrap metadata into its own struct // x) Make metadata a struct vs a class using imm; using System; using System.Runtime.CompilerServices; static public class iu { //This can handle both Timed and Recorded static public T Process( ref T obj, Func fn, string reason = "", [CallerMemberName] string memberName = "", [CallerFilePath] string filePath = "", [CallerLineNumber] int lineNumber = 0, [CallerArgumentExpression("fn")] string expression = default ) where T : Recorded { obj = obj.Process( fn, reason, memberName, filePath, lineNumber, expression ); return obj; } static public T LightProcess( ref T obj, Func fn, string reason = "", [CallerMemberName] string memberName = "", [CallerFilePath] string filePath = "", [CallerLineNumber] int lineNumber = 0, [CallerArgumentExpression("fn")] string expression = default ) where T : Versioned { obj = obj.Process( fn, reason ); return obj; } }