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

          if name.nil?
            @__transaction_names__ << nil
            ss = "" if Transaction::Simple.debugging?
          else
            if @__transaction_names__.include?(name)
              raise TransactionError, Messages[:unique_names]
            end
            name = name.dup.freeze if name.kind_of?(String)
            @__transaction_names__ << name
            ss = "(#{name.inspect})" if Transaction::Simple.debugging?
          end

          @__transaction_level__ += 1

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

          @__transaction_checkpoint__ = Marshal.dump(self)
        end