public void forgetISOCountry(ICFSecurityISOCountryObj Obj, boolean forgetSubObjects) {
    ICFSecurityISOCountryObj obj = Obj;
    CFSecurityISOCountryPKey pkey = obj.getPKey();
    if (members.containsKey(pkey)) {
      ICFSecurityISOCountryObj keepObj = members.get(pkey);
      // Detach object from alternate, duplicate, all and PKey indexes

      if (indexByISOCodeIdx != null) {
        CFSecurityISOCountryByISOCodeIdxKey keyISOCodeIdx =
            ((ICFInternetSchema) schema.getBackingStore())
                .getFactoryISOCountry()
                .newISOCodeIdxKey();
        keyISOCodeIdx.setRequiredISOCode(keepObj.getRequiredISOCode());
        indexByISOCodeIdx.remove(keyISOCodeIdx);
      }

      if (indexByNameIdx != null) {
        CFSecurityISOCountryByNameIdxKey keyNameIdx =
            ((ICFInternetSchema) schema.getBackingStore()).getFactoryISOCountry().newNameIdxKey();
        keyNameIdx.setRequiredName(keepObj.getRequiredName());
        indexByNameIdx.remove(keyNameIdx);
      }

      if (allISOCountry != null) {
        allISOCountry.remove(keepObj.getPKey());
      }
      members.remove(pkey);
      if (forgetSubObjects) {
        ((ICFSecuritySchemaObj) schema)
            .getISOCountryCurrencyTableObj()
            .forgetISOCountryCurrencyByCountryIdx(keepObj.getRequiredId());
        ((ICFSecuritySchemaObj) schema)
            .getISOCountryLanguageTableObj()
            .forgetISOCountryLanguageByCountryIdx(keepObj.getRequiredId());
      }
    }
  }