From 9c51fb141c83e554dda83b7e45ce1ea45ddb3b2e Mon Sep 17 00:00:00 2001
From: Peter Powers <pmpowers@usgs.gov>
Date: Wed, 9 Dec 2020 09:10:08 -0700
Subject: [PATCH] optional.get to orElseThrow

---
 .../usgs/earthquake/nshmp/calc/CalcConfig.java |  4 ++--
 .../earthquake/nshmp/calc/HazardExport.java    |  6 +++---
 .../gov/usgs/earthquake/nshmp/calc/Site.java   |  3 ++-
 .../gov/usgs/earthquake/nshmp/calc/Sites.java  |  2 +-
 .../earthquake/nshmp/data/DelimitedData.java   |  2 +-
 .../nshmp/data/MutableXySequence.java          |  4 ++--
 .../earthquake/nshmp/geo/json/Properties.java  | 12 ++++++------
 .../usgs/earthquake/nshmp/gmm/GmmInput.java    |  2 +-
 .../earthquake/nshmp/gmm/UsgsPgvSupport.java   |  4 ++--
 .../earthquake/nshmp/internal/www/WsUtils.java |  2 +-
 .../nshmp/model/FaultRuptureSet.java           | 10 +++++-----
 .../usgs/earthquake/nshmp/model/GmmSet.java    |  2 +-
 .../usgs/earthquake/nshmp/model/MfdConfig.java |  2 +-
 .../earthquake/nshmp/model/ModelLoader.java    | 12 ++++++------
 .../earthquake/nshmp/model/SourceFeature.java  |  4 ++--
 .../earthquake/nshmp/model/ZoneRuptureSet.java |  4 ++--
 .../nshmp/data/MutableXySequenceTests.java     |  2 +-
 .../earthquake/nshmp/geo/json/GeoJsonTest.java | 18 +++++++++---------
 .../nshmp/geo/json/PropertiesTests.java        |  8 ++++----
 .../nshmp/model/SourceFeatureTests.java        |  8 ++++----
 20 files changed, 56 insertions(+), 55 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/calc/CalcConfig.java b/src/main/java/gov/usgs/earthquake/nshmp/calc/CalcConfig.java
index 8487b71d..356e8933 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/calc/CalcConfig.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/calc/CalcConfig.java
@@ -111,7 +111,7 @@ public final class CalcConfig {
   public static Builder copyOf(CalcConfig config) {
     Builder b = new Builder();
     if (config.resource.isPresent()) {
-      b.resource = config.resource.get();
+      b.resource = config.resource.orElseThrow();
     }
     b.hazard.copy(config.hazard);
     b.siteData.copy(config.siteData);
@@ -1237,7 +1237,7 @@ public final class CalcConfig {
   public String toString() {
     return new StringBuilder("Calc Config: ")
         .append(resource.isPresent()
-            ? resource.get().toAbsolutePath().normalize()
+            ? resource.orElseThrow().toAbsolutePath().normalize()
             : "(from defaults)")
         .append(hazard.asString())
         .append(deagg.asString())
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/calc/HazardExport.java b/src/main/java/gov/usgs/earthquake/nshmp/calc/HazardExport.java
index efde3513..f5d5d6c3 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/calc/HazardExport.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/calc/HazardExport.java
@@ -152,8 +152,8 @@ public final class HazardExport {
     if (exportBinary) {
       checkState(exportBinary && sites.mapBounds().isPresent(), BINARY_EXTENTS_REQUIRED_MSSG);
       Builder metaBuilder = Metadata.builder()
-          .bounds(sites.mapBounds().get())
-          .spacing(sites.mapSpacing().get())
+          .bounds(sites.mapBounds().orElseThrow())
+          .spacing(sites.mapSpacing().orElseThrow())
           .description("nshmp-haz generated curves")
           .timestamp(new Timestamp(System.currentTimeMillis()).toString())
           .vs30(sites.iterator().next().vs30);
@@ -250,7 +250,7 @@ public final class HazardExport {
     checkState(!used, "This result handler is expired");
     writeHazard(hazard);
     if (deagg.isPresent()) {
-      writeDeagg(deagg.get());
+      writeDeagg(deagg.orElseThrow());
     }
     resultCount++;
     if (resultCount % 10 == 0) {
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/calc/Site.java b/src/main/java/gov/usgs/earthquake/nshmp/calc/Site.java
index 93c7c17e..c316c8a3 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/calc/Site.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/calc/Site.java
@@ -348,7 +348,8 @@ public class Site {
       try {
         double lon = Maths.round(location.longitude, 2);
         double lat = Maths.round(location.latitude, 2);
-        URL siteUrl = new URL(basinDataProvider.get() + String.format(BASIN_QUERY, lon, lat));
+        URL siteUrl =
+            new URL(basinDataProvider.orElseThrow() + String.format(BASIN_QUERY, lon, lat));
         HttpURLConnection connection = (HttpURLConnection) siteUrl.openConnection();
         try (Reader reader = new InputStreamReader(connection.getInputStream(), Charsets.UTF_8)) {
           return GSON.fromJson(reader, BasinTerms.class);
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/calc/Sites.java b/src/main/java/gov/usgs/earthquake/nshmp/calc/Sites.java
index dc400ae3..baf3d2e6 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/calc/Sites.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/calc/Sites.java
@@ -384,7 +384,7 @@ public abstract class Sites implements Iterable<Site> {
 
     Region mapRegion = calcRegion;
     if (mapBounds.isPresent()) {
-      Bounds b = mapBounds.get();
+      Bounds b = mapBounds.orElseThrow();
       Region r = Regions.createRectangular(boundsName, b.min, b.max);
       mapRegion = Regions.intersectionOf(mapName, r, calcRegion);
     }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/data/DelimitedData.java b/src/main/java/gov/usgs/earthquake/nshmp/data/DelimitedData.java
index aa50fc4b..d2054a34 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/data/DelimitedData.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/data/DelimitedData.java
@@ -195,7 +195,7 @@ public class DelimitedData {
         .filter(DelimitedData::filterComments)
         .findFirst();
     checkState(header.isPresent(), "Header row missing");
-    List<String> keyList = splitter.splitToList(header.get());
+    List<String> keyList = splitter.splitToList(header.orElseThrow());
     Set<String> keySet = Set.copyOf(keyList);
     checkState(
         keyList.size() == keySet.size(),
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/data/MutableXySequence.java b/src/main/java/gov/usgs/earthquake/nshmp/data/MutableXySequence.java
index 67fc7036..3f68cb22 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/data/MutableXySequence.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/data/MutableXySequence.java
@@ -49,7 +49,7 @@ public interface MutableXySequence extends XySequence {
       Optional<double[]> ys) {
 
     return construct(Arrays.copyOf(xs, xs.length), (ys.isPresent())
-        ? Arrays.copyOf(ys.get(), ys.get().length)
+        ? Arrays.copyOf(ys.orElseThrow(), ys.orElseThrow().length)
         : new double[xs.length]);
   }
 
@@ -71,7 +71,7 @@ public interface MutableXySequence extends XySequence {
       Optional<Collection<? extends Number>> ys) {
 
     return construct(Doubles.toArray(xs), (ys.isPresent())
-        ? Doubles.toArray(ys.get())
+        ? Doubles.toArray(ys.orElseThrow())
         : new double[xs.size()]);
   }
 
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/geo/json/Properties.java b/src/main/java/gov/usgs/earthquake/nshmp/geo/json/Properties.java
index fddead02..2418d652 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/geo/json/Properties.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/geo/json/Properties.java
@@ -68,7 +68,7 @@ public final class Properties {
    */
   public <T> Optional<T> get(String key, Class<T> classOfT) {
     try {
-      JsonElement element = getJsonElement(key).get();
+      JsonElement element = getJsonElement(key).orElseThrow();
       T obj = GeoJson.GSON_DEFAULT.fromJson(element, classOfT);
       return Optional.of(obj);
     } catch (Exception e) {
@@ -94,7 +94,7 @@ public final class Properties {
    */
   public <T> Optional<T> get(String key, Type typeOfT) {
     try {
-      JsonElement element = getJsonElement(key).get();
+      JsonElement element = getJsonElement(key).orElseThrow();
       T obj = GeoJson.GSON_DEFAULT.fromJson(element, typeOfT);
       return Optional.of(obj);
     } catch (Exception e) {
@@ -111,7 +111,7 @@ public final class Properties {
    */
   public Optional<Boolean> getBoolean(String key) {
     try {
-      return Optional.of(getJsonElement(key).get().getAsBoolean());
+      return Optional.of(getJsonElement(key).orElseThrow().getAsBoolean());
     } catch (Exception e) {
       return Optional.empty();
     }
@@ -126,7 +126,7 @@ public final class Properties {
    */
   public OptionalInt getInt(String key) {
     try {
-      return OptionalInt.of(getJsonElement(key).get().getAsInt());
+      return OptionalInt.of(getJsonElement(key).orElseThrow().getAsInt());
     } catch (Exception e) {
       return OptionalInt.empty();
     }
@@ -141,7 +141,7 @@ public final class Properties {
    */
   public OptionalDouble getDouble(String key) {
     try {
-      return OptionalDouble.of(getJsonElement(key).get().getAsDouble());
+      return OptionalDouble.of(getJsonElement(key).orElseThrow().getAsDouble());
     } catch (Exception e) {
       return OptionalDouble.empty();
     }
@@ -156,7 +156,7 @@ public final class Properties {
    */
   public Optional<String> getString(String key) {
     try {
-      return Optional.of(getJsonElement(key).get().getAsString());
+      return Optional.of(getJsonElement(key).orElseThrow().getAsString());
     } catch (Exception e) {
       return Optional.empty();
     }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/GmmInput.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/GmmInput.java
index 81ce1cef..d7b443f2 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/GmmInput.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/GmmInput.java
@@ -714,7 +714,7 @@ public class GmmInput {
       for (Entry<Field, Optional<?>> entry : constraintMap.entrySet()) {
         Optional<?> opt = entry.getValue();
         String optStr = Strings.padEnd(
-            opt.isPresent() ? opt.get().toString() : "", CONSTRAINT_STR_COL_WIDTH, ' ');
+            opt.isPresent() ? opt.orElseThrow().toString() : "", CONSTRAINT_STR_COL_WIDTH, ' ');
         sb.append(optStr);
       }
       return sb;
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/UsgsPgvSupport.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/UsgsPgvSupport.java
index 8aa1acf3..2a1179fa 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/UsgsPgvSupport.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/UsgsPgvSupport.java
@@ -155,8 +155,8 @@ class UsgsPgvSupport {
     double targetPeriod = computeTPgv(in.Mw);
 
     // GMM sa Imt bounds
-    Imt minImt = saImts.stream().findFirst().get();
-    Imt maxImt = Streams.findLast(saImts.stream()).get();
+    Imt minImt = saImts.stream().findFirst().orElseThrow();
+    Imt maxImt = Streams.findLast(saImts.stream()).orElseThrow();
     double minPeriod = minImt.period();
     double maxPeriod = maxImt.period();
 
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/internal/www/WsUtils.java b/src/main/java/gov/usgs/earthquake/nshmp/internal/www/WsUtils.java
index 88a240ed..b76a1c85 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/internal/www/WsUtils.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/internal/www/WsUtils.java
@@ -71,7 +71,7 @@ public class WsUtils {
       for (Field field : Field.values()) {
         Optional<?> opt = constraints.get(field);
         if (opt.isPresent()) {
-          Range<?> value = (Range<?>) opt.get();
+          Range<?> value = (Range<?>) opt.orElseThrow();
           Constraint constraint = new Constraint(
               field.id,
               value.lowerEndpoint(),
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/FaultRuptureSet.java b/src/main/java/gov/usgs/earthquake/nshmp/model/FaultRuptureSet.java
index 39ac429a..1828fa84 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/FaultRuptureSet.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/FaultRuptureSet.java
@@ -205,7 +205,7 @@ public class FaultRuptureSet implements RuptureSet {
       // TODO test length property rounding
 
       /* Filter of unlikely combination of SINGLEs epistemic uncertainty. */
-      checkEpistemic(data.mfdConfig().get(), mfdPropsTree);
+      checkEpistemic(data.mfdConfig().orElseThrow(), mfdPropsTree);
 
       /*
        * Fault MFDs are constructed in a variety of ways. Single fault MFDs may
@@ -583,7 +583,7 @@ public class FaultRuptureSet implements RuptureSet {
 
     if (epistemic) {
 
-      for (Branch<Double> epiBranch : mfdConfig.epistemicTree.get()) {
+      for (Branch<Double> epiBranch : mfdConfig.epistemicTree.orElseThrow()) {
 
         /*
          * Given changes to how GR MFD sequences are built (centered and bounded
@@ -655,7 +655,7 @@ public class FaultRuptureSet implements RuptureSet {
     /* mMax epistemic uncertainty branches */
     if (epistemic) {
 
-      for (Branch<Double> epiBranch : mfdConfig.epistemicTree.get()) {
+      for (Branch<Double> epiBranch : mfdConfig.epistemicTree.orElseThrow()) {
 
         double mEpi = single.m() + epiBranch.value();
         double weightEpi = mfdWt * epiBranch.weight();
@@ -664,7 +664,7 @@ public class FaultRuptureSet implements RuptureSet {
         /* Possibly apply aleatory variability */
         if (aleatory) {
 
-          MfdConfig.AleatoryProperties aleaProps = mfdConfig.aleatoryProperties.get();
+          MfdConfig.AleatoryProperties aleaProps = mfdConfig.aleatoryProperties.orElseThrow();
           Mfd mfd = newGaussianBuilder(mEpi, aleaProps)
               .scaleToMomentRate(moRate)
               .build();
@@ -684,7 +684,7 @@ public class FaultRuptureSet implements RuptureSet {
       /* Possibly apply aleatory variability */
       if (aleatory) {
 
-        MfdConfig.AleatoryProperties aleaProps = mfdConfig.aleatoryProperties.get();
+        MfdConfig.AleatoryProperties aleaProps = mfdConfig.aleatoryProperties.orElseThrow();
         Mfd mfd = newGaussianBuilder(single.m(), aleaProps)
             .scaleToMomentRate(moRate)
             .build();
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/GmmSet.java b/src/main/java/gov/usgs/earthquake/nshmp/model/GmmSet.java
index 8cb60e98..b2081955 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/GmmSet.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/GmmSet.java
@@ -163,7 +163,7 @@ public final class GmmSet {
   public double epiValue(double m, double r) {
     switch (uncertainty) {
       case MULTI:
-        return epiModel.get().value(m, r);
+        return epiModel.orElseThrow().value(m, r);
       default:
         return 0.0;
     }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/MfdConfig.java b/src/main/java/gov/usgs/earthquake/nshmp/model/MfdConfig.java
index 3b417424..0fdb8efd 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/MfdConfig.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/MfdConfig.java
@@ -56,7 +56,7 @@ class MfdConfig {
       this.epistemicTree = Optional.of(checkNotNull(tree));
       if (this.epistemicTree.isPresent()) {
         this.minEpiOffset = OptionalDouble.of(
-            this.epistemicTree.get().branches().stream()
+            this.epistemicTree.orElseThrow().branches().stream()
                 .mapToDouble(b -> b.value())
                 .min()
                 .getAsDouble());
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/ModelLoader.java b/src/main/java/gov/usgs/earthquake/nshmp/model/ModelLoader.java
index aaced98d..6fe20146 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/ModelLoader.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/ModelLoader.java
@@ -430,7 +430,7 @@ abstract class ModelLoader {
       Optional<LogicTree<Path>> tree = readSourceTree(dir);
       if (tree.isPresent()) {
 
-        LogicTree<Path> children = tree.get();
+        LogicTree<Path> children = tree.orElseThrow();
         treeBuilder.addBranches(branch, children);
 
         for (Branch<Path> child : children) {
@@ -459,7 +459,7 @@ abstract class ModelLoader {
       System.out.println("  system: " + root.relativize(dir));
       Optional<LogicTree<Path>> tree = readSourceTree(dir);
       if (tree.isPresent()) {
-        LogicTree<Path> children = tree.get();
+        LogicTree<Path> children = tree.orElseThrow();
         treeBuilder.addBranches(branch, children);
         for (Branch<Path> child : children) {
           processSystemBranch(child, treeBuilder, data);
@@ -578,7 +578,7 @@ abstract class ModelLoader {
       Optional<LogicTree<Path>> tree = readSourceTree(dir);
       if (tree.isPresent()) {
 
-        LogicTree<Path> children = tree.get();
+        LogicTree<Path> children = tree.orElseThrow();
         treeBuilder.addBranches(branch, children);
 
         for (Branch<Path> child : children) {
@@ -692,7 +692,7 @@ abstract class ModelLoader {
       Optional<LogicTree<Path>> tree = readSourceTree(dir);
       if (tree.isPresent()) {
 
-        LogicTree<Path> children = tree.get();
+        LogicTree<Path> children = tree.orElseThrow();
         treeBuilder.addBranches(branch, children);
 
         for (Branch<Path> child : children) {
@@ -831,7 +831,7 @@ abstract class ModelLoader {
       Optional<LogicTree<Path>> tree = readSourceTree(dir);
       if (tree.isPresent()) {
 
-        LogicTree<Path> children = tree.get();
+        LogicTree<Path> children = tree.orElseThrow();
         treeBuilder.addBranches(branch, children);
 
         for (Branch<Path> child : children) {
@@ -981,7 +981,7 @@ abstract class ModelLoader {
       Optional<LogicTree<Path>> tree = readSourceTree(dir);
       if (tree.isPresent()) {
 
-        LogicTree<Path> children = tree.get();
+        LogicTree<Path> children = tree.orElseThrow();
         treeBuilder.addBranches(branch, children);
 
         for (Branch<Path> child : children) {
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/SourceFeature.java b/src/main/java/gov/usgs/earthquake/nshmp/model/SourceFeature.java
index e628b491..f1ed93ea 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/SourceFeature.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/SourceFeature.java
@@ -81,9 +81,9 @@ public abstract class SourceFeature {
     country = props.getString(Key.COUNTRY).orElse("US");
     state = props.getString(Key.STATE);
     states = List.of(props.get(Key.STATES, String[].class).orElse(
-        state.isPresent() ? new String[] { state.get() } : new String[0]));
+        state.isPresent() ? new String[] { state.orElseThrow() } : new String[0]));
     checkArgument(
-        state.isEmpty() || states.get(0).equals(state.get()),
+        state.isEmpty() || states.get(0).equals(state.orElseThrow()),
         "Inconsistent 'state' and 'states' fields");
     this.source = feature;
   }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/ZoneRuptureSet.java b/src/main/java/gov/usgs/earthquake/nshmp/model/ZoneRuptureSet.java
index c6260128..493fa089 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/ZoneRuptureSet.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/ZoneRuptureSet.java
@@ -156,8 +156,8 @@ class ZoneRuptureSet implements RuptureSet {
       checkNotNull(feature, "%s feature", label);
       checkNotNull(ratesPath, "%s rates file path", label);
       if (mfdTreeKey.isPresent()) {
-        String key = mfdTreeKey.get();
-        mfdPropertiesTree = data.mfdMap().get().get(key);
+        String key = mfdTreeKey.orElseThrow();
+        mfdPropertiesTree = data.mfdMap().orElseThrow().get(key);
       }
       checkNotNull(mfdPropertiesTree, "%s MFD tree not set", label);
       initLocationAndRateLists();
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/data/MutableXySequenceTests.java b/src/test/java/gov/usgs/earthquake/nshmp/data/MutableXySequenceTests.java
index 2b1543c3..52cd9205 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/data/MutableXySequenceTests.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/data/MutableXySequenceTests.java
@@ -101,7 +101,7 @@ class MutableXySequenceTests {
   final void streamTest() {
     // check that stream consists of mutable points
     assertEquals(
-        xy.stream().findFirst().get().getClass(),
+        xy.stream().findFirst().orElseThrow().getClass(),
         MutableArrayXySequence.MutablePoint.class);
   }
 
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/geo/json/GeoJsonTest.java b/src/test/java/gov/usgs/earthquake/nshmp/geo/json/GeoJsonTest.java
index cd707652..467dee4a 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/geo/json/GeoJsonTest.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/geo/json/GeoJsonTest.java
@@ -144,20 +144,20 @@ class GeoJsonTest {
 
     List<Feature> features = fc.features();
     assertEquals(3, features.size());
-    checkBboxIsEqualCopy(BBOX, fc.bbox().get());
+    checkBboxIsEqualCopy(BBOX, fc.bbox().orElseThrow());
 
     Feature f1 = features.get(0);
-    assertEquals("featureId", f1.idAsString().get());
+    assertEquals("featureId", f1.idAsString().orElseThrow());
     assertEquals(Type.POINT, f1.type());
     checkBboxIsOptionalEmpty(f1.bbox());
     Properties f1Props = f1.properties();
-    assertEquals("#ff0080", f1Props.getString("color").get());
+    assertEquals("#ff0080", f1Props.getString("color").orElseThrow());
     assertEquals(1.0, f1Props.getDouble("id").getAsDouble(), 0.0);
     assertEquals(1, f1Props.getInt("id").getAsInt());
 
     Feature f3 = features.get(2);
     assertEquals(3, f3.idAsInt().getAsInt());
-    checkBboxIsEqualCopy(BBOX, f3.bbox().get());
+    checkBboxIsEqualCopy(BBOX, f3.bbox().orElseThrow());
   }
 
   private void checkBboxIsOptionalEmpty(Optional<double[]> actualBbox) {
@@ -314,13 +314,13 @@ class GeoJsonTest {
       assertEquals(Optional.empty(), f.idAsString());
       f = GeoJson.from(Feature.point(TEST_POINT).id("3").build().toJson()).toFeature();
       assertEquals(3, f.idAsInt().getAsInt());
-      assertEquals("3", f.idAsString().get());
+      assertEquals("3", f.idAsString().orElseThrow());
     }
 
     @Test
     void testBbox_shouldReturnEqualCopyOrOptionalEmpty() {
       // Feature bbox
-      checkBboxIsEqualCopy(BBOX, TEST_LINE_STRING_FEATURE.bbox().get());
+      checkBboxIsEqualCopy(BBOX, TEST_LINE_STRING_FEATURE.bbox().orElseThrow());
       // Missing bbox is Optional.empty
       checkBboxIsOptionalEmpty(dummyFeatureLineString().bbox());
     }
@@ -339,7 +339,7 @@ class GeoJsonTest {
 
       Feature copy = Feature.copyOf(FEATURE_FOR_COPY).build();
 
-      assertEquals("featureId", copy.idAsString().get());
+      assertEquals("featureId", copy.idAsString().orElseThrow());
       assertEquals(TEST_POINT, copy.asPoint());
       assertTrue(copy.bbox().isEmpty());
       assertTrue(copy.properties().map().isEmpty());
@@ -386,7 +386,7 @@ class GeoJsonTest {
       // make a modified copy
       Feature targetCopyMod = Feature.copyOf(FEATURE_FOR_COPY)
           .properties(Properties.fromFeature(FEATURE_FOR_COPY).build())
-          .id(FEATURE_FOR_COPY.idAsString().get() + "2")
+          .id(FEATURE_FOR_COPY.idAsString().orElseThrow() + "2")
           .build();
 
       // test logic branches
@@ -540,7 +540,7 @@ class GeoJsonTest {
     @Test
     void testBbox_shouldReturnEqualCopyOrOptionalEmpty() {
       // Feature Collection bbox
-      checkBboxIsEqualCopy(BBOX, TEST_FEATURE_COLLECTION.bbox().get());
+      checkBboxIsEqualCopy(BBOX, TEST_FEATURE_COLLECTION.bbox().orElseThrow());
       // Missing bbox is Optional.empty
       checkBboxIsOptionalEmpty(TEST_FEATURE_COLLECTION.features().get(0).bbox());
     }
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/geo/json/PropertiesTests.java b/src/test/java/gov/usgs/earthquake/nshmp/geo/json/PropertiesTests.java
index 4073cd24..5c0aad26 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/geo/json/PropertiesTests.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/geo/json/PropertiesTests.java
@@ -89,7 +89,7 @@ class PropertiesTests {
     assertTrue(propAbsent.getString(key).isEmpty());
     assertTrue(propNull.getString(key).isEmpty());
     assertTrue(propObject.getString(key).isEmpty());
-    assertEquals("test1234", propString.getString(key).get());
+    assertEquals("test1234", propString.getString(key).orElseThrow());
   }
 
   @Test
@@ -98,11 +98,11 @@ class PropertiesTests {
     Properties props = TEST_FEATURE_PROPERTIES.properties();
 
     assertTrue(props.getString(DESCRIPTION.toString()).isPresent());
-    assertTrue(props.getBoolean("boolean").get());
+    assertTrue(props.getBoolean("boolean").orElseThrow());
     assertEquals(42, props.getInt("id").getAsInt());
     assertEquals(0.5, props.getDouble(FILL_OPACITY.toString()).getAsDouble(), 0.0);
-    assertEquals("description", props.getString(DESCRIPTION.toString()).get());
-    TestObject actual = props.get("object", TestObject.class).get();
+    assertEquals("description", props.getString(DESCRIPTION.toString()).orElseThrow());
+    TestObject actual = props.get("object", TestObject.class).orElseThrow();
     TestObject expected = new TestObject("test", ImmutableList.of(1.0, 2.0));
     assertEquals(expected.getClass(), actual.getClass());
     assertEquals(expected, actual);
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/SourceFeatureTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/SourceFeatureTests.java
index 2d9a3009..0acc3b84 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/SourceFeatureTests.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/SourceFeatureTests.java
@@ -28,7 +28,7 @@ class SourceFeatureTests {
 
     assertEquals(100000, section.id);
     assertEquals("Test Fault Section", section.name);
-    assertEquals("NV", section.state.get());
+    assertEquals("NV", section.state.orElseThrow());
     assertEquals(List.of("NV", "CA"), section.states);
 
     /* Test no states array */
@@ -47,7 +47,7 @@ class SourceFeatureTests {
 
     assertEquals(100000, section.id);
     assertEquals("Test Fault Section", section.name);
-    assertEquals("NV", section.state.get());
+    assertEquals("NV", section.state.orElseThrow());
     assertEquals(List.of("NV", "CA"), section.states);
     assertEquals(0.0, section.upperDepth);
     assertEquals(15.0, section.lowerDepth);
@@ -71,7 +71,7 @@ class SourceFeatureTests {
         Location.create(-119.7, 39.1),
         Location.create(-119.9, 39.1),
         Location.create(-119.9, 38.6));
-    assertEquals(zoneBorder, zoneSection.zone.get());
+    assertEquals(zoneBorder, zoneSection.zone.orElseThrow());
 
   }
 
@@ -85,7 +85,7 @@ class SourceFeatureTests {
     assertEquals(100001, section.id);
     assertEquals("Test Interface Section",
         section.name);
-    assertEquals("WA", section.state.get());
+    assertEquals("WA", section.state.orElseThrow());
     assertEquals(List.of("WA", "OR"), section.states);
 
     LocationList upperTrace = LocationList.of(
-- 
GitLab