'Requires:
nothing
Returns:
nothing (changes the original file)
Logic:
Read one line in at a time. Determine what action to take based on
the state. If the state is before the body, look for the
beginning of the body.
The other two states are toc_index (for toc and index entries) and
bookmark.'

def fix_fields(self):

    self.__initiate_values()
    with open(self.__file, 'r') as read_obj:
        with open(self.__write_to, 'w') as self.__write_obj:
            for line in read_obj:
                self.__token_info = line[:16]
                if (self.__token_info == 'ob<nu<open-brack'):
                    self.__ob_count = line[(-5):(-1)]
                if (self.__token_info == 'cb<nu<clos-brack'):
                    self.__cb_count = line[(-5):(-1)]
                action = self.__state_dict.get(self.__state)
                if (action is None):
                    sys.stderr.write('No    matching    state    in    module    fields_small.py\n')
                    sys.stderr.write((self.__state + '\n'))
                action(line)
    copy_obj = copy.Copy(bug_handler=self.__bug_handler)
    if self.__copy:
        copy_obj.copy_file(self.__write_to, 'fields_small.data')
    copy_obj.rename(self.__write_to, self.__file)
    os.remove(self.__write_to)
