code: public static ApplicationLoadResult loadApplicationFlexibly( File projectDirectory ) {
  
  		File descDirectory = new File( projectDirectory, Constants.PROJECT_DIR_DESC );
  		ApplicationLoadResult result;
  		if( descDirectory.exists()) {
  			result = loadApplication( projectDirectory );
  
  		} else {
  			ApplicationTemplateDescriptor appDescriptor = new ApplicationTemplateDescriptor();
  			appDescriptor.setName( Constants.GENERATED );
  			appDescriptor.setDslId( Constants.GENERATED );
  			appDescriptor.setVersion( Constants.GENERATED );
  
  			ApplicationLoadResult alr = new ApplicationLoadResult();
  			alr.applicationTemplate = new ApplicationTemplate( Constants.GENERATED ).dslId( Constants.GENERATED ).version( Constants.GENERATED );
  
  			File graphDirectory = new File( projectDirectory, Constants.PROJECT_DIR_GRAPH );
  			File[] graphFiles = graphDirectory.listFiles( new GraphFileFilter());
  			if( graphFiles != null && graphFiles.length > 0 )
  				appDescriptor.setGraphEntryPoint( graphFiles[ 0 ].getName());
  
  			result = loadApplication( projectDirectory, appDescriptor, alr );
  		}
  
  		return result;
  	}
docs: Loads an application from a directory.
  <p>
  This method allows to load an application which does not have a descriptor.
  If it has one, it will be read. Otherwise, a default one will be generated.
  This is convenient for reusable recipes.
  </p>
  
  @param projectDirectory the project directory
  @return a load result (never null)