class RoleElectionOptions extends OptionHolder {

    private RoleElectionOptions() {
        super();
    }

    private static volatile RoleElectionOptions instance;

    public static synchronized RoleElectionOptions instance() {<FILL_FUNCTION_BODY>}

    public static final ConfigOption<Integer> EXCEEDS_FAIL_COUNT =
            new ConfigOption<>(
                    "server.role.fail_count",
                    "When the node failed count of update or query heartbeat " +
                    "is reaches this threshold, the node will become abdication state to guard" +
                    "safe property.",
                    rangeInt(0, Integer.MAX_VALUE),
                    5
            );

    public static final ConfigOption<String> NODE_EXTERNAL_URL =
            new ConfigOption<>(
                    "server.role.node_external_url",
                    "The url of external accessibility.",
                    disallowEmpty(),
                    "http://127.0.0.1:8080"
            );

    public static final ConfigOption<Integer> RANDOM_TIMEOUT_MILLISECOND =
            new ConfigOption<>(
                    "server.role.random_timeout",
                    "The random timeout in ms that be used when candidate node request " +
                    "to become master state to reduce competitive voting.",
                    rangeInt(0, Integer.MAX_VALUE),
                    1000
            );

    public static final ConfigOption<Integer> HEARTBEAT_INTERVAL_SECOND =
            new ConfigOption<>(
                    "server.role.heartbeat_interval",
                    "The role state machine heartbeat interval second time.",
                    rangeInt(0, Integer.MAX_VALUE),
                    2
            );

    public static final ConfigOption<Integer> MASTER_DEAD_TIMES =
            new ConfigOption<>(
                    "server.role.master_dead_times",
                    "When the worker node detects that the number of times " +
                    "the master node fails to update heartbeat reaches this threshold, " +
                    "the worker node will become to a candidate node.",
                    rangeInt(0, Integer.MAX_VALUE),
                    10
            );

    public static final ConfigOption<Integer> BASE_TIMEOUT_MILLISECOND =
            new ConfigOption<>(
                    "server.role.base_timeout",
                    "The role state machine candidate state base timeout time.",
                    rangeInt(0, Integer.MAX_VALUE),
                    500
            );
}

        if (instance == null) {
            instance = new RoleElectionOptions();
            // Should initialize all static members first, then register.
            instance.registerOptions();
        }
        return instance;
    
<no_super_class>