@hepnames.over('<STR_LIT>', '<STR_LIT>')<EOL>@utils.for_each_value<EOL>def positions(self, key, value):
email_addresses = self.get("<STR_LIT>", [])<EOL>current = None<EOL>record = None<EOL>recid_or_status = force_list(value.get('<STR_LIT:z>'))<EOL>for el in recid_or_status:<EOL><INDENT>if el.lower() == '<STR_LIT>':<EOL><INDENT>current = True if value.get('<STR_LIT:a>') else None<EOL><DEDENT>else:<EOL><INDENT>record = get_record_ref(maybe_int(el), '<STR_LIT>')<EOL><DEDENT><DEDENT>rank = normalize_rank(value.get('<STR_LIT:r>'))<EOL>current_email_addresses = force_list(value.get('<STR_LIT:m>'))<EOL>non_current_email_addresses = force_list(value.get('<STR_LIT:o>'))<EOL>email_addresses.extend({<EOL>'<STR_LIT:value>': address,<EOL>'<STR_LIT>': True,<EOL>} for address in current_email_addresses)<EOL>email_addresses.extend({<EOL>'<STR_LIT:value>': address,<EOL>'<STR_LIT>': False,<EOL>} for address in non_current_email_addresses)<EOL>self['<STR_LIT>'] = email_addresses<EOL>if '<STR_LIT:a>' not in value:<EOL><INDENT>return None<EOL><DEDENT>return {<EOL>'<STR_LIT>': value['<STR_LIT:a>'],<EOL>'<STR_LIT>': record,<EOL>'<STR_LIT>': True if record is not None else None,<EOL>'<STR_LIT>': rank,<EOL>'<STR_LIT>': normalize_date(value.get('<STR_LIT:s>')),<EOL>'<STR_LIT>': normalize_date(value.get('<STR_LIT:t>')),<EOL>'<STR_LIT>': current,<EOL>}<EOL>
Populate the positions field.

    Also populates the email_addresses field by side effect.