code: private int getLineNumber(int pc) {
  		LineNumberTable lnt = getMethod().getLineNumberTable();
  		if (lnt == null) {
  			return pc;
  		}
  
  		LineNumber[] lns = lnt.getLineNumberTable();
  		if (lns == null) {
  			return pc;
  		}
  
  		if (pc > lns[lns.length - 1].getStartPC()) {
  			return lns[lns.length - 1].getLineNumber();
  		}
  
  		int lo = 0;
  		int hi = lns.length - 2;
  		int mid = 0;
  		while (lo <= hi) {
  			mid = (lo + hi) >>> 1;
  			if (pc < lns[mid].getStartPC()) {
  				hi = mid - 1;
  			} else if (pc >= lns[mid + 1].getStartPC()) {
  				lo = mid + 1;
  			} else {
  				break;
  			}
  		}
  
  		return lns[mid].getLineNumber();
  	}
docs: returns the source line number for the pc, or just the pc if the line number
  table doesn't exist
  
  @param pc current pc
  @return the line number