class InstanceHolder {
        private static final WeiboJsonExtractor INSTANCE = new WeiboJsonExtractor();
    }

    /**
     * <p>instance.</p>
     *
     * @return a {@link WeiboJsonExtractor} object
     */
    public static WeiboJsonExtractor instance() {
        return WeiboJsonExtractor.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 token = super.createToken(accessToken, tokenType, expiresIn, refreshToken,
            scope, response, rawResponse);
        var uid = extractRequiredParameter(response, "uid", rawResponse).asText();
        if (uid == null || Pac4jConstants.EMPTY_STRING.equals(uid)) {
            throw new OAuthException(
                "There is no required UID in the response of the AssessToken endpoint.");
        }
        return new WeiboToken(token, uid);
    
<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>