private void decodeStream(Decoder decoder) {
		if (decoder == null || decoder.isEmpty()) {
			return;
		}
		try {
			hfunc = null;
			hparamid = null;
			docroot = null;
			int docel = decoder.openElement(ELEM_DOC);
			for (;;) {
				int el = decoder.peekElement();
				if (el == 0) {
					break;
				}
				if (el == ELEM_FUNCTION.id()) {
					if (hfunc == null) {
						hfunc = new HighFunction(function, language, compilerSpec, dtmanage);
						hfunc.decode(decoder);
					}
					else {		// TODO: This is an ugly kludge to get around duplicate XML tag names
						docroot = ClangMarkup.buildClangTree(decoder, hfunc);
						if (docroot == null) {
							errMsg = "Unable to decode C markup";
						}
					}
				}
				else if (el == ELEM_PARAMMEASURES.id()) {
					hparamid = new HighParamID(function, language, compilerSpec, dtmanage);
					hparamid.decode(decoder);
				}
				else {
					errMsg = "Unknown decompiler tag";
					return;
				}
			}
			decoder.closeElement(docel);
		}
		catch (DecoderException e) {		// Error while walking the DOM
			errMsg = e.getMessage();
			hfunc = null;
			hparamid = null;
			return;
		}
		catch (Exception e) {				// Exception with the underlying stream
			errMsg = e.getMessage();
			hfunc = null;
			hparamid = null;
			return;
		}
	}
Converts the C code results into an unadorned string.
The returned object contains both the whole function
and just the prototype as separate strings containing
raw C code
@return a DecompiledFunction object
Ghidra/Features/Decompiler/src/main/java/ghidra/app/decompiler/DecompileResults.java