Buggy code:
public class Project { public static final int MSG_ERR = 0 ; public static final int MSG_WARN = 1 ; public static final int MSG_INFO = 2 ; public static final int MSG_VERBOSE = 3 ; public static final int MSG_DEBUG = 4 ; private static final String VISITING = "VISITING" ; private static final String VISITED = "VISITED" ; private static String javaVersion ; public static final String JAVA_1_0 = "1.0" ; public static final String JAVA_1_1 = "1.1" ; public static final String JAVA_1_2 = "1.2" ; public static final String JAVA_1_3 = "1.3" ; public static final String TOKEN_START = "@" ; public static final String TOKEN_END = "@" ; private String name ; private Hashtable properties = new Hashtable ( ) ; private Hashtable userProperties = new Hashtable ( ) ; private Hashtable references = new Hashtable ( ) ; private String defaultTarget ; private Hashtable dataClassDefinitions = new Hashtable ( ) ; private Hashtable taskClassDefinitions = new Hashtable ( ) ; private Hashtable targets = new Hashtable ( ) ; private Hashtable filters = new Hashtable ( ) ; private File baseDir ; private Vector listeners = new Vector ( ) ; public Project ( ) { } public void init ( ) throws BuildException { } public void addBuildListener ( BuildListener listener ) { } public void removeBuildListener ( BuildListener listener ) { } public Vector getBuildListeners ( ) { } public void log ( String msg ) { } public void log ( String msg , int msgLevel ) { } public void log ( Task task , String msg , int msgLevel ) { } public void log ( Target target , String msg , int msgLevel ) { } public void setProperty ( String name , String value ) { } public void setUserProperty ( String name , String value ) { } public String getProperty ( String name ) { } public String getUserProperty ( String name ) { } public Hashtable getProperties ( ) { } public Hashtable getUserProperties ( ) { } public void setDefaultTarget ( String defaultTarget ) { } public String getDefaultTarget ( ) { } public void setDefault ( String defaultTarget ) { } public void setName ( String name ) { <START_BUG> setUserProperty ( "project.name" , name ) ; <END_BUG> this . name = name ; } public String getName ( ) { } public void addFilter ( String token , String value ) { } public Hashtable getFilters ( ) { } public void setBasedir ( String baseD ) throws BuildException { } public void setBaseDir ( File baseDir ) { } public File getBaseDir ( ) { } public static String getJavaVersion ( ) { } public void setJavaVersionProperty ( ) { } public void addTaskDefinition ( String taskName , Class taskClass ) { } public Hashtable getTaskDefinitions ( ) { } public void addDataTypeDefinition ( String typeName , Class typeClass ) { } public Hashtable getDataTypeDefinitions ( ) { } public void addTarget ( Target target ) { } public void addTarget ( String targetName , Target target ) throws BuildException { } public void addOrReplaceTarget ( Target target ) { } public void addOrReplaceTarget ( String targetName , Target target ) { } public Hashtable getTargets ( ) { } public Task createTask ( String taskType ) throws BuildException { } public Object createDataType ( String typeName ) throws BuildException { } public void executeTargets ( Vector targetNames ) throws BuildException { } public void executeTarget ( String targetName ) throws BuildException { } public File resolveFile ( String fileName ) { } public static String translatePath ( String to_process ) { } public void copyFile ( String sourceFile , String destFile ) throws IOException { } public void copyFile ( String sourceFile , String destFile , boolean filtering ) throws IOException { } public void copyFile ( String sourceFile , String destFile , boolean filtering , boolean overwrite ) throws IOException { } public void copyFile ( File sourceFile , File destFile ) throws IOException { } public void copyFile ( File sourceFile , File destFile , boolean filtering ) throws IOException { } public void copyFile ( File sourceFile , File destFile , boolean filtering , boolean overwrite ) throws IOException { } private String replace ( String s , Hashtable tokens ) { } public static boolean toBoolean ( String s ) { } public void runTarget ( Target target ) throws BuildException { } private final Vector topoSort ( String root , Hashtable targets ) throws BuildException { } private final void tsort ( String root , Hashtable targets , Hashtable state , Stack visiting , Vector ret ) throws BuildException { } private static BuildException makeCircularException ( String end , Stack stk ) { } public void addReference ( String name , Object value ) { } public Hashtable getReferences ( ) { } protected void fireBuildStarted ( ) { } protected void fireBuildFinished ( Throwable exception ) { } protected void fireTargetStarted ( Target target ) { } protected void fireTargetFinished ( Target target , Throwable exception ) { } protected void fireTaskStarted ( Task task ) { } protected void fireTaskFinished ( Task task , Throwable exception ) { } private void fireMessageLoggedEvent ( BuildEvent event , String message , int priority ) { } protected void fireMessageLogged ( Project project , String message , int priority ) { } protected void fireMessageLogged ( Target target , String message , int priority ) { } protected void fireMessageLogged ( Task task , String message , int priority ) { } }

Fix:
setUserProperty ( "ant.project.name" , name ) ;