private function __processDefaultMethodCall($name, $arguments)
    {
        if (self::$__defaultCallBehavior instanceof \Closure) {
            /** @var \Closure $handle */
            $handle = self::$__defaultCallBehavior;
            $handle = $handle->bindTo($this);
            return call_user_func_array($handle, $arguments);
        }

        switch(self::$__defaultCallBehavior) {
            case self::DEFAULT_BEHAVIOUR_RETURN_NULL:
                if ($name === '__toString') {
                    return '';
                }
                return null;

            case self::DEFAULT_BEHAVIOUR_RETURN_SELF:
                if ($name === '__toString') {
                    return '';
                }
                return $this;
        }

        throw new \BadMethodCallException(
            sprintf('Method %s::%s() does not exist', get_class($this), $name)
        );
    }