/**
   * Loads the AdnRecords in efid and returns them as a List of AdnRecords
   *
   * <p>throws SecurityException if no READ_CONTACTS permission
   *
   * @param efid the EF id of a ADN-like ICC
   * @return List of AdnRecord
   */
  public List<AdnRecord> getAdnRecordsInEf(int efid) {

    if (phone.getContext().checkCallingOrSelfPermission(android.Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {
      throw new SecurityException("Requires android.permission.READ_CONTACTS permission");
    }

    efid = updateEfForIccType(efid);
    if (DBG) logd("getAdnRecordsInEF: efid=" + efid);

    synchronized (mLock) {
      checkThread();
      Message response = mBaseHandler.obtainMessage(EVENT_LOAD_DONE);
      adnCache.requestLoadAllAdnLike(efid, adnCache.extensionEfForEf(efid), response);
      try {
        mLock.wait();
      } catch (InterruptedException e) {
        logd("interrupted while trying to load from the SIM");
      }
    }
    return records;
  }