code:     public DeserializerFactory withConfig(DeserializerFactoryConfig config)
      {
          if (_factoryConfig == config) {
              return this;
          }
          /* 22-Nov-2010, tatu: Handling of subtypes is tricky if we do immutable-with-copy-ctor;
           *    and we pretty much have to here either choose between losing subtype instance
           *    when registering additional deserializers, or losing deserializers.
           *    Instead, let's actually just throw an error if this method is called when subtype
           *    has not properly overridden this method; this to indicate problem as soon as possible.
           */
          if (getClass() != BeanDeserializerFactory.class) {
              throw new IllegalStateException("Subtype of BeanDeserializerFactory ("+getClass().getName()
                      +") has not properly overridden method 'withAdditionalDeserializers': can not instantiate subtype with "
                      +"additional deserializer definitions");
          }
          return new BeanDeserializerFactory(config);
      }
      
      /*
      /**********************************************************
      /* DeserializerFactory API implementation
      /**********************************************************
       */
  
      /**
       * Method that {@link DeserializerCache}s call to create a new
       * deserializer for types other than Collections, Maps, arrays and
       * enums.
       */
      @Override
  