boolean add(String srcFilename,int srcLine,int dstLine,boolean isPreferLast){
  if (_srcFilename != null && (!_srcFilename.equals(srcFilename) || srcFilename == null))   return false;
  if (dstLine <= _dstLine) {
    if (!isPreferLast)     return true;
 else     if (_dstIncrement == 1 && _repeat == 1) {
      _srcLine=srcLine;
      return true;
    }
 else     if (_repeat > 1) {
      _repeat--;
      return false;
    }
 else     if (_dstIncrement > 1) {
      _dstIncrement--;
      return false;
    }
 else     return true;
  }
  if (srcLine == _srcLine) {
    _dstIncrement=dstLine - _dstLine + 1;
    return true;
  }
 else   if (dstLine - _dstLine == (srcLine - _srcLine) * _dstIncrement) {
    _repeat=srcLine - _srcLine + 1;
    return true;
  }
 else   if (srcLine == _srcLine + 1 && _repeat == 1) {
    _dstIncrement=dstLine - _dstLine;
    return false;
  }
  return false;
}

boolean add ( String srcFilename , int srcLine , int dstLine , boolean isPreferLast ) { if ( _srcFilename != null && ( ! _srcFilename . equals ( srcFilename ) || srcFilename == null ) ) return false ; if ( dstLine <= _dstLine ) { if ( ! isPreferLast ) return true ; else if ( _dstIncrement == 1 && _repeat == 1 ) { _srcLine = srcLine ; return true ; } else if ( _repeat > 1 ) { _repeat -- ; return false ; } else if ( _dstIncrement > 1 ) { _dstIncrement -- ; return false ; } else return true ; } if ( srcLine == _srcLine ) { _dstIncrement = dstLine - _dstLine + 1 ; return true ; } else if ( dstLine - _dstLine == ( srcLine - _srcLine ) * _dstIncrement ) { _repeat = srcLine - _srcLine + 1 ; return true ; } else if ( srcLine == _srcLine + 1 && _repeat == 1 ) { _dstIncrement = dstLine - _dstLine ; return false ; } return false ; }
tries to add a new location .
