private string GetRomanValueForBiggerNumbers(string romanValue,int quotient,Step step,string accumulatedString)
 {
     if (quotient <= 3)
         romanValue += new string(step.Symbol, quotient);
     else if (!step.CanSubtract)
         romanValue = _stepsGenerator.GetNextSmallerSymbol(step)  + romanValue;
     else
     {
         if (quotient == 4)
             romanValue = accumulatedString + step.Symbol.ToString() + _stepsGenerator.GetLastLevelSymbol(step) ;
         else
             romanValue = accumulatedString + step.Symbol.ToString() +_stepsGenerator.GetLastSubtractableLevelSymbol(step) ;
     }
     return romanValue;
 }
        private string GetRomanValueForSmallerNumbers(int number, string accumulatedString, Step step, int remainder)
        {
            var subtractables = _stepsGenerator.GetSubtractablesForLevel(step.Level);
            if (subtractables != null && subtractables.Any())
            {
                var firstSubtractor = subtractables.First();
                if ((firstSubtractor.Value + remainder) == step.Value)
                    return accumulatedString + firstSubtractor.Symbol.ToString() + step.Symbol.ToString();
                if ((step.Value - firstSubtractor.Value) < number)
                {

                    return GetRomanValue(number - (step.Value - firstSubtractor.Value), step.Level, firstSubtractor.Symbol.ToString() + step.Symbol.ToString());
                }
            }
            return "";
        }
 private bool IsInvalidStep(Step step, int remainder)
 {
     return !step.CanSubtract && remainder > 3;
 }