# File lib/transaction/simple.rb, line 111
  def start_transaction(name = nil)
    @__transaction_level__ ||= 0
    @__transaction_names__ ||= []

    name = name.dup.freeze if name.kind_of?(String)

    raise Transaction::TransactionError, Transaction::Messages[:unique_names] if name and @__transaction_names__.include?(name)

    @__transaction_names__ << name
    @__transaction_level__ += 1

    if Transaction::Simple.debugging?
      ss = "(#{name.inspect})"
      ss = "" unless ss

      Transaction::Simple.debug_io << "#{'>' * @__transaction_level__} " << "Start Transaction#{ss}\n"
    end

    @__transaction_checkpoint__ = Marshal.dump(self)
  end