StringTokenizer pkgPrefix = new StringTokenizer (ph_search_path, "|");
StringTokenizer pkgPrefix = new StringTokenizer (propVal, "|");
    getURLStreamHandler (String protocol)  {    URLStreamHandler ph;    // First, see if a protocol handler is in our cache.    if (cache_handlers)      {        if ((ph = (URLStreamHandler) ph_cache.get(protocol)) != null)          return ph;      }    // If a non-default factory has been set, use it to find the protocol.    if (factory != null)      {	ph = factory.createURLStreamHandler (protocol);      }    else if (protocol.equals ("core"))      { 	ph = new gnu.gcj.protocol.core.Handler();      }    else if (protocol.equals ("file"))      {	// This is an interesting case.  It's tempting to think that we	// could call Class.forName ("gnu.gcj.protocol.file.Handler") to	// get the appropriate class.  Unfortunately, if we do that the	// program will never terminate, because getURLStreamHandler is	// eventually called by Class.forName.	//	// Treating "file" as a special case is the minimum that will	// fix this problem.  If other protocols are required in a	// statically linked application they will need to be handled in	// the same way as "file".	ph = new gnu.gcj.protocol.file.Handler();      }    // Non-default factory may have returned null or a factory wasn't set.    // Use the default search algorithm to find a handler for this protocol.    if (ph == null)      {	// Get the list of packages to check and append our default handler	// to it, along with the JDK specified default as a last resort.	// Except in very unusual environments the JDK specified one shouldn't	// ever be needed (or available).	String propVal = System.getProperty("java.protocol.handler.pkgs");	propVal = (propVal == null) ? "" : (propVal + "|");	propVal = propVal + "gnu.gcj.protocol|sun.net.www.protocol";	// Finally loop through our search path looking for a match.	StringTokenizer pkgPrefix = new StringTokenizer (ph_search_path, "|");        	do          {            String clsName = pkgPrefix.nextToken() + "." + protocol + ".Handler";                     try              {                Object obj = Class.forName (clsName).newInstance();	                    if (!(obj instanceof URLStreamHandler))                  continue;                else                  ph = (URLStreamHandler) obj;              }            catch (Exception e)              {                // Can't instantiate; handler still null, go on to next element.              }          }	while ((ph == null ||		!(ph instanceof URLStreamHandler))               && pkgPrefix.hasMoreTokens());      }    // Update the hashtable with the new protocol handler.    if (ph != null        && cache_handlers)      if (ph instanceof URLStreamHandler)	ph_cache.put(protocol, ph);      else	ph = null;    return ph;  }