public static bool HasInterface <T>(this object obj, [MaybeNull] out T typedObj) => obj.HasInterface <T>() ? TeronisTools.ReturnValue((T)obj, out typedObj, true) : TeronisTools.ReturnValue(default, out typedObj, false);
public static V ReturnValue <I, V>(this I inValue, [MaybeNull] out I outInValue, GetInputDelegate <I, V> getValue) => TeronisTools.ReturnValue(inValue, out outInValue, getValue);
public static V ReturnValue <I, V>(this I inValue, GetInputDelegate <I, V> getValue) => TeronisTools.ReturnValue(inValue, getValue);
public static V ReturnValue <I, V>(this I inValue, [MaybeNull] out I outInValue, Func <V> getValue) => TeronisTools.ReturnValue(inValue, out outInValue, getValue);