internal override NumberFormat CreateInstance(IBM.ICU.Util.ULocale desiredLocale, int choice)
        {
            // use service cache
            // if (service.isDefault()) {
            // return NumberFormat.createInstance(desiredLocale, choice);
            // }

            ULocale[] actualLoc = new ULocale[1];
            if (desiredLocale.Equals(IBM.ICU.Util.ULocale.ROOT))
            {
                desiredLocale = IBM.ICU.Util.ULocale.ROOT;
            }
            NumberFormat fmt = (NumberFormat)service.Get(desiredLocale, choice,
                                                         actualLoc);

            if (fmt == null)
            {
                throw new MissingManifestResourceException("Unable to construct NumberFormat");
            }
            fmt = (NumberFormat)fmt.Clone();

            ULocale uloc = actualLoc[0];

            fmt.SetLocale(uloc, uloc);     // services make no distinction between
                                           // actual & valid
            return(fmt);
        }
 protected internal override Object HandleCreate(IBM.ICU.Util.ULocale loc, int kind,
                                                 ICUService service)
 {
     return(IBM.ICU.Text.NumberFormat.CreateInstance(loc, kind));
 }