code: private Object vanillaDeserializeAndFinishBuild(
              final JsonParser p,
              final DeserializationContext ctxt,
              final JsonToken t)
              throws IOException {
  
          try {
              return ThreadLocalBuilder.buildGeneric(
                      _threadLocalBuilderClass,
                      b -> {
                          Object bean = b;
                          try {
                              while (p.getCurrentToken() != JsonToken.END_OBJECT) {
                                  final String propName = p.getCurrentName();
                                  // Skip field name:
                                  p.nextToken();
                                  final SettableBeanProperty prop = _beanProperties.find(propName);
                                  if (prop != null) { // normal case
                                      try {
                                          bean = prop.deserializeSetAndReturn(p, ctxt, bean);
                                          // CHECKSTYLE.OFF: IllegalCatch - Retain existing behavior
                                      } catch (final IOException | RuntimeException e) {
                                          // CHECKSTYLE.ON: IllegalCatch
                                          // TODO(ville): Convert to throwing wrapAndThrow result. This improves coverage.
                                          // See: https://github.com/FasterXML/jackson-databind/pull/1871
                                          // throw wrapAndThrow(e, bean, propName, ctxt);
                                          wrapAndThrow(e, bean, propName, ctxt);
                                      }
                                  } else {
                                      handleUnknownVanilla(p, ctxt, bean, propName);
                                  }
                                  p.nextToken();
                              }
                          } catch (final IOException e) {
                              throw new WrappedIOExceptionException(e);
                          }
                      });
          } catch (final WrappedIOExceptionException e) {
              throw e.getCause();
              // CHECKSTYLE.OFF: IllegalCatch - Match behavior in BuilderBasedDeserializer
          } catch (final Exception e) {
              // CHECKSTYLE.ON: IllegalCatch
              return _underlyingBuilderBasedDeserializer.wrapInstantiationProblem(e, ctxt);
          }
      }
docs: Copied from {@code com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer}
  and modified to use {@link ThreadLocalBuilder} instantiation and build.