static public ClangToken buildToken(int node, ClangNode par, Decoder decoder,
			PcodeFactory pfactory) throws DecoderException {
		ClangToken token = null;
		if (node == ELEM_VARIABLE.id()) {
			token = new ClangVariableToken(par);
		}
		else if (node == ELEM_OP.id()) {
			token = new ClangOpToken(par);
		}
		else if (node == ELEM_SYNTAX.id()) {
			token = new ClangSyntaxToken(par);
		}
		else if (node == ELEM_BREAK.id()) {
			token = new ClangBreak(par);
		}
		else if (node == ELEM_FUNCNAME.id()) {
			token = new ClangFuncNameToken(par, null);
		}
		else if (node == ELEM_TYPE.id()) {
			token = new ClangTypeToken(par);
		}
		else if (node == ELEM_COMMENT.id()) {
			token = new ClangCommentToken(par);
		}
		else if (node == ELEM_LABEL.id()) {
			token = new ClangLabelToken(par);
		}
		else if (node == ELEM_FIELD.id()) {
			token = new ClangFieldToken(par);
		}
		else if (node == ELEM_VALUE.id()) {
			token = new ClangCaseToken(par);
		}
		else {
			throw new DecoderException("Expecting token element");
		}
		token.decode(decoder, pfactory);
		return token;
	}
Decode one specialized token from the current position in an encoded stream.  This
serves as a factory for allocating the various objects derived from ClangToken
@param node is the particular token type (already) decoded from the stream
@param par is the text grouping which will contain the token
@param decoder is the decoder for the stream
@param pfactory is used to look up p-code objects associated with tokens
@return the new ClangToken
@throws DecoderException for problems decoding the stream
Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/ClangToken.java