def create_asset_content(self, asset_content_form=None):
if asset_content_form is None:<EOL><INDENT>raise NullArgument()<EOL><DEDENT>if not isinstance(asset_content_form, abc_repository_objects.AssetContentForm):<EOL><INDENT>raise InvalidArgument('<STR_LIT>')<EOL><DEDENT>if asset_content_form.is_for_update():<EOL><INDENT>raise InvalidArgument('<STR_LIT>')<EOL><DEDENT>try:<EOL><INDENT>if self._forms[asset_content_form.get_id().get_identifier()] == CREATED:<EOL><INDENT>raise IllegalState('<STR_LIT>')<EOL><DEDENT><DEDENT>except KeyError:<EOL><INDENT>raise Unsupported('<STR_LIT>')<EOL><DEDENT>if not asset_content_form.is_valid():<EOL><INDENT>raise InvalidArgument('<STR_LIT>')<EOL><DEDENT>url_path = construct_url('<STR_LIT>',<EOL>bank_id=self._catalog_idstr,<EOL>asset_id=asset_content_form._asset_id)<EOL>asset = objects.Asset(self._get_request(url_path))<EOL>previous_contents = asset._my_map['<STR_LIT>']<EOL>previous_content_ids = [c['<STR_LIT:id>'] for c in previous_contents]<EOL>asset._my_map['<STR_LIT>'].append(asset_content_form._my_map)<EOL>url_path = construct_url('<STR_LIT>',<EOL>bank_id=self._catalog_idstr)<EOL>try:<EOL><INDENT>result = self._put_request(url_path, asset._my_map)<EOL><DEDENT>except Exception:<EOL><INDENT>raise  <EOL><DEDENT>self._forms[asset_content_form.get_id().get_identifier()] = CREATED<EOL>content = result['<STR_LIT>']<EOL>if len(content) == <NUM_LIT:1>:<EOL><INDENT>return objects.AssetContent(content[<NUM_LIT:0>])<EOL><DEDENT>else:<EOL><INDENT>for c in content:<EOL><INDENT>if c['<STR_LIT:id>'] not in previous_content_ids:<EOL><INDENT>return objects.AssetContent(c)<EOL><DEDENT><DEDENT><DEDENT>
Creates new ``AssetContent`` for a given asset.

        :param asset_content_form: the form for this ``AssetContent``
        :type asset_content_form: ``osid.repository.AssetContentForm``
        :return: the new ``AssetContent``
        :rtype: ``osid.repository.AssetContent``
        :raise: ``IllegalState`` -- ``asset_content_form`` already used in a create transaction
        :raise: ``InvalidArgument`` -- one or more of the form elements is invalid
        :raise: ``NullArgument`` -- ``asset_content_form`` is ``null``
        :raise: ``OperationFailed`` -- unable to complete request
        :raise: ``PermissionDenied`` -- authorization failure
        :raise: ``Unsupported`` -- ``asset_content_form`` did not originate from ``get_asset_content_form_for_create()``

        *compliance: mandatory -- This method must be implemented.*