internal TypeSetting GetTypeSetting(
            NamespaceSetting namespaceSetting,
            Type type)
        {
            // check if it has a type setting.
            var typeSetting = namespaceSetting.Types?.SingleOrDefault(x => x.Name == type.FullName);

            // if it's not null, perhaps there's a definition in the settings file already.
            if (typeSetting != null)
            {
                return(typeSetting);
            }

            return(null);
        }
        internal CommandSetting GetCommandSetting(
            NamespaceSetting namespaceSetting,
            TypeSetting typeSetting,
            string key)
        {
            var entry = typeSetting.Commands?.SingleOrDefault(x => x.Key == key);

            // might be part of the type setting already.
            if (entry != null && entry.HasValue)
            {
                if (!string.IsNullOrWhiteSpace(entry.Value.Key))
                {
                    return(entry.Value.Value);
                }
            }

            return(null);
        }