Buggy code:
public class Tar extends MatchingTask { public static final String WARN = "warn" ; public static final String FAIL = "fail" ; public static final String TRUNCATE = "truncate" ; public static final String GNU = "gnu" ; public static final String OMIT = "omit" ; File tarFile ; File baseDir ; private Tar . TarLongFileMode longFileMode = new Tar . TarLongFileMode ( ) ; Vector filesets = new Vector ( ) ; Vector fileSetFiles = new Vector ( ) ; private boolean longWarningGiven = false ; private Tar . TarCompressionMethod compression = new Tar . TarCompressionMethod ( ) ; public Tar . TarFileSet createTarFileSet ( ) { } public void setTarfile ( File tarFile ) { } public void setDestFile ( File destFile ) { } public void setBasedir ( File baseDir ) { } public void setLongfile ( String mode ) { } public void setLongfile ( Tar . TarLongFileMode mode ) { } public void setCompression ( Tar . TarCompressionMethod mode ) { } public void execute ( ) throws BuildException { } protected void tarFile ( File file , TarOutputStream tOut , String vPath , Tar . TarFileSet tarFileSet ) throws IOException { } protected boolean archiveIsUpToDate ( String [ ] files ) { } protected boolean archiveIsUpToDate ( String [ ] files , File dir ) { SourceFileScanner sfs = new SourceFileScanner ( this ) ; MergingMapper mm = new MergingMapper ( ) ; mm . setTo ( tarFile . getAbsolutePath ( ) ) ; <START_BUG> return ( sfs . restrict ( files , baseDir , null , mm ) . length ) == 0 ; <END_BUG> } public static class TarFileSet extends FileSet { private String [ ] files = null ; private int fileMode = ( UnixStat . FILE_FLAG ) | ( UnixStat . DEFAULT_FILE_PERM ) ; private int dirMode = ( UnixStat . DIR_FLAG ) | ( UnixStat . DEFAULT_DIR_PERM ) ; private String userName = "" ; private String groupName = "" ; private String prefix = "" ; private String fullpath = "" ; private boolean preserveLeadingSlashes = false ; public TarFileSet ( FileSet fileset ) { } public TarFileSet ( ) { } public String [ ] getFiles ( Project p ) { } public void setMode ( String octalString ) { } public int getMode ( ) { } public void setDirMode ( String octalString ) { } public int getDirMode ( ) { } public void setUserName ( String userName ) { } public String getUserName ( ) { } public void setGroup ( String groupName ) { } public String getGroup ( ) { } public void setPrefix ( String prefix ) { } public String getPrefix ( ) { } public void setFullpath ( String fullpath ) { } public String getFullpath ( ) { } public void setPreserveLeadingSlashes ( boolean b ) { } public boolean getPreserveLeadingSlashes ( ) { } } public static class TarLongFileMode extends EnumeratedAttribute { public static final String WARN = "warn" ; public static final String FAIL = "fail" ; public static final String TRUNCATE = "truncate" ; public static final String GNU = "gnu" ; public static final String OMIT = "omit" ; private final String [ ] validModes = new String [ ] { Tar . TarLongFileMode . WARN , Tar . TarLongFileMode . FAIL , Tar . TarLongFileMode . TRUNCATE , Tar . TarLongFileMode . GNU , Tar . TarLongFileMode . OMIT } ; public TarLongFileMode ( ) { } public String [ ] getValues ( ) { } public boolean isTruncateMode ( ) { } public boolean isWarnMode ( ) { } public boolean isGnuMode ( ) { } public boolean isFailMode ( ) { } public boolean isOmitMode ( ) { } } public static final class TarCompressionMethod extends EnumeratedAttribute { private static final String NONE = "none" ; private static final String GZIP = "gzip" ; private static final String BZIP2 = "bzip2" ; public TarCompressionMethod ( ) { } public String [ ] getValues ( ) { } private OutputStream compress ( final OutputStream ostream ) throws IOException { } } }

Fix:
return ( sfs . restrict ( files , dir , null , mm ) . length ) == 0 ;