BigInteger size = new BigInteger(Integer.toString(capacity * 3/2));
BigInteger size = new BigInteger(Integer.toString(((capacity*3)+1)/2));
  private void init (PersistentByteMap m, File f, int capacity, int strtabSize)    throws IOException   {    f.createNewFile();    RandomAccessFile raf = new RandomAccessFile(f, "rw");    {              // The user has explicitly provided a size for the table.      // We're going to make that size prime.  This isn't      // strictly necessary but it can't hurt.      //      // We expand the size by 3/2 because the hash table is      // intolerably slow when more than 2/3 full.            BigInteger size = new BigInteger(Integer.toString(capacity * 3/2));      BigInteger two = BigInteger.ONE.add(BigInteger.ONE);            if (size.getLowestSetBit() != 0) // A hard way to say isEven()	size = size.add(BigInteger.ONE);          while (! size.isProbablePrime(10))	size = size.add(two);            this.capacity = capacity = size.intValue();    }    table_base = 64;    string_base = table_base + capacity * TABLE_ENTRY_SIZE;    string_size = 0;    file_size = string_base;    elements = 0;    int totalFileSize = string_base + strtabSize;    // Create the file; this rounds up the size of the file to a fixed    // number of 4k pages.    byte[] _4k = new byte[4096];    for (long i = 0; i < totalFileSize; i+= 4096)      raf.write(_4k);            fc = raf.getChannel();    buf = fc.map(FileChannel.MapMode.READ_WRITE, 0, raf.length());    for (int i = 0; i < capacity; i++)      putKeyPos(UNUSED_ENTRY, i);            putWord(0x67636a64, MAGIC);    putWord(0x01, VERSION);    putWord(capacity, CAPACITY);    putWord(table_base, TABLE_BASE);    putWord(string_base, STRING_BASE);    putWord(file_size, FILE_SIZE);    putWord(elements, ELEMENTS);    buf.force();    length = fc.size();    string_size = 0;  }     