diff --git a/oas-core/src/main/java/com/apigee/security/oas/extendedvalidator/InfoTraversal.java b/oas-core/src/main/java/com/apigee/security/oas/extendedvalidator/InfoTraversal.java
index 046b274..18d3974 100644
--- a/oas-core/src/main/java/com/apigee/security/oas/extendedvalidator/InfoTraversal.java
+++ b/oas-core/src/main/java/com/apigee/security/oas/extendedvalidator/InfoTraversal.java
@@ -1,6 +1,7 @@
 package com.apigee.security.oas.extendedvalidator;
 
 import com.google.inject.assistedinject.Assisted;
+import java.util.Optional;
 import javax.inject.Inject;
 import org.openapi4j.parser.model.v3.Info;
 
@@ -24,10 +25,23 @@
   public void traverse() {
     // TODO(b/161441872): Process extensions.
 
-    // TODO(b/161811574): Add checks for field unpacking.
-    traversalCoordinator.handleTraversalCommand(
-        traversalCommandFactory.create(openApiSchemaObj.getContact()));
-    traversalCoordinator.handleTraversalCommand(
-        traversalCommandFactory.create(openApiSchemaObj.getLicense()));
+    traverseContact();
+    traverseLicense();
+  }
+
+  private void traverseContact() {
+    Optional.ofNullable(openApiSchemaObj.getContact())
+        .ifPresent(
+            contact ->
+                traversalCoordinator.handleTraversalCommand(
+                    traversalCommandFactory.create(contact)));
+  }
+
+  private void traverseLicense() {
+    Optional.ofNullable(openApiSchemaObj.getLicense())
+        .ifPresent(
+            license ->
+                traversalCoordinator.handleTraversalCommand(
+                    traversalCommandFactory.create(license)));
   }
 }
diff --git a/oas-core/src/main/java/com/apigee/security/oas/extendedvalidator/OpenApiSpecificationTraversal.java b/oas-core/src/main/java/com/apigee/security/oas/extendedvalidator/OpenApiSpecificationTraversal.java
index 109132d..0c64fd7 100644
--- a/oas-core/src/main/java/com/apigee/security/oas/extendedvalidator/OpenApiSpecificationTraversal.java
+++ b/oas-core/src/main/java/com/apigee/security/oas/extendedvalidator/OpenApiSpecificationTraversal.java
@@ -32,10 +32,10 @@
   }
 
   private void traverseInfo() {
-    // TODO(b/161811574): Safely unpack Info.
-
-    traversalCoordinator.handleTraversalCommand(
-        traversalCommandFactory.create(openApiSchemaObj.getInfo()));
+    Optional.ofNullable(openApiSchemaObj.getInfo())
+        .ifPresent(
+            info ->
+                traversalCoordinator.handleTraversalCommand(traversalCommandFactory.create(info)));
   }
 
   private void traverseServers() {
diff --git a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/InfoTraversalTest.java b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/InfoTraversalTest.java
index bafcd85..ffc56cd 100644
--- a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/InfoTraversalTest.java
+++ b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/InfoTraversalTest.java
@@ -52,12 +52,23 @@
   }
 
   @Test
+  public void traverse_nullContactChild_doesNotThrowException() {
+    when(info.getContact()).thenReturn(null);
+
+    infoTraversal.traverse();
+  }
+
+  @Test
   public void traverse_sendsTraversalCoordinatorLicenseTraversalCommand() {
     infoTraversal.traverse();
 
     verify(traversalCoordinator).handleTraversalCommand(any(LicenseTraversal.class));
   }
 
-  // TODO(b/161811574): Add tests for additional nullable children.
+  @Test
+  public void traverse_nullLicenseChild_doesNotThrowException() {
+    when(info.getLicense()).thenReturn(null);
 
+    infoTraversal.traverse();
+  }
 }
diff --git a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/OpenApiSpecificationTraversalTest.java b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/OpenApiSpecificationTraversalTest.java
index 0887e9d..9791f58 100644
--- a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/OpenApiSpecificationTraversalTest.java
+++ b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/OpenApiSpecificationTraversalTest.java
@@ -64,7 +64,12 @@
     verify(traversalCoordinator).handleTraversalCommand(any(InfoTraversal.class));
   }
 
-  // TODO(b/161811574): Add tests to check other nullable children.
+  @Test
+  public void traverse_nullInfoChild_doesNotThrowException() {
+    when(openApiSpec.getInfo()).thenReturn(null);
+
+    openApiSpecificationTraversal.traverse();
+  }
 
   @Test
   public void traverse_sendsServerChildrenTraversalsToTraversalCommander() {
