public bool TryGet(string name, IEnumerable <InjectionValue> argumentValues, out NativeSubrutineDefinition subrutineDefinition)
        {
            var key = NativeSubrutineDefinition.GetSignature(name, argumentValues);

            if (subrutines.TryGetValue(key, out var value))
            {
                subrutineDefinition = value;
                return(true);
            }

            key = NativeSubrutineDefinition.GetAnySignature(name, argumentValues);
            if (subrutines.TryGetValue(key, out value))
            {
                subrutineDefinition = value;
                return(true);
            }

            subrutineDefinition = null;
            return(false);
        }
 public void Add(NativeSubrutineDefinition subrutineDef)
 => subrutines.Add(subrutineDef.GetSignature(), subrutineDef);