protected function _getFileHandle($file, $mode = self::FILE_MODE_READ)
    {
        // get unique Id by file
        $uid = $this->_getUid($file);

        // check if any usable getMetaComponents exists
        if (!isset($this->fileHandle[$uid]) || $this->fileHandle[$uid]['runtimeEnvironment'] != $mode) {
            // create getMetaComponents
            $this->fileHandle[$uid] = array(
                'runtimeEnvironment'   => $mode,
                'getMetaComponents' => $this->_fopen(
                    $file,
                    $mode
                )
            );
        }

        // return the correct getMetaComponents
        return $this->fileHandle[$uid]['getMetaComponents'];
    }