trivial: add Nullable annotaitons to optional extension fields
diff --git a/src/main/java/org/apache/sling/sitemap/builder/extensions/GoogleImageExtension.java b/src/main/java/org/apache/sling/sitemap/builder/extensions/GoogleImageExtension.java
index aa30078..68bbe1e 100644
--- a/src/main/java/org/apache/sling/sitemap/builder/extensions/GoogleImageExtension.java
+++ b/src/main/java/org/apache/sling/sitemap/builder/extensions/GoogleImageExtension.java
@@ -20,6 +20,7 @@
 
 import org.apache.sling.sitemap.builder.Extension;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.osgi.annotation.versioning.ProviderType;
 
 /**
@@ -34,15 +35,15 @@
     GoogleImageExtension setUrl(@NotNull String location);
 
     @NotNull
-    GoogleImageExtension setCaption(String caption);
+    GoogleImageExtension setCaption(@Nullable String caption);
 
     @NotNull
-    GoogleImageExtension setGeoLocation(String geoLocation);
+    GoogleImageExtension setGeoLocation(@Nullable String geoLocation);
 
     @NotNull
-    GoogleImageExtension setTitle(String title);
+    GoogleImageExtension setTitle(@Nullable String title);
 
     @NotNull
-    GoogleImageExtension setLicense(String licenseLocation);
+    GoogleImageExtension setLicense(@Nullable String licenseLocation);
 
 }
diff --git a/src/main/java/org/apache/sling/sitemap/builder/extensions/GoogleNewsExtension.java b/src/main/java/org/apache/sling/sitemap/builder/extensions/GoogleNewsExtension.java
index aa97aac..04f0db0 100644
--- a/src/main/java/org/apache/sling/sitemap/builder/extensions/GoogleNewsExtension.java
+++ b/src/main/java/org/apache/sling/sitemap/builder/extensions/GoogleNewsExtension.java
@@ -20,6 +20,7 @@
 
 import org.apache.sling.sitemap.builder.Extension;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.osgi.annotation.versioning.ProviderType;
 
 import java.time.LocalDate;
@@ -82,14 +83,14 @@
     GoogleNewsExtension setTitle(@NotNull String title);
 
     @NotNull
-    GoogleNewsExtension setAccessRestriction(AccessRestriction accessRestriction);
+    GoogleNewsExtension setAccessRestriction(@Nullable AccessRestriction accessRestriction);
 
     @NotNull
-    GoogleNewsExtension setGenres(Collection<Genre> genres);
+    GoogleNewsExtension setGenres(@Nullable Collection<Genre> genres);
 
     @NotNull
-    GoogleNewsExtension setKeywords(Collection<String> keywords);
+    GoogleNewsExtension setKeywords(@Nullable Collection<String> keywords);
 
     @NotNull
-    GoogleNewsExtension setStockTickers(Collection<String> stockTickers);
+    GoogleNewsExtension setStockTickers(@Nullable Collection<String> stockTickers);
 }
diff --git a/src/main/java/org/apache/sling/sitemap/builder/extensions/GoogleVideoExtension.java b/src/main/java/org/apache/sling/sitemap/builder/extensions/GoogleVideoExtension.java
index ffb6b85..9644700 100644
--- a/src/main/java/org/apache/sling/sitemap/builder/extensions/GoogleVideoExtension.java
+++ b/src/main/java/org/apache/sling/sitemap/builder/extensions/GoogleVideoExtension.java
@@ -118,7 +118,7 @@
      * @return
      */
     @NotNull
-    GoogleVideoExtension setUrl(String contentLocation);
+    GoogleVideoExtension setUrl(@Nullable String contentLocation);
 
     /**
      * {@code player_loc}
@@ -127,37 +127,37 @@
      * @return
      */
     @NotNull
-    GoogleVideoExtension setPlayerUrl(String playerLocation);
+    GoogleVideoExtension setPlayerUrl(@Nullable String playerLocation);
 
     @NotNull
-    GoogleVideoExtension setDuration(Integer duration);
+    GoogleVideoExtension setDuration(@Nullable Integer duration);
 
     @NotNull
-    GoogleVideoExtension setExpirationDate(LocalDate date);
+    GoogleVideoExtension setExpirationDate(@Nullable LocalDate date);
 
     @NotNull
-    GoogleVideoExtension setExpirationDate(OffsetDateTime date);
+    GoogleVideoExtension setExpirationDate(@Nullable OffsetDateTime date);
 
     @NotNull
-    GoogleVideoExtension setRating(Float rating);
+    GoogleVideoExtension setRating(@Nullable Float rating);
 
     @NotNull
-    GoogleVideoExtension setViewCount(Integer viewCount);
+    GoogleVideoExtension setViewCount(@Nullable Integer viewCount);
 
     @NotNull
-    GoogleVideoExtension setPublicationDate(LocalDate date);
+    GoogleVideoExtension setPublicationDate(@Nullable LocalDate date);
 
     @NotNull
-    GoogleVideoExtension setPublicationDate(OffsetDateTime date);
+    GoogleVideoExtension setPublicationDate(@Nullable OffsetDateTime date);
 
     @NotNull
-    GoogleVideoExtension setTags(Collection<String> tags);
+    GoogleVideoExtension setTags(@Nullable Collection<String> tags);
 
     @NotNull
-    GoogleVideoExtension setCategory(String category);
+    GoogleVideoExtension setCategory(@Nullable String category);
 
     @NotNull
-    GoogleVideoExtension setFamilyFriendly(Boolean familyFriendly);
+    GoogleVideoExtension setFamilyFriendly(@Nullable Boolean familyFriendly);
 
     /**
      * {@code restriction}
@@ -183,16 +183,16 @@
     GoogleVideoExtension addPrice(float price, @NotNull String currency, @Nullable PriceType type, @Nullable Resolution resolution);
 
     @NotNull
-    GoogleVideoExtension setRequiresSubscription(Boolean requiresSubscription);
+    GoogleVideoExtension setRequiresSubscription(@Nullable Boolean requiresSubscription);
 
     @NotNull
-    GoogleVideoExtension setUploader(String uploader);
+    GoogleVideoExtension setUploader(@Nullable String uploader);
 
     @NotNull
-    GoogleVideoExtension setUploaderUrl(String uploaderInfo);
+    GoogleVideoExtension setUploaderUrl(@Nullable String uploaderInfo);
 
     @NotNull
-    GoogleVideoExtension setLive(Boolean live);
+    GoogleVideoExtension setLive(@Nullable Boolean live);
 
 
 }
diff --git a/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/GoogleImageExtensionProvider.java b/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/GoogleImageExtensionProvider.java
index 9ac4cd2..cecbb17 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/GoogleImageExtensionProvider.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/GoogleImageExtensionProvider.java
@@ -22,6 +22,7 @@
 import org.apache.sling.sitemap.spi.builder.AbstractExtension;
 import org.apache.sling.sitemap.spi.builder.SitemapExtensionProvider;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.osgi.service.component.annotations.Component;
 
 import javax.xml.stream.XMLStreamException;
@@ -67,28 +68,28 @@
 
         @Override
         @NotNull
-        public GoogleImageExtension setCaption(String caption) {
+        public GoogleImageExtension setCaption(@Nullable String caption) {
             this.caption = caption;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleImageExtension setGeoLocation(String geoLocation) {
+        public GoogleImageExtension setGeoLocation(@Nullable String geoLocation) {
             this.geoLocation = geoLocation;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleImageExtension setTitle(String title) {
+        public GoogleImageExtension setTitle(@Nullable String title) {
             this.title = title;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleImageExtension setLicense(String licenseLocation) {
+        public GoogleImageExtension setLicense(@Nullable String licenseLocation) {
             this.license = licenseLocation;
             return this;
         }
diff --git a/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/GoogleNewsExtensionProvider.java b/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/GoogleNewsExtensionProvider.java
index 09c37fb..c2d8af3 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/GoogleNewsExtensionProvider.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/GoogleNewsExtensionProvider.java
@@ -22,6 +22,7 @@
 import org.apache.sling.sitemap.spi.builder.AbstractExtension;
 import org.apache.sling.sitemap.spi.builder.SitemapExtensionProvider;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.osgi.service.component.annotations.Component;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -108,7 +109,7 @@
 
         @Override
         @NotNull
-        public GoogleNewsExtension setGenres(Collection<Genre> genres) {
+        public GoogleNewsExtension setGenres(@Nullable Collection<Genre> genres) {
             this.genres = genres != null && !genres.isEmpty()
                     ? genres.stream().map(Genre::getValue).collect(Collectors.joining(","))
                     : null;
@@ -117,7 +118,7 @@
 
         @Override
         @NotNull
-        public GoogleNewsExtension setKeywords(Collection<String> keywords) {
+        public GoogleNewsExtension setKeywords(@Nullable Collection<String> keywords) {
             this.keywords = keywords != null && !keywords.isEmpty()
                     ? String.join(",", keywords)
                     : null;
@@ -126,7 +127,7 @@
 
         @Override
         @NotNull
-        public GoogleNewsExtension setStockTickers(Collection<String> stockTickers) {
+        public GoogleNewsExtension setStockTickers(@Nullable Collection<String> stockTickers) {
             if (stockTickers != null) {
                 if (stockTickers.size() > 5) {
                     LOG.warn("Adjusting stock tickers as they are out of bounds (0,5): {}", stockTickers.size());
diff --git a/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/GoogleVideoExtensionProvider.java b/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/GoogleVideoExtensionProvider.java
index 4d96dee..df097d0 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/GoogleVideoExtensionProvider.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/GoogleVideoExtensionProvider.java
@@ -158,21 +158,21 @@
 
         @Override
         @NotNull
-        public GoogleVideoExtension setUrl(String contentLocation) {
+        public GoogleVideoExtension setUrl(@Nullable String contentLocation) {
             this.contentLocation = contentLocation;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleVideoExtension setPlayerUrl(String playerLocation) {
+        public GoogleVideoExtension setPlayerUrl(@Nullable String playerLocation) {
             this.playerLocation = playerLocation;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleVideoExtension setDuration(Integer duration) {
+        public GoogleVideoExtension setDuration(@Nullable Integer duration) {
             if (duration != null) {
                 if (duration < 0 || duration > 28800) {
                     LOG.warn("Adjusting duration as it is out of bounds (0, 28800): {}", duration);
@@ -187,21 +187,21 @@
 
         @Override
         @NotNull
-        public GoogleVideoExtension setExpirationDate(LocalDate date) {
+        public GoogleVideoExtension setExpirationDate(@Nullable LocalDate date) {
             this.expirationDate = date;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleVideoExtension setExpirationDate(OffsetDateTime date) {
+        public GoogleVideoExtension setExpirationDate(@Nullable OffsetDateTime date) {
             this.expirationDate = date;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleVideoExtension setRating(Float rating) {
+        public GoogleVideoExtension setRating(@Nullable Float rating) {
             if (rating != null) {
                 if (rating < 0 || rating > 5) {
                     LOG.warn("Adjusting rating as it is out of bounds (0,5): {}", rating);
@@ -216,7 +216,7 @@
 
         @Override
         @NotNull
-        public GoogleVideoExtension setViewCount(Integer viewCount) {
+        public GoogleVideoExtension setViewCount(@Nullable Integer viewCount) {
             if (viewCount != null) {
                 if (viewCount < 0) {
                     LOG.warn("Adjusting negative view count: {}", viewCount);
@@ -231,35 +231,35 @@
 
         @Override
         @NotNull
-        public GoogleVideoExtension setPublicationDate(LocalDate date) {
+        public GoogleVideoExtension setPublicationDate(@Nullable LocalDate date) {
             this.publicationDate = date;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleVideoExtension setPublicationDate(OffsetDateTime date) {
+        public GoogleVideoExtension setPublicationDate(@Nullable OffsetDateTime date) {
             this.publicationDate = date;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleVideoExtension setTags(Collection<String> tags) {
-            this.tags = new ArrayList<>(tags);
+        public GoogleVideoExtension setTags(@Nullable Collection<String> tags) {
+            this.tags = tags != null ? new ArrayList<>(tags) : null;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleVideoExtension setCategory(String category) {
+        public GoogleVideoExtension setCategory(@Nullable String category) {
             this.category = category;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleVideoExtension setFamilyFriendly(Boolean familyFriendly) {
+        public GoogleVideoExtension setFamilyFriendly(@Nullable Boolean familyFriendly) {
             this.familyFriendly = booleanToString(familyFriendly);
             return this;
         }
@@ -313,28 +313,28 @@
 
         @Override
         @NotNull
-        public GoogleVideoExtension setRequiresSubscription(Boolean requiresSubscription) {
+        public GoogleVideoExtension setRequiresSubscription(@Nullable Boolean requiresSubscription) {
             this.requiresSubscription = booleanToString(requiresSubscription);
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleVideoExtension setUploader(String uploader) {
+        public GoogleVideoExtension setUploader(@Nullable String uploader) {
             this.uploader = uploader;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleVideoExtension setUploaderUrl(String uploaderInfo) {
+        public GoogleVideoExtension setUploaderUrl(@Nullable String uploaderInfo) {
             this.uploaderInfo = uploaderInfo;
             return this;
         }
 
         @Override
         @NotNull
-        public GoogleVideoExtension setLive(Boolean live) {
+        public GoogleVideoExtension setLive(@Nullable Boolean live) {
             this.live = booleanToString(live);
             return this;
         }