# File lib/rvg/misc.rb, line 10
            def deep_copy(h = {})
                # Prevent recursion. If we reach the
                # object we started with, stop copying.
                copy = h[__id__]
                unless copy
                    h[__id__] = copy = self.class.allocate
                    ivars = instance_variables
                    ivars.each do |ivar|
                        ivalue = instance_variable_get(ivar)
                        cvalue = case
                            when NilClass === ivalue, Symbol === ivalue, Float === ivalue,
                                 Fixnum === ivalue, FalseClass === ivalue, TrueClass === ivalue
                                ivalue
                            when ivalue.respond_to?(:deep_copy)
                                ivalue.deep_copy(h)
                            when ivalue.respond_to?(:dup)
                                ivalue.dup
                            else
                                ivalue
                            end
                        copy.instance_variable_set(ivar, cvalue)
                    end
                    copy.freeze if frozen?
                end
                return copy
            end