def _parse_date(self, text):
        date_bound_builder = DateBound.builder().setText(text)

        if text.endswith('?'):
            date_bound_builder.setCirca(True)
            text = text[:-1]

        DateParser.parse_certain_date(
            date_bound_builder=date_bound_builder,
            text=text
        )

        return date_bound_builder.build()
    def __parse_date(self, text, circa=None):
        date_bound_builder = DateBound.Builder().setText(text)

        if text[-1] == 'u':
            date_bound_builder.setCirca(True)
            text = text[:-1] + '0'
        elif text[-1] == '~':
            date_bound_builder.setCirca(True)
            text = text[:-1]
        elif circa is not None:
            date_bound_builder.setCirca(circa)

        DateParser.parse_certain_date(
            date_bound_builder=date_bound_builder,
            text=text
        )

        return date_bound_builder.build()