protected DataTypeComponent[] getComps(MemBuffer buf) {
		Address addr = buf.getAddress();
		DataTypeComponent[] comps = map.get(addr);
		if (comps == null) {
			comps = getAllComponents(buf);
			if (comps == null) {
				// data-type not valid at buf location
				return null;
			}
			map.put(addr, comps);
		}
		return comps;
	}
Gets the number of component data types in this data type.
@param buf a memory buffer to be used by dataTypes that change depending on
their data context. 
@return the number of components that make up this data prototype
  - if this is an Array, return the number of elements in the array.
  - if this datatype is a subcomponent of another datatype and it
     won't fit in it's defined space, return -1.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/DynamicDataType.java