int (final int cellIndex) { boolean canShrink = true; boolean canGrow = false; boolean wantGrow = false; boolean weakCanGrow = true; boolean weakWantGrow = true; int countOfBelongingComponents = 0; for (int i = 0; i < getComponentCount(); i++) { if (!componentBelongsCell(i, cellIndex)){ continue; } countOfBelongingComponents++; final int p = getSizePolicy(i); final boolean thisCanShrink = (p & GridConstraints.SIZEPOLICY_CAN_SHRINK) != 0; final boolean thisCanGrow = (p & GridConstraints.SIZEPOLICY_CAN_GROW) != 0; final boolean thisWantGrow = (p & GridConstraints.SIZEPOLICY_WANT_GROW) != 0; if (getCell(i) == cellIndex && mySpansAfterElimination[i] == 1) { canShrink &= thisCanShrink; canGrow |= thisCanGrow; wantGrow |= thisWantGrow; } if (!thisCanGrow) { weakCanGrow = false; } if (!thisWantGrow) { weakWantGrow = false; } } return (canShrink ? GridConstraints.SIZEPOLICY_CAN_SHRINK : 0) | (canGrow || (countOfBelongingComponents > 0 && weakCanGrow) ? GridConstraints.SIZEPOLICY_CAN_GROW : 0) | (wantGrow || (countOfBelongingComponents > 0 && weakWantGrow) ? GridConstraints.SIZEPOLICY_WANT_GROW : 0); }