code: public static VersionInfo getInstance(int major, int minor, int milli,
                                            int micro)
      {
          // checks if it is in the hashmap
          // else
          if (major < 0 || major > 255 || minor < 0 || minor > 255 ||
              milli < 0 || milli > 255 || micro < 0 || micro > 255) {
              throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
          }
          int     version = getInt(major, minor, milli, micro);
          Integer key     = Integer.valueOf(version);
          VersionInfo  result  = MAP_.get(key);
          if (result == null) {
              result = new VersionInfo(version);
              VersionInfo tmpvi = MAP_.putIfAbsent(key, result);
              if (tmpvi != null) {
                  result = tmpvi;
              }
          }
          return result;
      }
docs: Returns an instance of VersionInfo with the argument version.
  @param major major version, non-negative number &lt;= 255.
  @param minor minor version, non-negative number &lt;= 255.
  @param milli milli version, non-negative number &lt;= 255.
  @param micro micro version, non-negative number &lt;= 255.
  @exception IllegalArgumentException when either arguments are negative or &gt; 255