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: gem_resolver.rb
    path of file: ./repos/tomo/lib/tomo/configuration/plugins_registry
    
    the code of the file until where you have to start completion: module Tomo
  class Configuration
    class PluginsRegistry::GemResolver
      PLUGIN_PREF
    
      def assert_compatible_api(plugin)
        return if plugin.is_a?(::Tomo::PluginDSL)

        raise "#{plugin} does not extend Tomo::PluginDSL"
      end

      def constantize(path)
        parts = path.split("/")
        parts.reduce(Object) do |parent, part|
          child = part.gsub(/^[a-z]|_[a-z]/) { |str| str[-1].upcase }
          parent.const_get(child, false)
        end
      end

      def raise_unknown_plugin_error(error)
        UnknownPluginError.raise_with(
          error.message,
          name: name,
          gem_name: "#{PLUGIN_PREFIX}/#{name}".tr("/", "-"),
          known_plugins: scan_for_plugins
        )
      end

      def scan_for_plugins
        Gem.find_latest_files("#{PLUGIN_PREFIX}/*.rb").map do |file|
          file[%r{#{PLUGIN_PREFIX}/(.+).rb$}o, 1].tr("/", "-")
        end.uniq.sort
      end
    end
  end