code: public boolean meetsVersionSpec(String versionSpec) {
          if (versionSpec.startsWith("[")) {
              int comma = versionSpec.indexOf(',');
              if (comma == -1) {
                  String min = versionSpec.substring(1);
                  return parseVersionSpec(min) <= getVersion();
              }
              else {
                  String min = versionSpec.substring(1, comma);
                  String maxExcl = versionSpec.substring(comma + 1, versionSpec.lastIndexOf(')'));
                  return parseVersionSpec(min) <= getVersion() && parseVersionSpec(maxExcl) > getVersion();
              }
          }
          else {
              return parseVersionSpec(versionSpec) == getVersion() || versionSpec.equals("0");
          }
      }
docs: Either a specific version number can be specified, or a Smart Version can be specified which designates an allowable range.
  
  Smart Version Ranges
  This is similar to the OSGi version spec.  There are four supported syntaxes:
  - A specific version -- such as 1.2 -- can be specified.
  - Zero can be specified to always use the latest asset version.
  - A 'half-open' range -- such as [1.2,2) -- designates an inclusive lower limit and an exclusive upper limit,
  denoting version 1.2 and any version after this, up to, but not including, version 2.0.
  - An 'unbounded' version range -- such as [1.2 -- which denotes version 1.2 and all later versions.