private void findUnindexedClosureStructTypes(TaskMonitor monitor) {
		// search for undiscovered go types that might be lurking in between already discovered
		// go rtti type structs.  (should only be auto-generated closure context struct types)
		// Most types will be discoverable from the containing gomoduledata's type list, but
		// autogenerated closure context structs are not added to that list.
		int foundCount = 0;
		int typeStructAlign = goBinary.getPtrSize();
		int typeStructMinSize =
			goBinary.getStructureMappingInfo(GoStructType.class).getStructureLength();
		List<TypeStructRange> typeRanges = typeOffsetIndex.entrySet()
				.stream()
				.map(entry -> new TypeStructRange(entry.getKey(),
					getAlignedEndOfTypeInfo(entry.getValue().type, typeStructAlign)))
				.sorted((o1, o2) -> Long.compareUnsigned(o1.start, o2.start))
				.toList();
		for (int i = 1; i < typeRanges.size()-1; i++) {
			TypeStructRange t1 = typeRanges.get(i);
			TypeStructRange t2 = typeRanges.get(i+1);
			
			long gapStart = t1.end;
			while ( t2.start - gapStart > typeStructMinSize ) {
				GoType goType = readTypeUnchecked(gapStart);
				if (goType == null ||
					!(goType instanceof GoStructType && goType.getSymbolName().isAnonType())) {
					gapStart += typeStructAlign;
					continue;
				}
				@SuppressWarnings("unused")
				TypeRec newTypeRec = getTypeRec(goType); // add to index
				gapStart = getAlignedEndOfTypeInfo(goType, typeStructAlign);
				foundCount++;
			}
		}
		Msg.info(this, "Discovered %d unindexed rtti types".formatted(foundCount));
	}
Discovers available golang types

@param monitor {@link TaskMonitor}
@throws IOException if error reading data or cancelled
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/rtti/GoTypeManager.java