code: def alloc_temp(self, type_='*πg.Object'):
      
      for v in sorted(self.free_temps, key=lambda k: k.name):
        if v.type_ == type_:
          self.free_temps.remove(v)
          self.used_temps.add(v)
          return v
      self.temp_index += 1
      name = 'πTemp{:03d}'.format(self.temp_index)
      v = expr.GeneratedTempVar(self, name, type_)
      self.used_temps.add(v)
      return v
docs: Create a new temporary Go variable having type type_ for this block.