### Question:
FeatureLayersMinimap implements Serializable { public static FeatureLayersMinimap from(Spatial.FeatureLayersMinimap sc2ApiFeatureLayersMinimap) { require("sc2api feature layers minimap", sc2ApiFeatureLayersMinimap); return new FeatureLayersMinimap(sc2ApiFeatureLayersMinimap); } private  FeatureLayersMinimap(Spatial.FeatureLayersMinimap sc2ApiFeatureLayersMinimap); static FeatureLayersMinimap from(Spatial.FeatureLayersMinimap sc2ApiFeatureLayersMinimap); ImageData getHeightMap(); ImageData getVisibilityMap(); ImageData getCreep(); ImageData getCamera(); ImageData getPlayerId(); ImageData getPlayerRelative(); ImageData getSelected(); Optional<ImageData> getAlerts(); Optional<ImageData> getBuildable(); Optional<ImageData> getPathable(); Optional<ImageData> getUnitType(); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }### Answer:
@Test void throwsExceptionWhenPlayerRelativeIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> FeatureLayersMinimap.from(without( () -> sc2ApiFeatureLayersMinimap().toBuilder(), Spatial.FeatureLayersMinimap.Builder::clearPlayerRelative).build())) .withMessage("player relative is required"); }
@Test void throwsExceptionWhenSc2ApiFeatureLayersMinimapIsNull() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> FeatureLayersMinimap.from(nothing())) .withMessage("sc2api feature layers minimap is required"); }
@Test void convertsAllFieldsFromSc2ApiFeatureLayersMinimap() { assertThatAllFieldsAreConverted(FeatureLayersMinimap.from(sc2ApiFeatureLayersMinimap())); }
@Test void throwsExceptionWhenHeightMapIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> FeatureLayersMinimap.from(without( () -> sc2ApiFeatureLayersMinimap().toBuilder(), Spatial.FeatureLayersMinimap.Builder::clearHeightMap).build())) .withMessage("height map is required"); }
@Test void throwsExceptionWhenVisibilityMapIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> FeatureLayersMinimap.from(without( () -> sc2ApiFeatureLayersMinimap().toBuilder(), Spatial.FeatureLayersMinimap.Builder::clearVisibilityMap).build())) .withMessage("visibility map is required"); }
@Test void throwsExceptionWhenCreepIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> FeatureLayersMinimap.from(without( () -> sc2ApiFeatureLayersMinimap().toBuilder(), Spatial.FeatureLayersMinimap.Builder::clearCreep).build())) .withMessage("creep is required"); }
@Test void throwsExceptionWhenCameraIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> FeatureLayersMinimap.from(without( () -> sc2ApiFeatureLayersMinimap().toBuilder(), Spatial.FeatureLayersMinimap.Builder::clearCamera).build())) .withMessage("camera is required"); }
@Test void throwsExceptionWhenPlayerIdIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> FeatureLayersMinimap.from(without( () -> sc2ApiFeatureLayersMinimap().toBuilder(), Spatial.FeatureLayersMinimap.Builder::clearPlayerId).build())) .withMessage("player id is required"); }
@Test void throwsExceptionWhenSelectedIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> FeatureLayersMinimap.from(without( () -> sc2ApiFeatureLayersMinimap().toBuilder(), Spatial.FeatureLayersMinimap.Builder::clearSelected).build())) .withMessage("selected is required"); }