code: public static final Version create(int major, int minor, int patch,
              String preRelease,
              String buildMetaData) {
          require(preRelease != null, "preRelease is null");
          require(buildMetaData != null, "buildMetaData is null");
          return createInternal(major, minor, patch, preRelease, buildMetaData);
      }
docs: Creates a new Version from the provided components. Neither value of
  {@code major, minor} or {@code patch} must be lower than 0 and at least one must be
  greater than zero. {@code preRelease} or {@code buildMetaData} may be the empty
  String. In this case, the created {@code Version} will have no pre release resp.
  build meta data field. If those parameters are not empty, they must conform to the
  semantic version specification.
  
  @param major The major version.
  @param minor The minor version.
  @param patch The patch version.
  @param preRelease The pre release version or the empty string.
  @param buildMetaData The build meta data field or the empty string.
  @return The version instance.
  @throws VersionFormatException If {@code preRelease} or {@code buildMetaData} does
  not conform to the semantic version specification.