protected virtual bool DeleteUserFunction(string key)
        {
            var existingUserFunction = FindUserFunction(key);

            if (existingUserFunction == null)
            {
                throw new ArgumentException($"UserFunction having key {key} not found.");
            }

            return(UserTelemetryUserFunctions.Remove(existingUserFunction));
        }
        protected virtual bool SaveUserFunction(IUserDefinedFunction UserFunction)
        {
            var UserFunctionsBuffer = UserTelemetryUserFunctions.ToList();

            UserFunctionsBuffer.Add(UserFunction);

            if (!UserFunctionsListIsValid(UserFunctionsBuffer))
            {
                return(false);
            }

            DeleteUserFunction(UserFunction);

            UserTelemetryUserFunctions.Add(UserFunction);

            return(true);
        }
 protected virtual IList <IUserDefinedFunction> GetUserFunctions()
 {
     return(UserTelemetryUserFunctions.ToList());
 }
 protected virtual IUserDefinedFunction GetUserFunction(string name)
 {
     return(UserTelemetryUserFunctions.FirstOrDefault(f => f.Name == name));
 }