@Override public boolean isModified(){
  if (_isDigestModified) {
    if (log.isLoggable(Level.FINE))     log.fine(_source.getNativePath() + " digest is modified.");
    return true;
  }
  long sourceLastModified=_source.getLastModified();
  long sourceLength=_source.length();
  if (!_requireSource && sourceLastModified == 0) {
    return false;
  }
 else   if (sourceLength != _length) {
    if (log.isLoggable(Level.FINE)) {
      log.fine(_source.getNativePath() + " length is modified (" + _length+ " -> "+ sourceLength+ ")");
    }
    return true;
  }
 else   if (sourceLastModified != _lastModified) {
    if (log.isLoggable(Level.FINE))     log.fine(_source.getNativePath() + " time is modified.");
    return true;
  }
 else   return false;
}

@ Override public boolean isModified ( ) { if ( _isDigestModified ) { if ( log . isLoggable ( Level . FINE ) ) log . fine ( _source . getNativePath ( ) + " digest is modified." ) ; return true ; } long sourceLastModified = _source . getLastModified ( ) ; long sourceLength = _source . length ( ) ; if ( ! _requireSource && sourceLastModified == 0 ) { return false ; } else if ( sourceLength != _length ) { if ( log . isLoggable ( Level . FINE ) ) { log . fine ( _source . getNativePath ( ) + " length is modified (" + _length + " -> " + sourceLength + ")" ) ; } return true ; } else if ( sourceLastModified != _lastModified ) { if ( log . isLoggable ( Level . FINE ) ) log . fine ( _source . getNativePath ( ) + " time is modified." ) ; return true ; } else return false ; }
if the source modified date changes at all , treat it as a modification . this protects against the case where multiple computers have misaligned dates and a ' < ' comparison may fail .
