docs: private Expression dynamic(Data data) throws TemplateException {
  	// Die Implementation weicht ein wenig von der Grammatik ab,
  	// aber nicht in der Logik sondern rein wie es umgesetzt wurde.
  
  	// get First Element of the Variable
  	Position line = data.srcCode.getPosition();
  	Identifier id = identifier(data, false, true);
  	if (id == null) {
  	    if (!data.srcCode.forwardIfCurrent('(')) return null;
  
  	    comments(data);
  	    Expression expr = assignOp(data);
  
  	    if (!data.srcCode.forwardIfCurrent(')')) throw new TemplateException(data.srcCode, "Invalid Syntax Closing [)] not found");
  	    comments(data);
  	    return expr;// subDynamic(expr);
  
  	}
  
  	Variable var;
  	comments(data);
  
  	// Boolean constant
  	if (id.getString().equalsIgnoreCase("TRUE")) {// || name.equals("YES")) {
  	    comments(data);
  	    return id.getFactory().createLitBoolean(true, line, data.srcCode.getPosition());
  	}
  	else if (id.getString().equalsIgnoreCase("FALSE")) {// || name.equals("NO")) {
  	    comments(data);
  	    return id.getFactory().createLitBoolean(false, line, data.srcCode.getPosition());
  	}
  	else if (id.getString().equalsIgnoreCase("NULL") && !data.srcCode.isCurrent('.') && !data.srcCode.isCurrent('[')) {
  	    comments(data);
  	    return id.getFactory().createNullConstant(line, data.srcCode.getPosition());
  	}
  
  	// Extract Scope from the Variable
  	var = startElement(data, id, line);
  	var.setStart(line);
  	var.setEnd(data.srcCode.getPosition());
  	return var;
      }