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

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

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

    @__transaction_names__ << name
    @__transaction_level__ += 1

    ___tdebug '>', "%s(%s)", ___tmessage[:start_transaction], name.inspect
    ___tdebug_checkpoint

    checkpoint = Marshal.dump(self)

    @__transaction_checkpoint__ = Marshal.dump(self)
  end