private DataTypeComponent getBitfieldByOffsets(Structure full, DataTypeComponent partDTC) {
		BitFieldDataType partBF = (BitFieldDataType) partDTC.getDataType();

		DataTypeComponent fullDTC = full.getComponentContaining(partDTC.getOffset());
		if (fullDTC == null) {
			return null;
		}
		
		int fullNumComp = full.getNumComponents();
		for(int fullOrdinal = fullDTC.getOrdinal(); fullOrdinal < fullNumComp; fullOrdinal++) {
			fullDTC = full.getComponent(fullOrdinal);
			if (!(fullDTC.getDataType() instanceof BitFieldDataType) ||
				fullDTC.getOffset() > partDTC.getOffset()) {
				break;
			}
			BitFieldDataType fullBF = (BitFieldDataType) fullDTC.getDataType();
			if (fullDTC.getOffset() == partDTC.getOffset() &&
				fullBF.getBitOffset() == partBF.getBitOffset() &&
				fullBF.getBitSize() == partBF.getBitSize()) {
				return fullDTC;
			}
		}

		return null;
	}
Returns true if one union is a subset of another union.
<p>
Each component of the candidate partial union must be present in the 'full'
union and must be 'equiv'.
<p>
Order of components is ignored, except for unnamed components, which receive
a default name created using their ordinal position.

@param full             {@link Union} datatype that is expected to be a
                        superset of the next param.
@param part             {@link Union} datatype that is expected to be a
                        subset of the previous param.
@param visitedDataTypes identity map of datatypes to prevent loops.
@return true if part is a subset (or equal) to full.
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/dwarf/DWARFDataTypeConflictHandler.java