def add_asset(self, asset_id, asset_content_id=None, label=None, asset_content_type=None):
if asset_id is None:<EOL><INDENT>raise NullArgument('<STR_LIT>')<EOL><DEDENT>if not isinstance(asset_id, Id):<EOL><INDENT>raise InvalidArgument('<STR_LIT>')<EOL><DEDENT>if asset_content_id is not None and not isinstance(asset_content_id, Id):<EOL><INDENT>raise InvalidArgument('<STR_LIT>')<EOL><DEDENT>if asset_content_type is not None and not isinstance(asset_content_type, Type):<EOL><INDENT>raise InvalidArgument('<STR_LIT>')<EOL><DEDENT>if label is None:<EOL><INDENT>label = self._label_metadata['<STR_LIT>'][<NUM_LIT:0>]<EOL><DEDENT>else:<EOL><INDENT>if not self.my_osid_object_form._is_valid_string(<EOL>label, self.get_label_metadata()) or '<STR_LIT:.>' in label:<EOL><INDENT>raise InvalidArgument('<STR_LIT:label>')<EOL><DEDENT><DEDENT>if asset_content_type is None:<EOL><INDENT>asset_content_type = '<STR_LIT>'<EOL><DEDENT>self.my_osid_object_form._my_map['<STR_LIT>'][label] = {<EOL>'<STR_LIT>': str(asset_id),<EOL>'<STR_LIT>': str(asset_content_type)<EOL>}<EOL>if asset_content_id is not None:<EOL><INDENT>self.my_osid_object_form._my_map['<STR_LIT>'][label].update({<EOL>'<STR_LIT>': str(asset_content_id)<EOL>})<EOL><DEDENT>
stub