UseMode getMethodUsage(String mthd) {
      MethodCountData mcd = method_data.get(mthd);
      if (mcd == null) {
        int idx0 = mthd.indexOf("(");
        if (idx0 < 0) return UseMode.NONE;
        String mthd0 = mthd.substring(0, idx0);
        String mthd1 = mthd.substring(idx0);
        for (Map.Entry<String, MethodCountData> ent : method_data.entrySet()) {
          String nm = ent.getKey();
          nm = nm.replace('/', '.');
          int idx = nm.indexOf("(");
          if (idx < 0) continue;
          if (mthd0.equals(nm.substring(0, idx))) {
            if (BumpLocation.compareParameters(mthd1, nm.substring(idx))) {
              mcd = ent.getValue();
              method_data.put(mthd, mcd);
              break;
            }
          }
        }
      }

      if (mcd != null) {
        if (mcd.getTopCount() > 0) return UseMode.DIRECT;
        if (mcd.getCalledCount() > 0) return UseMode.INDIRECT;
      }
      return UseMode.NONE;
    }