# File lib/hiera/backend/puppet_backend.rb, line 36
            def lookup(key, scope, order_override, resolution_type)
                answer = Backend.empty_answer(resolution_type)

                Hiera.debug("Looking up #{key} in Puppet backend")

                include_class = Puppet::Parser::Functions.function(:include)
                loaded_classes = scope.catalog.classes

                hierarchy(scope, order_override).each do |klass|
                    Hiera.debug("Looking for data in #{klass}")

                    varname = [klass, key].join("::")
                    temp_answer = nil

                    unless loaded_classes.include?(klass)
                        begin
                            if scope.respond_to?(:function_include)
                                scope.function_include(klass)
                            else
                                scope.real.function_include(klass)
                            end

                            temp_answer = scope[varname]
                            Hiera.debug("Found data in class #{klass}")
                        rescue
                        end
                    else
                        temp_answer = scope[varname]
                    end

                    next if temp_answer == :undefined

                    if temp_answer
                        # for array resolution we just append to the array whatever
                        # we find, we then goes onto the next file and keep adding to
                        # the array
                        #
                        # for priority searches we break after the first found data item
                        case resolution_type
                        when :array
                            answer << Backend.parse_answer(temp_answer, scope)
                        else
                            answer = Backend.parse_answer(temp_answer, scope)
                            break
                        end
                    end
                end

                answer = nil if answer == :undefined

                answer
            end