There are multiple different types of `CalendarEntry` (the `SingleTimeEntry` and the `TimeRangeEntry`), did you mean `CalendarItem`? That would mean a change to the database or at least the mappings on the database to produce different classes. 

I was starting to work on specific builders for each type and have the 'CalendarEntryBuilder' take in specific builders for each type and return the first non-null value.