docs: public void init(Object env, Map<String,Object> properties, Object applet)
      {
          if (properties == null)
              properties = new Hashtable<String,Object>();
          if (m_properties == null)
              m_properties = properties;
          else
              m_properties.putAll(properties);
          m_mapTasks = new HashMap<Task,RemoteTask>();
          if (applet != null)
              m_sApplet = applet;
          try   {
              Class.forName("javax.jnlp.PersistenceService"); // Test if this exists
              this.setMuffinManager(new MuffinManager(this));
              if (this.getMuffinManager().isServiceAvailable())
                  if ((this.getProperty(Params.REMOTE_HOST) == null) || (this.getProperty(Params.REMOTE_HOST).length() == 0))
                      this.setProperty(Params.REMOTE_HOST, this.getAppServerName());
          } catch (Exception ex)  { // Test for JNLP
          }
          String strUser = this.getProperty(Params.USER_ID);
          if (strUser == null) // if (strUser.length() == 0) then you don't want the current sys username
              if (this.getProperty(Params.USER_NAME) == null)
                  if (this.getMuffinManager() != null)
          {
              strUser = this.getMuffinManager().getMuffin(Params.USER_ID);
              this.setProperty(Params.USER_ID, strUser);   // User name is required
          }
          if (strUser == null) // if (strUser.length() == 0) then you don't want the current sys username
              if (this.getProperty(Params.USER_NAME) == null)
          {
              try   {
                  strUser = System.getProperties().getProperty("user.name");
                  this.setProperty(Params.USER_NAME, strUser);   // User name is required
              } catch (java.security.AccessControlException ex) {
                  // Ignore this, I'm probably running in an Applet
              }
          }
          try {	// Since I send this over the wire, make sure I'm using the default dom implementation
  	        System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
          } catch (Exception e) {	// Ignore this error
          }
          if (Util.getPortableImageUtil() == null)
          {
              PortableImageUtil portableImageUtil = null;
              try   {
                  Class.forName("javax.swing.ImageIcon"); // Test if swing exists
                  portableImageUtil = (PortableImageUtil)ClassServiceUtility.getClassService().makeObjectFromClassName(SWING_IMAGE_UTIL);
              } catch (Exception ex)  { // Android
                  portableImageUtil = (PortableImageUtil)ClassServiceUtility.getClassService().makeObjectFromClassName(ANDROID_IMAGE_UTIL);
              }
              if (portableImageUtil == null)  // Sometime OSGi has a hard time finding javax
                  portableImageUtil = (PortableImageUtil)ClassServiceUtility.getClassService().makeObjectFromClassName(SWING_IMAGE_UTIL);
              Util.setPortableImageUtil(portableImageUtil);
          }
      }