code: def v_type_extension(ctx, stmt):
      
      (modulename, identifier) = stmt.keyword
      revision = stmt.i_extension_revision
      module = modulename_to_module(stmt.i_module, modulename, revision)
      if module is None:
          return
      if identifier not in module.i_extensions:
          if module.i_modulename == stmt.i_orig_module.i_modulename:
              # extension defined in current submodule
              if identifier not in stmt.i_orig_module.i_extensions:
                  err_add(ctx.errors, stmt.pos, 'EXTENSION_NOT_DEFINED',
                          (identifier, module.arg))
                  return
              else:
                  stmt.i_extension = stmt.i_orig_module.i_extensions[identifier]
          else:
              err_add(ctx.errors, stmt.pos, 'EXTENSION_NOT_DEFINED',
                      (identifier, module.arg))
              return
      else:
          stmt.i_extension = module.i_extensions[identifier]
      ext_arg = stmt.i_extension.search_one('argument')
      if stmt.arg is not None and ext_arg is None:
          err_add(ctx.errors, stmt.pos, 'EXTENSION_ARGUMENT_PRESENT',
                  identifier)
      elif stmt.arg is None and ext_arg is not None:
          err_add(ctx.errors, stmt.pos, 'EXTENSION_NO_ARGUMENT_PRESENT',
                  identifier)
docs: verify that the extension matches the extension definition