code: public String param(String path,String key) {
  		Integer val = params.get(key); // :key or key
  		if(val!=null) {
  			int start = val & 0xFFFF;
  			int end = (val >> 16) & 0xFFFF;
  			int idx = -1;
  			int i;
  			for(i=0;i<start;++i) {
  				idx = path.indexOf('/',idx+1);
  				if(idx<0)break;
  			}
  			if(i==start) { 
  				++idx;
  				if(end==0) {
  					end = path.indexOf('/',idx);
  					if(end<0)end=path.length();
  				} else {
  					end=path.length();
  				}
  				return path.substring(idx,end);
  			} else if(i==start-1) { // if last spot was left blank, i.e. :key*
  				return "";
  			}
  		}
  		return null;
  	}
docs: /*
  This is the second of the param evaluation functions.  First, we look up to see if there is
  any reference by key in the params Map created by the above.
  
  The resulting Integer, if not null, is split high/low order into start and end.
  We evaluate the string for '/', rather than splitting into  String[] to avoid the time/mem needed
  We traverse to the proper field number for slash, evaluate the end (whether wild card or no),
  and return the substring.
  
  The result is something less than .003 milliseconds per evaluation