<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def move_transition_point(self, fragment_index, value):
 """ Change the transition point between fragment ``fragment_index`` and the next fragment to the time value ``value``. This method fails silently (without changing the fragment list) if at least one of the following conditions holds: * ``fragment_index`` is negative * ``fragment_index`` is the last or the second-to-last * ``value`` is after the current end of the next fragment * the current fragment and the next one are not adjacent and both proper intervals (not zero length) The above conditions ensure that the move makes sense and that it keeps the list satisfying the constraints. :param int fragment_index: the fragment index whose end should be moved :param value: the new transition point :type value: :class:`~aeneas.exacttiming.TimeValue` """

        self.log(u"Called move_transition_point with")
        self.log([u"  fragment_index %d", fragment_index])
        self.log([u"  value          %.3f", value])
        if (fragment_index < 0) or (fragment_index > (len(self) - 3)):
            self.log(u"Bad fragment_index, returning")
            return
        current_interval = self[fragment_index].interval
        next_interval = self[fragment_index + 1].interval
        if value > next_interval.end:
            self.log(u"Bad value, returning")
            return
        if not current_interval.is_non_zero_before_non_zero(next_interval):
            self.log(u"Bad interval configuration, returning")
            return
        current_interval.end = value
        next_interval.begin = value
        self.log(u"Moved transition point")