class DropBoxProfileDefinition extends OAuthProfileDefinition {

    /** Constant <code>REFERRAL_LINK="referral_link"</code> */
    public static final String REFERRAL_LINK = "referral_link";
    /** Constant <code>COUNTRY="country"</code> */
    public static final String COUNTRY = "country";
    /** Constant <code>EMAIL_VERIFIED="email_verified"</code> */
    public static final String EMAIL_VERIFIED = "email_verified";

    /**
     * <p>Constructor for DropBoxProfileDefinition.</p>
     */
    public DropBoxProfileDefinition() {
        super(x -> new DropBoxProfile());
        primary(REFERRAL_LINK, Converters.STRING);
        primary(COUNTRY, Converters.LOCALE);
        primary(REFERRAL_LINK, Converters.URL);
        primary(EMAIL, Converters.STRING);
        primary(EMAIL_VERIFIED, Converters.BOOLEAN);
    }

    /** {@inheritDoc} */
    @Override
    public String getProfileUrl(final Token token, final OAuthConfiguration configuration) {
        return "https://api.dropboxapi.com/2/users/get_current_account";
    }

    /** {@inheritDoc} */
    @Override
    public Verb getProfileVerb() {
        return Verb.POST;
    }

    /** {@inheritDoc} */
    @Override
    public DropBoxProfile extractUserProfile(final String body) {<FILL_FUNCTION_BODY>}
}

        val profile = (DropBoxProfile) newProfile();
        var json = JsonHelper.getFirstNode(body);
        if (json != null) {
            profile.setId(ProfileHelper.sanitizeIdentifier(JsonHelper.getElement(json, "account_id")));
            for (val attribute : getPrimaryAttributes()) {
                convertAndAdd(profile, PROFILE_ATTRIBUTE, attribute, JsonHelper.getElement(json, attribute));
            }
            json = (JsonNode) JsonHelper.getElement(json, "name");
            if (json != null) {
                convertAndAdd(profile, PROFILE_ATTRIBUTE, FIRST_NAME, JsonHelper.getElement(json, "familiar_name"));
                convertAndAdd(profile, PROFILE_ATTRIBUTE, FAMILY_NAME, JsonHelper.getElement(json, "surname"));
                convertAndAdd(profile, PROFILE_ATTRIBUTE, DISPLAY_NAME, JsonHelper.getElement(json, "display_name"));
            }
        } else {
            raiseProfileExtractionJsonError(body);
        }
        return profile;
    
<methods>public void <init>() ,public void <init>(org.pac4j.core.profile.factory.ProfileFactory) ,public abstract org.pac4j.core.profile.CommonProfile extractUserProfile(java.lang.String) ,public abstract java.lang.String getProfileUrl(com.github.scribejava.core.model.Token, org.pac4j.oauth.config.OAuthConfiguration) ,public com.github.scribejava.core.model.Verb getProfileVerb() <variables>