    # File lib/ffi/library.rb, line 358
        def callback(*args)
          raise ArgumentError, "wrong number of arguments" if args.length < 2 || args.length > 3
          name, params, ret = if args.length == 3
            args
          else
            [ nil, args[0], args[1] ]
          end

          options = Hash.new
          options[:convention] = ffi_convention
          options[:enums] = @ffi_enums if defined?(@ffi_enums)
          cb = FFI::CallbackInfo.new(find_type(ret), params.map { |e| find_type(e) }, options)

          # Add to the symbol -> type map (unless there was no name)
          unless name.nil?
            typedef cb, name
          end

          cb
        end