### Question:
ActionSpatial implements Sc2ApiSerializable<Spatial.ActionSpatial>, GeneralizableAbility<ActionSpatial> { public static ActionSpatial from(Spatial.ActionSpatial sc2ApiActionSpatial) { require("sc2api action spatial", sc2ApiActionSpatial); return new ActionSpatial(sc2ApiActionSpatial); } private  ActionSpatial(Spatial.ActionSpatial sc2ApiActionSpatial); private  ActionSpatial(ActionSpatialUnitCommand unitCommand); private  ActionSpatial(ActionSpatialCameraMove cameraMove); private  ActionSpatial(ActionSpatialUnitSelectionPoint unitSelectionPoint); private  ActionSpatial(ActionSpatialUnitSelectionRect unitSelectionRect); static ActionSpatial of(ActionSpatialUnitCommand unitCommand); static ActionSpatial of(ActionSpatialCameraMove cameraMove); static ActionSpatial of(ActionSpatialUnitSelectionPoint unitSelectionPoint); static ActionSpatial of(ActionSpatialUnitSelectionRect unitSelectionRect); static ActionSpatial from(Spatial.ActionSpatial sc2ApiActionSpatial); @Override Spatial.ActionSpatial toSc2Api(); Optional<ActionSpatialUnitCommand> getUnitCommand(); Optional<ActionSpatialCameraMove> getCameraMove(); Optional<ActionSpatialUnitSelectionPoint> getUnitSelectionPoint(); Optional<ActionSpatialUnitSelectionRect> getUnitSelectionRect(); @Override ActionSpatial generalizeAbility(UnaryOperator<Ability> generalize); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }### Answer:
@Test void throwsExceptionWhenSc2ApiActionSpatialIsNull() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> ActionSpatial.from(nothing())) .withMessage("sc2api action spatial is required"); }