private function internalChangingHooks($key, $value, $oldValue = null, $type = 'insert')
    {
        switch (trim(strtolower($type))) {
            case 'update':
                $hook = 'updateHook';
                if (method_exists($this, $hook)) {
                    $this->$hook($key, $value, $oldValue);
                }
                break;
            case 'remove':
                $hook = 'removeHook';
                if (method_exists($this, $hook)) {
                    $this->$hook($key, $oldValue);
                }
                break;
            case 'insert':
                $hook = 'insertHook';
                if (method_exists($this, $hook)) {
                    $this->$hook($key, $value);
                }
                break;
        }
    }