code: private void readObject(java.io.ObjectInputStream in)
          throws java.io.IOException {
  
          // read the description in from the stream
          String description = in.readUTF();
          ULocale loc;
  
          try {
              loc = (ULocale) in.readObject();
          } catch (Exception e) {
              loc = ULocale.getDefault(Category.FORMAT);
          }
          try {
              roundingMode = in.readInt();
          } catch (Exception ignored) {
          }
  
          // build a brand-new RuleBasedNumberFormat from the description,
          // then steal its substructure.  This object's substructure and
          // the temporary RuleBasedNumberFormat drop on the floor and
          // get swept up by the garbage collector
          RuleBasedNumberFormat temp = new RuleBasedNumberFormat(description, loc);
          ruleSets = temp.ruleSets;
          ruleSetsMap = temp.ruleSetsMap;
          defaultRuleSet = temp.defaultRuleSet;
          publicRuleSetNames = temp.publicRuleSetNames;
          decimalFormatSymbols = temp.decimalFormatSymbols;
          decimalFormat = temp.decimalFormat;
          locale = temp.locale;
          defaultInfinityRule = temp.defaultInfinityRule;
          defaultNaNRule = temp.defaultNaNRule;
      }
docs: Reads this object in from a stream.
  @param in The stream to read from.