private void cacheTreeInfo() {
		OpTplWalker walker = new OpTplWalker(rootState, -1);
		FlowSummary summary = walkTemplates(walker);

		delaySlotByteCnt = summary.delay;
		hasCrossBuilds = summary.hasCrossBuilds;
		if (summary.flowState != null) {
			flowStateList = summary.flowState;
			flowType = flowListToFlowType(summary.flowState);
		}
		else {
			flowStateList = new ArrayList<>();
			flowType = RefType.FALL_THROUGH;
		}

		flowStateListNamed = null;
		int numsects = language.numSections();
		if (numsects > 0) {
			flowStateListNamed = new ArrayList<>();
			for (int i = 0; i < numsects; ++i) {
				flowStateListNamed.add(null);
				walker = new OpTplWalker(rootState, i);
				summary = walkTemplates(walker);
				flowStateListNamed.set(i, summary.flowState);
			}
		}
	}
Walk the Constructor tree gathering ConstructStates which are flow destinations
(flowStateList) flowFlags and delayslot directives
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/processors/sleigh/SleighInstructionPrototype.java