def get_new_left(slot, compiler)
      new_type = extra["type_#{slot}".to_sym]
      new_type , extra = compiler.slot_type(slot , type) unless new_type
      if( @symbol == :r0 )
        new_left  = compiler.use_reg( new_type , extra)
      else
        new_left = RegisterValue.new( @symbol , new_type , extra)
      end
      new_left
    end
def get_new_left(slot, compiler)
      new_type = extra["type_#{slot}".to_sym]
      new_type , extra = compiler.slot_type(slot , type) unless new_type
      if( @symbol == :r0 )
        new_left  = compiler.use_reg( new_type , extra)
      else
        new_left = RegisterValue.new( @symbol , new_type , extra)
      end
      new_left
    end
when following variables in resolve_and_add, get a new RegisterValue
 that represents the new value.
 Ie in "normal case" a the same register, with the type of the slot
  (the not normal case, the first reduction, uses a new register, as we don't
   overwrite the message)
 We get the type with resolve_new_type