private List<Register> computeRegisters() {
		List<Register> regList = new LinkedList<>();
		List<Register> unprocessed = new LinkedList<>(registerList);

		int bitSize = 1;
		while (unprocessed.size() > 0) {
			int nextLargerSize = Integer.MAX_VALUE;
			Iterator<Register> it = unprocessed.iterator();
			while (it.hasNext()) {
				Register register = it.next();
				if (register.getBitLength() == bitSize) {
					Register[] children = getChildren(register, regList);
					register.setChildRegisters(children);
					regList.add(register);
					it.remove();
				}
				else {
					nextLargerSize = Math.min(nextLargerSize, register.getBitLength());
				}
			}
			bitSize = nextLargerSize;
		}
		return registerList;
	}
Compute current register collection and instantiate a {@link RegisterManager}
@return new register manager instance
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/RegisterBuilder.java