visible = sVisible == null ? true : Boolean.valueOf(sVisible).booleanValue();
if (sVisible != null && !Boolean.valueOf(sVisible).booleanValue()) flags &= ~(EclipseAppDescriptor.FLAG_VISIBLE); String sThread = configs[0].getAttribute(PT_APP_THREAD); if (PT_APP_THREAD_ANY.equals(sThread)) { flags |= EclipseAppDescriptor.FLAG_TYPE_ANY_THREAD; flags &= ~(EclipseAppDescriptor.FLAG_TYPE_MAIN_THREAD); } String sSingleton = configs[0].getAttribute(PT_APP_SINGLETON); if (sSingleton != null && !Boolean.valueOf(sSingleton).booleanValue()) flags &= ~(EclipseAppDescriptor.FLAG_SINGLETON);
	private EclipseAppDescriptor createAppDescriptor(IExtension appExtension) {		synchronized (apps) {			EclipseAppDescriptor appDescriptor = (EclipseAppDescriptor) apps.get(appExtension.getUniqueIdentifier());			if (appDescriptor != null)				return appDescriptor;			// the appDescriptor does not exist for the app ID; create it			IConfigurationElement[] configs = appExtension.getConfigurationElements();			boolean visible = true;			if (configs.length > 0) {				String sVisible = configs[0].getAttribute(PT_APP_VISIBLE);				visible = sVisible == null ? true : Boolean.valueOf(sVisible).booleanValue();			}			appDescriptor = new EclipseAppDescriptor(appExtension.getContributor().getName(), appExtension.getUniqueIdentifier(), visible, this);			// register the appDescriptor as a service			ServiceRegistration sr = (ServiceRegistration) AccessController.doPrivileged(new RegisterService(ApplicationDescriptor.class.getName(), appDescriptor, appDescriptor.getServiceProperties()));			appDescriptor.setServiceRegistration(sr);			// save the app descriptor in the cache			apps.put(appExtension.getUniqueIdentifier(), appDescriptor);			return appDescriptor;		}	}