if (cachedMetaIndex == null || cachedDataIndex == null || cachedCryptoParams == null) {
// move the cursor to the beginning of the tail, containing: offset to the
// meta block index, version and magic
// Move the cursor to grab the version and the magic first
fin.seek(fileLength - Magic.size() - Version.size());
version = new Version(fin);
Magic.readAndVerify(fin);
// Do a version check
if (!version.compatibleWith(BCFile.API_VERSION) && !version.equals(BCFile.API_VERSION_1)) {
throw new RuntimeException("Incompatible BCFile fileBCFileVersion.");