def finalize_timespan_constructs(guess = false)
      @tsci.each do |i|
        st, et = @constructs[i].start_time, @constructs[i].end_time
        if st.firm && et.firm
          next  # nothing to do if start and end times are both firm
        elsif !st.firm && et.firm
          st.modify_such_that_is_before(et)
        elsif st.firm && !et.firm
          et.modify_such_that_is_after(st)
        else
          et.guess_modify_such_that_is_after(st)  if guess
        end
      end
    end
def finalize_timespan_constructs(guess = false)
      @tsci.each do |i|
        st, et = @constructs[i].start_time, @constructs[i].end_time
        if st.firm && et.firm
          next  # nothing to do if start and end times are both firm
        elsif !st.firm && et.firm
          st.modify_such_that_is_before(et)
        elsif st.firm && !et.firm
          et.modify_such_that_is_after(st)
        else
          et.guess_modify_such_that_is_after(st)  if guess
        end
      end
    end
If guess is false, either start time or end time (but not both) must already be firm.
 The time that is not firm will be modified according to the firm time and set to firm.