logDebug( "updateBeliefStateForTime(): "
if ( _logger.isDebugEnabled() ) _logger.debug( "updateBeliefStateForTime(): "
    BeliefState updateBeliefStateForTime( BeliefState start_belief,                                           BeliefUpdateTrigger trigger )            throws BelievabilityException    {        if ( start_belief == null )            throw new BelievabilityException                    ( "POMDPAssetModel.updateBeliefStateForTime()",                      "NULL starting belief passed in." );        long end_time;        // For testing to increase the time intervals so that I do not        // have to idle for minutes.        //        if ( USE_FAKE_TRIGGER_TIME )        {            logWarning( "USING FAKE TIME FOR TESTING ! (FIXME)" );            end_time = nextFakeTime();         }           BeliefState next_belief = (BeliefState) start_belief.clone();        // Set the cause of this update.        //        next_belief.setUpdateTrigger( trigger );        // Get the current time we need to update to.        //        end_time = trigger.getTriggerTimestamp();        next_belief.setTimestamp( end_time );        // FIXME: verify that this is the corect change in time.  In        // particular, make sure it does not need to be computed on a        // state dimension by state dimnesion basis.        //        long start_time = start_belief.getTimestamp();        if ( start_time > end_time )        {            logDebug( "updateBeliefStateForTime(): "                      + " Found a negative update interval."                      + "[ " + start_time + ", " + end_time + "]"                      + " for asset " + start_belief.getAssetID()                      + ". Skipping threat update computation." );            return next_belief;        }        if ( start_time == end_time )        {            logDebug( "updateBeliefStateForTime(): Zero length interval."                     + "[ " + start_time + ", " + end_time + "]"                     + " for asset " + start_belief.getAssetID()                     + ". Threats already accounted for." );            return next_belief;        }        if ( WORRY_ABOUT_SMALL_INTERVALS )        {            if ( (end_time - start_time) < SMALLEST_THREAT_INTERVAL_MS/2 )            {                logDetail( "updateBeliefStateForTime(): "                           + " Found miniscule update interval."                           + "[ " + start_time + ", " + end_time + "]"                           + " for asset " + start_belief.getAssetID()                           + ". Assuming threats have been accounted for." );                return next_belief;            } // If small interval, rounding down                        if ( (end_time - start_time) < SMALLEST_THREAT_INTERVAL_MS )            {                logDetail( "updateBeliefStateForTime(): "                           + " Found small update interval."                           + "[ " + start_time + ", " + end_time + "]"                           + " for asset " + start_belief.getAssetID()                           + ". Rounding to "                            + SMALLEST_THREAT_INTERVAL_MS + "." );                start_time = end_time - SMALLEST_THREAT_INTERVAL_MS;            } // If small interval, rounding up                    } // if WORRY_ABOUT_SMALL_INTERVALS                logDetail( "updateBeliefStateForTime(): "                   + "Updating for all threats over interval."                   + "[ " + start_time + ", " + end_time + "]"                   + " for asset " + start_belief.getAssetID()                   + "." );                logDetail( "Belief before threat update: " + start_belief.toString() );         // Here we will be updating all the state dimensions.        //        for ( int dim_idx = 0;              dim_idx < _dimension_pomdp_model.length;              dim_idx++ )        {            POMDPAssetDimensionModel pomdp_model_dim                    = _dimension_pomdp_model[dim_idx];            String state_dim_name = _asset_type_model.getStateDimName(dim_idx);            // ..and then the appropriate start belief state dimension...            BeliefStateDimension start_belief_dim                    = start_belief.getBeliefStateDimension( state_dim_name );                        // ...and then the approrpiate next belief state dimension...            BeliefStateDimension next_belief_dim                    = next_belief.getBeliefStateDimension( state_dim_name );            // ...then finally we do the belief update proper.            pomdp_model_dim.updateBeliefStateThreatTrans( start_belief_dim,                                                          start_time,                                                          end_time,                                                          next_belief_dim );        } // for dim_idx        logDetail( "Belief after threat update: " + next_belief.toString() );        return next_belief;    } // method updateBeliefStateForTime