} else if (node.hasDefined(CommonAttributes.DENY.getName())) {
return DenyAllFilter.getInstance();
} else if (node.hasDefined(CommonAttributes.LEVEL.getName())) {
return new LevelFilter(parseLevel(CommonAttributes.LEVEL.resolveModelAttribute(context, node)));
} else if (node.hasDefined(CommonAttributes.LEVEL_RANGE.getName())) {
final Level min = parseLevel(CommonAttributes.MIN_LEVEL.resolveModelAttribute(context, node));
final Level max = parseLevel(CommonAttributes.MAX_LEVEL.resolveModelAttribute(context, node));
final boolean minInclusive = CommonAttributes.MIN_INCLUSIVE.resolveModelAttribute(context, node).asBoolean();
final boolean maxInclusive = CommonAttributes.MAX_INCLUSIVE.resolveModelAttribute(context, node).asBoolean();
return new LevelRangeFilter(min, minInclusive, max, maxInclusive);
} else if (node.hasDefined(CommonAttributes.MATCH.getName())) {
return new RegexFilter(CommonAttributes.PATTERN.resolveModelAttribute(context, node).asString());