﻿£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
# frozen_string_literal: true

require_relative "visitor"

module Gem::SafeMarshal
  module Visitors
    class StreamPrinter < Visitor
      def initialize(io, indent: "")
        @io = io
        @indent = indent
        @level = 0
      end

      def visit(target)
        @io.write("#{@indent * @level}#{target.class}")
        target.instance_variables.each do |ivar|
          value = target.instance_variable_get(ivar)
          next if Elements::Element === value || Array === value
          @io.write(" #{ivar}=#{value.inspect}")
        end
        @io.write("\n")
        begin
          @level += 1
          super
        ensure
          @level -= 1
        end
      end
    end
  end
end
