boolean parseKeyFilterRange(Key workKey, ProtoTerm protoTerm) {

        workKey.clear();
        int c = getNonWhiteChar();
        back();
        if (c == ':') {
            workKey.append(Key.BEFORE);
        } else {
            if (!parseKeySegment(workKey))
                return false;
        }

        protoTerm._leftBytes = segmentBytes(workKey);
        protoTerm._rightBytes = null;

        if (matchNonWhiteChar(':')) {
            workKey.clear();
            c = getNonWhiteChar();
            back();
            if (c == ')' || c == ']' || c == ',' || c == '}' || c == -1) {
                workKey.append(Key.AFTER);
            } else {
                if (!parseKeySegment(workKey))
                    return false;
            }
            protoTerm._rightBytes = segmentBytes(workKey);
        }
        return true;
    }