internal static string ConvertToRomanSingularNumber(int numberToConvert)
        {
            if (numberToConvert == 0)
            {
                return("");
            }
            CreateInstances();
            RomanNumberInstance before = null;
            RomanNumberInstance after  = null;

            foreach (RomanNumberInstance instance in instances)
            {
                int instanceNumber = instance.GetNumber();
                if (numberToConvert == instanceNumber)
                {
                    return("" + instance.GetLetter());
                }
                if (numberToConvert > instanceNumber)
                {
                    if (before == null || before.GetNumber() < instanceNumber)
                    {
                        before = instance;
                    }
                }
                if (numberToConvert < instanceNumber)
                {
                    if (after == null || after.GetNumber() > instanceNumber)
                    {
                        after = instance;
                    }
                }
            }
            if (after != null)
            {
                foreach (RomanNumberInstance instance in instances)
                {
                    if (after.AllowedBefore(instance))
                    {
                        if (after.GetNumber() - instance.GetNumber() == numberToConvert)
                        {
                            return("" + instance.GetLetter() + after.GetLetter());
                        }
                    }
                }
            }
            if (before != null)
            {
                int amountOfBefores = 2;
                while (true)
                {
                    if (before.GetNumber() * amountOfBefores == numberToConvert)
                    {
                        string toReturn = "";
                        for (int i = 0; i < amountOfBefores; i++)
                        {
                            toReturn += before.GetLetter();
                        }
                        return(toReturn);
                    }
                    else if (before.GetNumber() * amountOfBefores > numberToConvert)
                    {
                        foreach (RomanNumberInstance instance in instances)
                        {
                            if (before.AllowedAfter(instance))
                            {
                                int amountOfAfters = 1;
                                while (true)
                                {
                                    if (before.GetNumber() + instance.GetNumber() * amountOfAfters == numberToConvert)
                                    {
                                        string toReturn = "" + before.GetLetter();
                                        for (int i = 0; i < amountOfAfters; i++)
                                        {
                                            toReturn += instance.GetLetter();
                                        }
                                        return(toReturn);
                                    }
                                    else if (before.GetNumber() + instance.GetNumber() * amountOfAfters > numberToConvert)
                                    {
                                        throw new NotImplementedException();
                                    }
                                    else
                                    {
                                        amountOfAfters++;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        amountOfBefores++;
                    }
                }
            }
            throw new NotImplementedException();
        }