internal override TrieIndexHeader GetHeader()
        {
            if (!_headers.ContainsKey(_headerFileName))
            {
                lock (_lockObject)
                {
                    if (!_headers.ContainsKey(_headerFileName))
                    {
                        _headers.Add(_headerFileName, TrieNodeHelperFileSystemExtensions.ReadHeaderFile(_headerFileName));
                    }
                }
            }

            return(_headers[_headerFileName]);
        }
        internal override TrieIndexHeader GetHeader()
        {
            // double checked initialization
            if (!_headerDictionary.ContainsKey(_headerFileName))
            {
                lock (_lockObject)
                {
                    if (!_headerDictionary.ContainsKey(_headerFileName))
                    {
                        var currentHeader = TrieNodeHelperFileSystemExtensions.ReadHeaderFile(_headerFileName);

                        _headerDictionary.Add(_headerFileName, currentHeader);
                    }
                }
            }

            TrieIndexHeader header = _headerDictionary[_headerFileName];

            return(header);
        }