'Return a string suitable for use as an identifier
The new name is guaranteed not to conflict with other identifiers.'

def new_name(self, template=u'xxx_todo_changeme'):

    name = template
    while (name in self.used_names):
        name = (template + unicode(self.numbers.next()))
    self.used_names.add(name)
    return name
