def add_zone(self, spatial_unit, container_id, name='<STR_LIT>', description='<STR_LIT>', visible=True, reuse=<NUM_LIT:0>, drop_behavior_type=None):
if not isinstance(spatial_unit, abc_mapping_primitives.SpatialUnit):<EOL><INDENT>raise InvalidArgument('<STR_LIT>')<EOL><DEDENT>if not isinstance(reuse, int):<EOL><INDENT>raise InvalidArgument('<STR_LIT>')<EOL><DEDENT>if reuse < <NUM_LIT:0>:<EOL><INDENT>raise InvalidArgument('<STR_LIT>')<EOL><DEDENT>if not isinstance(name, DisplayText):<EOL><INDENT>name = self._str_display_text(name)<EOL><DEDENT>if not isinstance(description, DisplayText):<EOL><INDENT>description = self._str_display_text(description)<EOL><DEDENT>zone = {<EOL>'<STR_LIT:id>': str(ObjectId()),<EOL>'<STR_LIT>': spatial_unit.get_spatial_unit_map(),<EOL>'<STR_LIT>': container_id,<EOL>'<STR_LIT>': [self._dict_display_text(name)],<EOL>'<STR_LIT>': [self._dict_display_text(description)],<EOL>'<STR_LIT>': visible,<EOL>'<STR_LIT>': reuse,<EOL>'<STR_LIT>': str(drop_behavior_type)<EOL>}<EOL>self.my_osid_object_form._my_map['<STR_LIT>'].append(zone)<EOL>return zone<EOL>
container_id is a targetId that the zone belongs to