docs: public static InitialContext findOrCreate(Hashtable<?,?> environment) throws NamingException{
  		if (found){
  			return findDefault(environment);
  		}
  		
  		InitialContext ctx = null;
  		NamingException lastE = null;
  		
  		synchronized (InitialContextFinder.class){
  			// get and test if the initial context is usable
  			try {
  				ctx = findDefault(environment);
  			} catch (NamingException e) {
  				lastE = e;
  			}
  			if (ctx != null){
  				try {
  					@SuppressWarnings("unused")
  					Object o = ctx.lookup(InitialContextFinder.class.getName());
  				} catch (NoInitialContextException e) {
  					ctx = null;
  				} catch (NamingException e) {
  					lastE = e;
  				}
  			}
  			
  			// create one if needed
  			if (ctx == null){
  				try {
  					ctx = createFSContext();
  				} catch (NamingException e) {
  					lastE = e;
  				}
  			}
  			
  			if (ctx != null){
  				found = true;
  				return ctx;
  			}else{
  				if (lastE != null){
  					throw lastE;
  				}else{
  					throw new NamingException("Can't find InitialContext.");
  				}
  			}
  		}
  		
  	}