private function callMethod(
        StateInterface $state,
        string &$methodName,
        array &$arguments,
        string &$scopeVisibility,
        callable &$callback
    ) : ProxyInterface {
        $callerStatedClass = $this->getCallerStatedClassName();
        $this->pushCallerStatedClassName($state);

        //Call it
        try {
            $state->executeClosure($this, $methodName, $arguments, $scopeVisibility, $callerStatedClass, $callback);
        } catch (\Throwable $e) {
            //Restore stated class name stack
            $this->popCallerStatedClassName();

            throw $e;
        }

        //Restore stated class name stack
        $this->popCallerStatedClassName();

        return $this;
    }