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: name_patch.rb
    path of file: ./repos/tapioca/lib/tapioca/sorbet_ext
    
    the code of the file until where you have to start completion: # typed: true
# frozen_string_literal: true

module T
  module Types
    class Simple
      module NamePatch
        NAME_METHOD = T.let(Module.instance_method(:name), UnboundMethod)

        def name
          # Sorbet memoizes this method into the `@name` instance variable but
          # doing so means that types
    
        def name
          # Sorbet memoizes this method into the `@name` instance variable but
          # doing so means that types get memoized before this patch is applied
          qualified_name_of(@raw_type)
        end

        def qualified_name_of(constant)
          name = NAME_METHOD.bind_call(constant)
          name = nil if name&.start_with?("#<")
          return if name.nil?

          if name.start_with?("::")
            name
          else
            "::#{name}"
          end
        end