protected function _decodeFile( $fileName, &$ttl = null )
    {
        if ( !is_file( $fileName ) || false === ( $_json = file_get_contents( $fileName ) ) || empty( $_json ) )
        {
            return false;
        }

        if ( false === ( $_stored = json_decode( $_json, true ) ) || JSON_ERROR_NONE != json_last_error() || !is_array( $_stored ) )
        {
            return false;
        }

        if ( array_key_exists( '.ttl', $_stored ) )
        {
            $ttl = (integer)$_stored['.ttl'];
        }
        else
        {
            $ttl = -1;
        }

        return
            array_key_exists( '.data', $_stored )
                ? ( @unserialize( $_stored['.data'] ) ?: $_stored['.data'] )
                : null;
    }