+
+ /**
+ * Return a {@link CommitInfo} reporting specified {@link UUID}.
+ *
+ * @param uuid UUID to report
+ * @return a {@link CommitInfo} reporting specified {@link UUID}
+ * @throws NullPointerException if {@code uuid} is {@code null}
+ */
+ static CommitInfo of(final UUID uuid) {
+ return new CI(requireNonNull(uuid), null);
+ }
+
+ /**
+ * Return a {@link CommitInfo} reporting specified {@link Instant}.
+ *
+ * @param instant Instant to report
+ * @return a {@link CommitInfo} reporting specified {@link Instant}
+ * @throws NullPointerException if {@code instant} is {@code null}
+ */
+ static CommitInfo of(final Instant instant) {
+ return new CI(null, requireNonNull(instant));
+ }
+
+ /**
+ * Return a {@link CommitInfo} reporting specified {@link UUID} and {@link Instant}.
+ *
+ * @param uuid UUID to report
+ * @param instant Instant to report
+ * @return a {@link CommitInfo} reporting specified {@link UUID} and {@link Instant}
+ * @throws NullPointerException if any argument is {@code null}
+ */
+ static CommitInfo of(final UUID uuid, final Instant instant) {
+ return new CI(requireNonNull(uuid), requireNonNull(instant));
+ }
+
+ /**
+ * Return a {@link CommitInfo} reporting optional {@link UUID} and {@link Instant}.
+ *
+ * @param uuid UUID to report
+ * @param instant Instant to report
+ * @return a {@link CommitInfo} reporting optional {@link UUID} and {@link Instant}
+ */
+ static CommitInfo ofNullable(final @Nullable UUID uuid, final @Nullable Instant instant) {
+ return CI.of(uuid, instant);
+ }