@SuppressWarnings({"unchecked", "restriction"}) public FixMessagePool( FixPoolFactory<FixMessage> fixPoolFactory, int poolSize, boolean useDefault) { if (fixPoolFactory == null) { fixPoolFactory = this; } int currentSize = 1; while (currentSize < poolSize) { currentSize = currentSize << 1; } poolSize = currentSize; fixMessageArr = new FixMessageContainer[poolSize]; for (int i = 0; i < poolSize; i++) { fixMessageArr[i] = new FixMessageContainer<FixMessage>(fixPoolFactory.create(useDefault)); } mask = poolSize - 1; objectPutPosition = poolSize; BASE_ADDR = NativeBytes.UNSAFE.arrayBaseOffset(FixMessageContainer[].class); ARR_INDEX = NativeBytes.UNSAFE.arrayIndexScale(FixMessageContainer[].class); TAIL_ADJUSTMENT = 31 - Integer.numberOfLeadingZeros((int) ARR_INDEX); }