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: exceptions.rb
    path of file: ./repos/teaspoon/lib/teaspoon
    
    the code of the file until where you have to start completion: module Teaspoon
  class Error < StandardError
    protected

      def build_message(msg_or_options)
        if msg_or_options.is_a?(String)
          msg_or_options
        else
          yield msg_or_options
        end
      end
  end

  class Failure < Teaspoon::Error

    
    def initialize(msg_or_options)
      super(build_message(msg_or_options) do |options|
        msg = "Unknown framework: expected \"#{options[:name]}\" to be a registered framework. Available frameworks are #{options[:available]}."
        if options[:available].blank?
          msg + " Do you need to update your Gemfile to use the teaspoon-#{options[:name]} gem? If you are upgrading, please see https://github.com/jejacks0n/teaspoon/blob/master/CHANGELOG.md"
        end
      end)
    end