    # File lib/merb-core/core_ext/kernel.rb, line 143
      def __caller_lines__(file, line, size = 4)
        line = line.to_i
        if file =~ /\(erubis\)/
          yield :error, "Template Error! Problem while rendering", false
        elsif !File.file?(file) || !File.readable?(file)
          yield :error, "File `#{file}' not available", false
        else
          lines = File.read(file).split("\n")
          first_line = (f = line - size - 1) < 0 ? 0 : f

          if first_line.zero?
            new_size = line - 1
            lines = lines[first_line, size + new_size + 1]
          else
            new_size = nil
            lines = lines[first_line, size * 2 + 1]
          end

          lines && lines.each_with_index do |str, index|
            line_n = index + line
            line_n = (new_size.nil?) ? line_n - size : line_n - new_size
            yield line_n, str.chomp
          end
        end
      end