code: @Override
      public Object read(JSONReader r, JsonParser p) throws IOException
      {
          if (p.isExpectedStartObjectToken()) {
              final Object bean;
              try {
                  bean = create();
              } catch (Exception e) {
                  return _reportFailureToCreate(p, e);
              }
              p.setCurrentValue(bean);
              return _readBean(r, p, bean);
          }
          try {
              switch (p.currentTokenId()) {
              case JsonTokenId.ID_NULL:
                  return null;
              case JsonTokenId.ID_STRING:
                  return create(p.getText());
              case JsonTokenId.ID_NUMBER_INT:
                  return create(p.getLongValue());
              default:
              }
          } catch (Exception e) {
              return _reportFailureToCreate(p, e);
          }
          throw JSONObjectException.from(p, "Can not create a %s instance out of %s",
                  _type.getName(), _tokenDesc(p));
      }
docs: Method used for deserialization; will read an instance of the bean
  type using given parser.