You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: absolute_file_converter.rb
    path of file: ./repos/coverband/lib/coverband/utils
    
    the code of the file until where you have to start completion: # frozen_string_literal: true

module Coverband
  module Utils
    class AbsoluteFileConverter
      def initialize(roots)
        @cache = {}
        @roots = roots.map { |root| "#{File.expand_path(root)}/" }
      end

      def self.instance
        @instance ||= new(Coverband.configuration.all_root_paths)
      end

      def self.reset
        @instance = nil
      end

      def self.convert(relative_path)
        instance.convert(relative_path)
      end

      def convert(relative_path)
        @cache[relative_path] ||= begin
          relative_filename = relative_path
          local_filename = relative_filename
          @roots.each do |root|
            relative_filename = relative_filename.sub(/^#{root}/, 
    
      def convert(relative_path)
        @cache[relative_path] ||= begin
          relative_filename = relative_path
          local_filename = relative_filename
          @roots.each do |root|
            relative_filename = relative_filename.sub(/^#{root}/, "./")
            # once we have a relative path break out of the loop
            break if relative_filename.start_with? "./"
          end
          # the filename for our reports is expected to be a full path.
          # roots.last should be roots << current_root}/
          # a fully expanded path of config.root
          # filename = filename.gsub('./', roots.last)
          # above only works for app files
          # we need to rethink some of this logic
          # gems aren't at project root and can have multiple locations
          local_root = @roots.find { |root|
            File.exist?(relative_filename.gsub("./", root))
          }
          local_root ? relative_filename.gsub("./", local_root) : local_filename
        end