code: function analyseEntry(p, count, tests) {
  		// console.log("analyse entry : ", p, count, p[count])
  		var optional = false,
  			inversed = false;
  		if (p[count] == "?") {
  			optional = true;
  			count++;
  		} else if (p[count] == '!') {
  			inversed = true;
  			count++;
  		}
  		if (p[count] == '(') // block
  			return analyseBlock(p, count, tests, optional, inversed);
  		else if (p[count] == '$') // block
  		{
  			tests.push(createEndTest(optional, inversed));
  			return ++count;
  		} else if (p[count] == '[') // disjonction
  			return analyseDisjonction(p, count, tests, optional, inversed);
  		else if (p[count + 1] == ":") // variable
  			return analyseVar(p, count, tests, optional, inversed);
  		else // key
  			return analyseKey(p, count, tests, optional, inversed);
  	}
docs: PRIVATES