namespace Pilz.Plugins.Advanced; public static class Extensions { public static T? ExecuteIfEnabled(this PluginFunction @this, params object?[]? @params) { return @this.Enabled ? @this.Execute(@params) : default; } public static object? ExecuteIfEnabled(this PluginFunction @this, params object?[]? @params) { return @this.Enabled ? @this.Execute(@params) : default; } public static T? ExecuteIfEnabled(this PluginFunction @this, PluginFunctionSimpleParamter? @params) { return @this.Enabled ? @this.Execute(@params) : default; } public static object? ExecuteIfEnabled(this PluginFunction @this, PluginFunctionParameter? @params) { return @this.Enabled ? @this.Execute(@params) : default; } public static IEnumerable Enabled(this IEnumerable @this) where T : PluginFeature { return @this.Where(n => n.Enabled); } public static IEnumerable Ordered(this IEnumerable @this) where T : PluginFeature { return @this.OrderByDescending(n => n.Prioritization); } }