def sym_to_risc(compiler , source)
      slots = @slots.dup
      raise "Not Message #{object}" unless @known_object == :message
      left = Risc.message_reg
      left = left.resolve_and_add( slots.shift , compiler)
      reg = compiler.current.register
      while( !slots.empty? )
        left = left.resolve_and_add( slots.shift , compiler)
      end
      return reg
    end
def sym_to_risc(compiler , source)
      slots = @slots.dup
      raise "Not Message #{object}" unless @known_object == :message
      left = Risc.message_reg
      left = left.resolve_and_add( slots.shift , compiler)
      reg = compiler.current.register
      while( !slots.empty? )
        left = left.resolve_and_add( slots.shift , compiler)
      end
      return reg
    end
resolve the slots one by one to slot_to_reg instructions using the
 type information inferred from their names / type hierachy