code: public String fileNameString() {
          BigInteger bigSiteId = BigInteger.valueOf(getSiteId());
          BigInteger bigBlockCounter = BigInteger.valueOf(getBlockId());
          final BigInteger BIT_64 = BigInteger.ONE.shiftLeft(64);
  
          if(bigSiteId.signum() < 0) {
              bigSiteId = bigSiteId.add(BIT_64);
          }
          if(bigBlockCounter.signum() < 0) {
              bigBlockCounter = bigBlockCounter.add(BIT_64);
          }
          return bigSiteId.toString() + "___" + bigBlockCounter.toString() + ".block";
      }
docs: Return a string of the form "siteId___blockId".  This is used
  for file names and not for displaying in, say, error messages.
  It would be weird to have a file names with minus signs,
  so format the IDs as unsigned.
  
  @return A string of the form "SID___BLOCKID.block" where SID and BLOCKID are unsigned.