class InstanceHolder {

        private static final WechatJsonExtractor INSTANCE = new WechatJsonExtractor();
    }

    /**
     * <p>instance.</p>
     *
     * @return a {@link WechatJsonExtractor} object
     */
    public static WechatJsonExtractor instance() {
        return WechatJsonExtractor.InstanceHolder.INSTANCE;
    }

    /** {@inheritDoc} */
    @Override
    protected OAuth2AccessToken createToken(String accessToken, String tokenType, Integer expiresIn, String refreshToken, String scope,
                                            JsonNode response, String rawResponse) {<FILL_FUNCTION_BODY>

        var openid = extractRequiredParameter(response, "openid", rawResponse).asText();
        var unionid = extractRequiredParameter(response, "unionid", rawResponse).asText();
        var token = new WechatToken(accessToken, tokenType, expiresIn, refreshToken, scope, rawResponse, openid, unionid);
        return token;
    
<methods>public com.github.scribejava.core.model.OAuth2AccessToken extract(com.github.scribejava.core.model.Response) throws java.io.IOException,public void generateError(com.github.scribejava.core.model.Response) throws java.io.IOException,public static com.github.scribejava.core.extractors.OAuth2AccessTokenJsonExtractor instance() <variables>