@Override
	public int minMaskLevel(final String text, final int minMinLevel)
	{
		int level=minMinLevel;
		final CompiledZMask cset=getPreCompiledMask(text);
		for(final CompiledZMaskEntry entry : cset.entries())
		{
			switch(entry.maskType())
			{
			case _LEVEL: // -level
				{
					for(int v=0;v<entry.parms().length-1;v+=2)
					{
						switch((ZapperKey)entry.parms()[v])
						{
						case LVLGR: // +lvlgr
							level=((Integer)entry.parms()[v+1]).intValue()+1;
							break;
						case LVLGE: // +lvlge
							level=((Integer)entry.parms()[v+1]).intValue();
							break;
						case LVLLT: // +lvlt
							level=minMinLevel;
							break;
						case LVLLE: // +lvlle
							level=minMinLevel;
							break;
						case LVLEQ: // +lvleq
							level=((Integer)entry.parms()[v+1]).intValue();
							break;
						default:
							break;
						}
					}
				}
				break;
			case _CLASSLEVEL: // -classlevel
				{
					for(int v=0;v<entry.parms().length-1;v+=2)
					{
						switch((ZapperKey)entry.parms()[v])
						{
						case LVLGR: // +lvlgr
							level=((Integer)entry.parms()[v+1]).intValue()+1;
							break;
						case LVLGE: // +lvlge
							level=((Integer)entry.parms()[v+1]).intValue();
							break;
						case LVLLT: // +lvlt
							level=minMinLevel;
							break;
						case LVLLE: // +lvlle
							level=minMinLevel;
							break;
						case LVLEQ: // +lvleq
							level=((Integer)entry.parms()[v+1]).intValue();
							break;
						default:
							break;
						}
					}
				}
				break;
			case _MAXCLASSLEVEL: // -maxclasslevel
				{
					for(int v=0;v<entry.parms().length-1;v+=2)
					{
						switch((ZapperKey)entry.parms()[v])
						{
						case LVLGR: // +lvlgr
							level=((Integer)entry.parms()[v+1]).intValue()+1;
							break;
						case LVLGE: // +lvlge
							level=((Integer)entry.parms()[v+1]).intValue();
							break;
						case LVLLT: // +lvlt
							level=minMinLevel;
							break;
						case LVLLE: // +lvlle
							level=minMinLevel;
							break;
						case LVLEQ: // +lvleq
							level=((Integer)entry.parms()[v+1]).intValue();
							break;
						default:
							break;
						}
					}
				}
				break;
			case LVLGR: // +lvlgr
				level=minMinLevel;
				break;
			case LVLGE: // +lvlge
				level=minMinLevel;
				break;
			case LVLLT: // +lvlt
				level=((Integer)entry.parms()[0]).intValue();
				break;
			case LVLLE: // +lvlle
				level=((Integer)entry.parms()[0]).intValue()+1;
				break;
			case LVLEQ: // +lvleq
				level=minMinLevel;
				break;
			default:
				break;
			}
		}
		return level;
	}