public function proxy($object): Handle
    {
        $reflector = new ReflectionObject($object);

        foreach ($reflector->getMethods() as $method) {
            if (
                $method->isStatic() ||
                $method->isPrivate() ||
                $method->isConstructor() ||
                $method->isDestructor()
            ) {
                continue;
            }

            $name = $method->getName();

            if ($this->class->hasMethod($name)) {
                $method->setAccessible(true);

                $this->stub($name)->doesWith(
                    function ($arguments) use ($method, $object) {
                        return $method->invokeArgs($object, $arguments->all());
                    },
                    [],
                    false,
                    true,
                    false
                );
            }
        }

        return $this;
    }