private static void initialize( int apiVersion ) {
		if( initialized )
			return;
		initialized = true;

		if( !FlatSystemProperties.getBoolean( FlatSystemProperties.USE_NATIVE_LIBRARY, true ) )
			return;

		String classifier;
		String ext;
		boolean unknownArch = false;
		if( SystemInfo.isWindows_10_orLater && (SystemInfo.isX86 || SystemInfo.isX86_64 || SystemInfo.isAARCH64) ) {
			// Windows: requires Windows 10/11 (x86, x86_64 or aarch64)

			if( SystemInfo.isAARCH64 )
				classifier = "windows-arm64";
			else if( SystemInfo.isX86_64 )
				classifier = "windows-x86_64";
			else
				classifier = "windows-x86";

			ext = "dll";

			// Do not load jawt.dll (part of JRE) here explicitly because
			// the FlatLaf native library flatlaf.dll may be loaded very early on Windows
			// (e.g. from class com.formdev.flatlaf.util.SystemInfo) and before AWT is
			// initialized (and awt.dll is loaded). Loading jawt.dll also loads awt.dll.
			// In Java 8, loading jawt.dll before AWT is initialized may load
			// a wrong version of awt.dll if a newer Java version (e.g. 19)
			// is in PATH environment variable. Then Java 19 awt.dll and Java 8 awt.dll
			// are loaded at same time and calling JAWT_GetAWT() crashes the application.
			//
			// To avoid this, flatlaf.dll is not linked to jawt.dll,
			// which avoids loading jawt.dll when flatlaf.dll is loaded.
			// Instead, flatlaf.dll dynamically loads jawt.dll when first used,
			// which is guaranteed after AWT initialization.

		} else if( SystemInfo.isMacOS_10_14_Mojave_orLater && (SystemInfo.isAARCH64 || SystemInfo.isX86_64) ) {
			// macOS: requires macOS 10.14 or later (arm64 or x86_64)

			classifier = SystemInfo.isAARCH64 ? "macos-arm64" : "macos-x86_64";
			ext = "dylib";

		} else if( SystemInfo.isLinux ) {
			// Linux: x86_64 or aarch64 (but also supports unknown architectures)

			classifier = SystemInfo.isAARCH64 ? "linux-arm64"
				: (SystemInfo.isX86_64 ? "linux-x86_64"
					: "linux-" + sanitize( System.getProperty( "os.arch" ) ));
			ext = "so";
			unknownArch = !SystemInfo.isX86_64 && !SystemInfo.isAARCH64;

			// Load libjawt.so (part of JRE) explicitly because it is not found
			// in all Java versions/distributions.
			// E.g. not found in Java 13 and later from openjdk.java.net.
			// There seems to be also differences between distributions.
			// E.g. Adoptium Java 17 does not need this, but Java 17 from openjdk.java.net does.
			loadJAWT();
		} else
			return; // no native library available for current OS or CPU architecture

		// load native library
		NativeLibrary nativeLibrary = createNativeLibrary( classifier, ext, unknownArch );
		if( !nativeLibrary.isLoaded() )
			return;

		// check API version (and check whether library works)
		try {
			int actualApiVersion = getApiVersion();
			if( actualApiVersion != apiVersion ) {
				LoggingFacade.INSTANCE.logSevere( "FlatLaf: Wrong API version in native library (expected "
					+ apiVersion + ", actual " + actualApiVersion + "). Ignoring native library.", null );
				return;
			}
		} catch( Throwable ex ) {
			// could be a UnsatisfiedLinkError in case that loading native library
			// from temp directory was blocked by some OS security mechanism
			LoggingFacade.INSTANCE.logSevere( "FlatLaf: Failed to get API version of native library. Ignoring native library.", ex );
			return;
		}

		FlatNativeLibrary.nativeLibrary = nativeLibrary;
	}
Loads native library (if available) and returns whether loaded successfully.
Returns {@code false} if no native library is available.
flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeLibrary.java