}  try { String audioDeviceClassName = (String) java.security.AccessController.doPrivileged( new java.security.PrivilegedAction() { public Object run() { return System.getProperty("j3d.audiodevice"); } });  if (audioDeviceClassName == null) { throw new UnsupportedOperationException("No AudioDevice specified"); }  Class audioDeviceClass = Class.forName(audioDeviceClassName); Class physEnvClass = PhysicalEnvironment.class; Constructor audioDeviceConstructor = audioDeviceClass.getConstructor(new Class[] {physEnvClass}); PhysicalEnvironment[] args = new PhysicalEnvironment[] { physicalEnvironment }; AudioEngine3DL2 mixer = (AudioEngine3DL2) audioDeviceConstructor.newInstance(args); mixer.initialize(); return mixer; } catch (Throwable e) { e.printStackTrace(); physicalEnvironment.setAudioDevice(null); System.err.println("Java 3D: audio is disabled"); return null; }
    public AudioDevice createAudioDevice() {	if (physicalEnvironment != null) {	    AudioDevice3DL2 mixer = new JavaSoundMixer(physicalEnvironment);            mixer.initialize();            return mixer;        }	else	    return null;    }