code: private boolean laterVersion(String newVersion, String oldVersion) {
      // Compare business versions, retur
      newVersion = newVersion.trim();
      oldVersion = oldVersion.trim();
      if (StringUtils.isNumeric(newVersion) && StringUtils.isNumeric(oldVersion))
        return Double.parseDouble(newVersion) > Double.parseDouble(oldVersion);
      else if (hasDelimiter(newVersion, oldVersion, "."))
        return laterDelimitedVersion(newVersion, oldVersion, "\\.");
      else if (hasDelimiter(newVersion, oldVersion, "-"))
        return laterDelimitedVersion(newVersion, oldVersion, "\\-");
      else if (hasDelimiter(newVersion, oldVersion, "_"))
        return laterDelimitedVersion(newVersion, oldVersion, "\\_");
      else if (hasDelimiter(newVersion, oldVersion, ":"))
        return laterDelimitedVersion(newVersion, oldVersion, "\\:");
      else if (hasDelimiter(newVersion, oldVersion, " "))
        return laterDelimitedVersion(newVersion, oldVersion, "\\ ");
      else {
        return newVersion.compareTo(oldVersion) > 0;
      }
    }
docs: /*
  Compare business versions, returning "true" if the candidate newer version is in fact newer than the oldVersion
  Comparison will work for strictly numeric versions as well as multi-level versions separated by ., -, _, : or space
  Failing that, it will do unicode-based character ordering.
  E.g. 1.5.3 < 1.14.3
  2017-3-10 < 2017-12-7
  A3 < T2