protected function getMethodDefinitions($interface)
    {
        $definitions = [];

        try {
            $reflection = new ReflectionClass($interface);

            if (! $reflection->isInterface()) {
                throw new InvalidArgumentException("{$interface} must be an interface.");
            }

            foreach ($reflection->getMethods() as $method) {
                $definition = 'public function ';

                $definition .= $method->getName();
                $definition .= $this->renderMethodParameters($method);
                $definition .= $this->renderMethodReturnType($method);
                $definition .= $this->renderMethodBody($method);

                $definitions[] = $definition;
            }
        } catch (Throwable $e) {
           Log::channel('homer')->warning("Reflect {$interface} failed.", [
               'exception' => $e,
           ]);

            throw $e;
        }

        return implode("\n\n", $definitions);
    }