# File lib/hiera/backend/puppet_backend.rb, line 8
            def hierarchy(scope, override)
                begin
                    data_class = Config[:puppet][:datasource] || "data"
                rescue
                    data_class = "data"
                end

                calling_class = scope.resource.name.to_s.downcase
                calling_module = calling_class.split("::").first

                hierarchy = Config[:hierarchy] || [calling_class, calling_module]

                hierarchy = [hierarchy].flatten.map do |klass|
                    klass = Backend.parse_string(klass, scope, {"calling_class" => calling_class, "calling_module" => calling_module})

                    next if klass == ""

                    [data_class, klass].join("::")
                end.compact

                hierarchy << [calling_class, data_class].join("::")
                hierarchy << [calling_module, data_class].join("::") unless calling_module == calling_class

                hierarchy.insert(0, [data_class, override].join("::")) if override

                hierarchy
            end