byte (boolean isDirectory, boolean isSpecial, boolean isSymlink, boolean isHidden, boolean isWritable, CaseSensitivity sensitivity) { byte flags = 0; if (isSymlink) flags |= SYM_LINK; if (isHidden) flags |= HIDDEN; if (!isWritable) flags |= READ_ONLY; int type_flags = (isSpecial ? 0b11 : isDirectory ? 0b10 : 0b01) << TYPE_SHIFT; flags |= type_flags; flags = packSensitivityIntoFlags(isDirectory ? sensitivity : CaseSensitivity.UNKNOWN, flags); return flags; }