Buggy code:
public class Frame implements DemuxOutputReceiver { private File baseDir ; private Project project = null ; private Map referencedFrames = new HashMap ( ) ; private Map dataValues = new HashMap ( ) ; private InitConfig initConfig ; private Map standardLibs ; private BuildEventSupport eventSupport = new BuildEventSupport ( ) ; private Map services = new HashMap ( ) ; private AntConfig config ; private DataService dataService ; private FileService fileService ; private ComponentManager componentManager ; private CoreExecService execService ; protected Frame ( Map standardLibs , InitConfig initConfig , AntConfig config ) throws ExecutionException { } public String replacePropertyRefs ( String value ) throws ExecutionException { } protected void setProject ( Project project ) throws ExecutionException { } protected void setDataValue ( String name , Object value , boolean mutable ) throws ExecutionException { } protected void setInitialProperties ( Map properties ) throws ExecutionException { } protected void setMagicProperties ( ) throws ExecutionException { } protected ImportInfo getReferencedDefinition ( String definitionName ) throws ExecutionException { } protected Project getProject ( ) { } protected Map getAllProperties ( ) { } protected InitConfig getInitConfig ( ) { } protected AntConfig getConfig ( ) { } protected Object getCoreService ( Class serviceInterfaceClass ) throws ExecutionException { } protected BuildEventSupport getEventSupport ( ) { } protected File getBaseDir ( ) { } protected Frame getReferencedFrame ( String referenceName ) { } protected Iterator getReferencedFrames ( ) { } protected String getNameInFrame ( String fullname ) { } protected Object getDataValue ( String name ) throws ExecutionException { } protected boolean isDataValueSet ( String name ) throws ExecutionException { } protected Frame getContainingFrame ( String elementName ) { } protected void addProperties ( Map properties ) throws ExecutionException { } protected Frame createFrame ( Project project ) throws ExecutionException { } protected void log ( String message , int level ) { } protected void addBuildListener ( BuildListener listener ) { } protected void removeBuildListener ( BuildListener listener ) { } protected void runBuild ( List targets ) throws ExecutionException { } protected void executeTarget ( String targetName ) throws ExecutionException { } protected void executeTasks ( Iterator taskIterator ) throws ExecutionException { } protected void executeTargetTasks ( String targetName ) throws ExecutionException { } protected void initialize ( ) throws ExecutionException { } public void threadOutput ( String line , boolean isErr ) { } private void determineBaseDirs ( ) throws ExecutionException { if ( isDataValueSet ( BASEDIR ) ) { baseDir = new File ( getDataValue ( BASEDIR ) . toString ( ) ) ; } else { URL projectURL = project . getSourceURL ( ) ; if ( projectURL . getProtocol ( ) . equals ( "file" ) ) { File projectFile = new File ( projectURL . getFile ( ) ) ; File projectFileParent = projectFile . getParentFile ( ) ; String base = project . getBase ( ) ; if ( base == null ) { baseDir = projectFileParent ; } else { <START_BUG> FileUtils fileUtils = new FileUtils ( ) ; <END_BUG> baseDir = fileUtils . resolveFile ( projectFileParent , base ) ; } } else { baseDir = new File ( "." ) ; } } setDataValue ( BASEDIR , baseDir . getAbsolutePath ( ) , true ) ; for ( Iterator i = getReferencedFrames ( ) ; i . hasNext ( ) ; ) { Frame refFrame = ( ( Frame ) ( i . next ( ) ) ) ; refFrame . determineBaseDirs ( ) ; } } private void configureServices ( ) { } }

Fix:
FileUtils fileUtils = FileUtils . newFileUtils ( ) ;