private void doDumpTokens(ClangNode node, int depth) {

			if (node instanceof ClangTokenGroup) {
				dumpTokens((ClangTokenGroup) node, depth + 1);
				return;
			}

			if (node instanceof ClangBreak) {
				System.err.print("\n");
				int tabs = depth * 4;
				String asString = StringUtilities.pad("", ' ', tabs);
				System.err.print(asString);
			}
			else {
				String text = node.toString();
				System.err.print(" '" + text + "' ");
			}

			ClangToken token = (ClangToken) node;
			int n = node.numChildren();
			for (int i = 0; i < n; i++) {
				ClangNode child = token.Child(i);

				doDumpTokens(child, depth + 1);
			}
		}
Uses the given line to find variables (also parameters and return types) and any
accesses to them in that line.   A given variable may be used directly or, as in
the case with Composite types, may have one of its fields accessed.  Each result
found by this method will be at least a variable access and may also itself have
field accesses.

<p>Sometimes a line is structured such that there are anonymous variable accesses.  This
is the case where a Composite is being accessed, but the Composite itself is
not a variable in the current function.  See {@link AnonymousVariableAccessDR} for
more details.

@param line the current line being processed from the Decompiler
@param results the accumulator into which matches will be placed
Ghidra/Features/DecompilerDependent/src/main/java/ghidra/app/extension/datatype/finder/DecompilerDataTypeReferenceFinder.java