@utilities.arguments_not_none<EOL><INDENT>def add_choice(self, choice, inline_region, identifier=None, name='<STR_LIT>'):<DEDENT>
if inline_region not in self.my_osid_object_form._my_map['<STR_LIT>']:<EOL><INDENT>raise IllegalState('<STR_LIT>')<EOL><DEDENT>if identifier is None:<EOL><INDENT>identifier = str(ObjectId())<EOL><DEDENT>current_identifiers = [c['<STR_LIT:id>'] for c in self.my_osid_object_form._my_map['<STR_LIT>'][inline_region]]<EOL>if identifier not in current_identifiers:<EOL><INDENT>choice = {<EOL>'<STR_LIT:id>': identifier,<EOL>'<STR_LIT>': [self._dict_display_text(choice)],<EOL>'<STR_LIT:name>': name<EOL>}<EOL>self.my_osid_object_form._my_map['<STR_LIT>'][inline_region].append(choice)<EOL><DEDENT>else:<EOL><INDENT>for current_choice in self.my_osid_object_form._my_map['<STR_LIT>'][inline_region]:<EOL><INDENT>if current_choice['<STR_LIT:id>'] == identifier:<EOL><INDENT>self.add_or_replace_value('<STR_LIT>', choice, dictionary=current_choice)<EOL>choice = current_choice<EOL><DEDENT><DEDENT><DEDENT>return choice<EOL>
stub