Returns a new name derived from base. The return name will be different from all previously returned names.
If this is the first time base is passed to this function, then returns base.