public File selectBundle(String baseLocation, final String symbolicName, final VersionRange versionRange) {
        readCache();
        return selectResource(baseLocation, symbolicName, versionRange);
    }
public File selectBundle ( String baseLocation , final String symbolicName , final VersionRange versionRange ) { readCache ( ) ; return selectResource ( baseLocation , symbolicName , versionRange ) ; }
This method selects bundles based on the input criteria. The first parameter is the baseLocation. This
can be null, the empty string, a directory, a comma separated list of directories, or a file path relative
to the install. If it is a file path then that exact bundle is returned irrespective of other selection
parameters. If it is null or the empty string it is assumed to be a bundle in lib dir. If it is a directory,
or a comma separated directory then the subsequent matching rules will be used to choose a matching bundle
in the specified directories.

<p>Assuming a baseLocation of "dev/,lib/" a symbolic name of "a.b" and a version range of "[1,1.0.100)" then all
bundles in dev and lib will be searched looking for the highest versioned bundle with a symbolic name of a.b. Note
highest versioned excludes iFixes where the iFix base version is not located. So given identified bundles:
<ol>
<li>a.b/1.0.0</li>
<li>a.b/1.0.1.v1</li>
<li>a.b/1.0.2.v2</li>
</ol>
The middle bundle will be chosen.
</p>

@param baseLocation The base location.
@param symbolicName The desired symbolic name.
@param versionRange The range of versions that can be selected.
@return The file representing the chosen bundle.