public bool Call(string name, IReadOnlyList <ExpressionVariant> arguments, out ExpressionVariant result)
        {
            result = default;
            if (!_registry.TryGetValue(name, out var nameGroup))
            {
                return(false);
            }
            if (!nameGroup.TryGetValue(arguments.Count, out var countGroup))
            {
                return(false);
            }
            foreach (var record in countGroup)
            {
                var match = true;
                for (var c = 0; c < arguments.Count; c++)
                {
                    if (record.Types[c] != arguments[c].Type)
                    {
                        match = false;
                        break;
                    }
                }

                if (match)
                {
                    result = record.Delegate(arguments);
                    return(true);
                }
            }

            return(false);
        }
 public bool Call(string name, IReadOnlyList <ExpressionVariant> arguments, out ExpressionVariant result) =>
 _registry.Call(name, arguments, out result);