### Question:
ActionRaw implements Sc2ApiSerializable<Raw.ActionRaw>, GeneralizableAbility<ActionRaw> { public static ActionRaw from(Raw.ActionRaw sc2ApiActionRaw) { require("sc2api action raw", sc2ApiActionRaw); return new ActionRaw(sc2ApiActionRaw); } private  ActionRaw(Raw.ActionRaw sc2ApiActionRaw); private  ActionRaw(ActionRawUnitCommand unitCommand); private  ActionRaw(ActionRawCameraMove cameraMove); private  ActionRaw(ActionRawToggleAutocast toggleAutocast); static ActionRaw from(Raw.ActionRaw sc2ApiActionRaw); static ActionRaw of(ActionRawUnitCommand unitCommand); static ActionRaw of(ActionRawCameraMove cameraMove); static ActionRaw of(ActionRawToggleAutocast toggleAutocast); @Override Raw.ActionRaw toSc2Api(); Optional<ActionRawUnitCommand> getUnitCommand(); Optional<ActionRawCameraMove> getCameraMove(); Optional<ActionRawToggleAutocast> getToggleAutocast(); @Override ActionRaw generalizeAbility(UnaryOperator<Ability> generalize); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }### Answer:
@Test void throwsExceptionWhenSc2ApiActionRawIsNull() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> ActionRaw.from(nothing())) .withMessage("sc2api action raw is required"); }