public static void buildComplexMissionItem(MavLinkDrone drone, Bundle itemBundle) { MissionItem missionItem = MissionItemType.restoreMissionItemFromBundle(itemBundle); if (missionItem == null || !(missionItem instanceof MissionItem.ComplexItem)) return; final MissionItemType itemType = missionItem.getType(); switch (itemType) { case SURVEY: Survey updatedSurvey = buildSurvey(drone, (Survey) missionItem); if (updatedSurvey != null) itemType.storeMissionItem(updatedSurvey, itemBundle); break; case SPLINE_SURVEY: Survey updatedSplineSurvey = buildSplineSurvey(drone, (Survey) missionItem); if (updatedSplineSurvey != null) itemType.storeMissionItem(updatedSplineSurvey, itemBundle); break; case STRUCTURE_SCANNER: StructureScanner updatedScanner = buildStructureScanner(drone, (StructureScanner) missionItem); if (updatedScanner != null) itemType.storeMissionItem(updatedScanner, itemBundle); break; default: Timber.w("Unrecognized complex mission item."); break; } }