public void start() {
        System.out.println("Applet start was called. Application Mangaer: "+ApplicationManager.manager);

        startCount ++;
        
        if (ApplicationManager.manager == null) {
            new ApplicationManager(this, new Properties()).launch(null);
            ApplicationManager.manager.start();
        }
        else {
            boolean restartable = ApplicationManager.manager.getBooleanProperty("me4se.restartable", true);
        
            Log.log(Log.APPLICATION_EVENT, "Calling ApplicationManager.manager.start(); restartable: "+restartable);

            if(restartable || startCount > 2){ // avoid death spiral
	            ApplicationManager.manager.destroy(true, true); // notify, killall
              
	            new ApplicationManager(this, new Properties()).launch(null);
                ApplicationManager.manager.start();
            }
            else { 
            	String containerUrl = getDocumentBase().toString();
            	int cut = containerUrl.indexOf("frld=");
            	if(cut == -1){
            		containerUrl += containerUrl.indexOf('?') == -1 ? '?' : '&'; 
            	}
            	else {
            		containerUrl = containerUrl.substring(0, cut);
            	}
            	
                try {
					getAppletContext().showDocument(
							new URL(containerUrl+"frld="+Long.toString(System.currentTimeMillis(), 36)));
				} catch (MalformedURLException e) {
					e.printStackTrace();
					throw new RuntimeException(""+e);
				}
            }
        }
    }