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