@Nonnull
	public AndroidClassInfoBuilder adaptFrom(@Nonnull DexProgramClass dexClass) {
		this.dexClass = dexClass;
		withName(dexClass.getTypeName().replace('.', '/'));
		withSuperName(dexClass.getSuperType().getTypeName().replace('.', '/'));
		withInterfaces(dexClass.getInterfaces().stream().map(i -> i.getTypeName().replace('.', '/')).toList());
		withAccess(dexClass.getAccessFlags().getAsCfAccessFlags());
		withSourceFileName(dexClass.getSourceFile() == null ? null : dexClass.getSourceFile().toString());
		withAnnotations(mapAnnos(dexClass.annotations()));
		withFields(mapFields(dexClass.fields()));
		withMethods(mapMethods(dexClass.methods()));
		withSignature(dexClass.getClassSignature().toString());
		InnerClassAttribute innerClasses = dexClass.getInnerClassAttributeForThisClass();
		if (innerClasses != null) {
			DexType outerType = innerClasses.getOuter();
			if (outerType != null) {
				withOuterClassName(outerType.getTypeName().replace('.', '/'));
			}
		}
		if (dexClass.hasEnclosingMethodAttribute()) {
			DexMethod enclosingMethod = dexClass.getEnclosingMethodAttribute().getEnclosingMethod();
			if (enclosingMethod != null) {
				withOuterMethodName(enclosingMethod.getName().toString());
				withOuterMethodDescriptor(enclosingMethod.getProto().toDescriptorString());
				withOuterClassName(enclosingMethod.getHolderType().getTypeName().replace('.', '/'));
			}
		}
		return this;
	}
Copies over values by pulling values from the contents of the given class model.

@param dexClass
		D8 Class structure to pull data from.

@return Builder.
recaf-core/src/main/java/software/coley/recaf/info/builder/AndroidClassInfoBuilder.java