    # File lib/facets/core/kernel/assign_with.rb, line 32
      def assign_with(*args)
        harg = args.last.is_a?(Hash) ? args.pop : {}

        unless args.empty?
          # if not assoc array, eg. [ [], [], ... ]
          # preserves order of opertation
          unless args[0].is_a?(Array)
            i = 0; a = []
            while i < args.size
              a << [ args[i], args[i+1] ]
              i += 2
            end
            args = a
          end
        end

        args.each do |k,v|
          instance_assign( k, v )
        end

        harg.each do |k,v|
          instance_assign( k, v )
        end

        return self
      end