# File lib/tins/deep_const_get.rb, line 16
    def deep_const_get(path, start_module = Object)
      path.to_s.split('::').inject(start_module) do |p, c|
        case
        when c.empty?
          if start_module == Object
            Object
          else
            raise ArgumentError, "top level constants cannot be reached from"\
              " start module #{start_module.inspect}"
          end
        when ::Tins::DeepConstGet.const_defined_in?(p, c) then p.const_get(c)
        else
          begin
            p.const_missing(c)
          rescue NameError => e
            raise ArgumentError, "can't get const #{path}: #{e}"
          end
        end
      end
    end