Remove debug information
Remove duplicated code by getAmountInPeriod
Remove magic number by getStartOfNext(Previous)BudgetPeriod method
Introduce domain object Period
Rename getAmount related methods to more meaningful names
Introduce domain object BudgetPeriod
Remove dead code which throws unnecessary exception
Move day count code to Period and BudgetPeriod
iterate over BudgetPeriod instead of String key
Generalize code by getAmountOfOverlappingDays
Final code cleanup