### Question:
ActionUiMultiPanel implements Sc2ApiSerializable<Ui.ActionMultiPanel> { public static ActionUiMultiPanel from(Ui.ActionMultiPanel sc2ApiActionMultiPanel) { require("sc2api action ui multi panel", sc2ApiActionMultiPanel); return new ActionUiMultiPanel(sc2ApiActionMultiPanel); } private  ActionUiMultiPanel(Builder builder); private  ActionUiMultiPanel(Ui.ActionMultiPanel sc2ApiActionMultiPanel); static ActionUiMultiPanelSyntax multiPanel(); static ActionUiMultiPanel from(Ui.ActionMultiPanel sc2ApiActionMultiPanel); @Override Ui.ActionMultiPanel toSc2Api(); Type getType(); int getUnitIndex(); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }### Answer:
@Test void throwsExceptionWhenSc2ApiActionUiMultiPanelIsNull() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> ActionUiMultiPanel.from(nothing())) .withMessage("sc2api action ui multi panel is required"); }
@Test void convertsSc2ApiActionUiMultiPanelToActionUiMultiPanel() { assertThatAllFieldsAreConverted(ActionUiMultiPanel.from(sc2ApiActionUiMultiPanel())); }
@Test void throwsExceptionWhenMultiPanelTypeIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> ActionUiMultiPanel.Type.from(nothing())) .withMessage("sc2api multi panel type is required"); }