<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def register_calendar_type(self, name, calendar_type, force=False):
 """ Registers a calendar by type. This is useful for registering a new calendar to be lazily instantiated at some future point in time. Parameters name: str The key with which to register this calendar. calendar_type: type The type of the calendar to register. force : bool, optional If True, old calendars will be overwritten on a name collision. If False, name collisions will raise an exception. Default is False. Raises ------ CalendarNameCollision If a calendar is already registered with the given calendar's name. """

        if force:
            self.deregister_calendar(name)

        if self.has_calendar(name):
            raise CalendarNameCollision(calendar_name=name)

        self._calendar_factories[name] = calendar_type