@Nonnull
	private static KtType mapType(@Nonnull MetadataNameResolver res, @Nonnull ProtoBuf.Type type) {
		String name;
		if (type.hasClassName())
			name = res.resolve(type.getClassName());
		else if (type.hasTypeParameter())
			name = res.resolve(type.getTypeParameter());
		else if (type.hasTypeParameterName())
			name = res.resolve(type.getTypeParameterName());
		else if (type.hasTypeAliasName())
			name = res.resolve(type.getTypeAliasName());
		else
			name = "Unknown";
		List<KtType> arguments = newList(type.getArgumentCount());
		for (var argument : type.getArgumentList())
			arguments.add(mapType(res, argument.getType()));
		KtNullability nullability;
		if (type.hasNullable())
			nullability = type.getNullable() ? KtNullability.NULLABLE : KtNullability.NONNULL;
		else
			nullability = KtNullability.UNKNOWN;
		return new KtType(name, arguments, nullability);
	}
@param visitor
		Visitor of a kotlin class with a {@code @Metadata} annotation to extract information from.

@return Extracted class model from the {@code @Metadata} or {@code null} if no annotation was found.
recaf-core/src/main/java/software/coley/recaf/util/kotlin/KotlinMetadata.java