matchlen = 7;
matchlen = 13;
    private static int getMask(String actions)    {        boolean seencomma = false;        int mask = ACTION_NONE;        if (actions == null)        {            return (mask);        }        char[] a = actions.toCharArray();        int i = a.length - 1;        if (i < 0)            return (mask);        while (i != -1)        {            char c;            // skip whitespace            while ((i!=-1) && ((c = a[i]) == ' ' ||                               c == '\r' ||                               c == '\n' ||                               c == '\f' ||                               c == '\t'))                i--;            // check for the known strings            int matchlen;            if (i >= 6 && (a[i-6] == 'p' || a[i-6] == 'P') &&                (a[i-5] == 'r' || a[i-5] == 'R') &&                (a[i-4] == 'o' || a[i-4] == 'O') &&                (a[i-3] == 'v' || a[i-3] == 'V') &&                (a[i-2] == 'i' || a[i-2] == 'I') &&                (a[i-1] == 'd' || a[i-1] == 'D') &&                (a[i] == 'e' || a[i] == 'E'))            {                matchlen = 7;                mask |= ACTION_PROVIDE | ACTION_REQUIRE;            }            else if (i >= 6 && (a[i-6] == 'r' || a[i-6] == 'R') &&                     (a[i-5] == 'e' || a[i-5] == 'E') &&                     (a[i-4] == 'q' || a[i-4] == 'Q') &&                     (a[i-3] == 'u' || a[i-3] == 'U') &&                     (a[i-2] == 'i' || a[i-2] == 'I') &&                     (a[i-1] == 'r' || a[i-1] == 'R') &&                     (a[i] == 'e' || a[i] == 'E'))            {                matchlen = 7;                mask |= ACTION_REQUIRE;            }			else if (i >= 3 && (a[i-3] == 'h' || a[i-3] == 'H') &&					 (a[i-2] == 'o' || a[i-2] == 'O') &&					 (a[i-1] == 's' || a[i-1] == 'S') &&					 (a[i] == 't' || a[i] == 'T'))			{				matchlen = 4;				mask |= ACTION_HOST;			}			else            {                // parse error                throw new IllegalArgumentException("invalid permission: " +                                                   actions);            }            // make sure we didn't just match the tail of a word            // like "ackbarfrequire".  Also, skip to the comma.            seencomma = false;            while (i >= matchlen && !seencomma)            {                switch (a[i-matchlen])                {                    case ',':                        seencomma = true;                        /*FALLTHROUGH*/                    case ' ':                    case '\r':                    case '\n':                    case '\f':                    case '\t':                        break;                    default:                        throw new IllegalArgumentException("invalid permission: " +                                                           actions);                }                i--;            }            // point i at the location of the comma minus one (or -1).            i -= matchlen;        }        if (seencomma)        {            throw new IllegalArgumentException("invalid permission: " +                                               actions);        }        return (mask);    }