java – TDD Greeter Kata

I have done kata greeter using TDD and I would appreciate code review. I feel that probably I overcomplicated solution in this part:

class BeginningProviderImpl implements BeginningProvider {
    public String provide() {
        LocalTime time = timeProvider.provide();
        for (TimeRangePredicateSupplier predicateSupplier : timeRanges)
            if (predicateSupplier.test(time))
                return predicateSupplier.get();

        return new AfternoonPredicateSupplier().get();

Whole project

Test code package

Production code package