docs: public static String identifier(SourceCode cfml, boolean throwError, boolean allowColon) throws TemplateException {
  	int start = cfml.getPos();
  
  	if (!cfml.isCurrentBetween('a', 'z') && !cfml.isCurrent('_')) {
  	    if (throwError) throw new TemplateException(cfml, "Invalid Identifier, the following character cannot be part of a identifier [" + cfml.getCurrent() + "]");
  	    return null;
  	}
  	do {
  	    cfml.next();
  	    if (!(cfml.isCurrentBetween('a', 'z') || cfml.isCurrentBetween('0', '9') || cfml.isCurrent('_') || (allowColon && cfml.isCurrent(':')) || cfml.isCurrent('-'))) {
  		break;
  	    }
  	}
  	while (cfml.isValidIndex());
  	return cfml.substring(start, cfml.getPos() - start);
      }