class Module
  private
  # Aliases a method and undefines the original.
  #
  #   rename_method( :to_method, :from_method  )
  #
  def rename_method( to_sym, from_sym )
    raise ArgumentError, "method #{from_sym} does not exist" unless method_defined?( from_sym )
    alias_method( to_sym, from_sym )
    undef_method( from_sym )
  end
end


#  _____         _
# |_   _|__  ___| |_
#   | |/ _ \/ __| __|
#   | |  __/\__ \ |_
#   |_|\___||___/\__|
#
=begin test

  require 'test/unit'

  class TCModule < Test::Unit::TestCase

    def a; "A" ; end

    rename_method :b, :a

    def test_rename_method
      assert( ! respond_to?( :a ) )
      assert( respond_to?( :b ) )
    end

  end

=end
