class BitsetArgument extends AbstractArgument {

    /**
     * These are the different options that can be true or false.
     */
    private JCheckBox[] options;

    /**
     * Constructs an BitsetArgument.
     *
     * @param tool        the tool that needs this argument
     * @param name        the name of the argument
     * @param description the description of the argument
     * @param options     the different options that can be true or false
     */
    public BitsetArgument(AbstractTool tool, String name, String description,
            String[] options) {
        super(tool, name, description, null);
        this.options = new JCheckBox[options.length];
        for (int i = 0; i < options.length; i++) {
            this.options[i] = new JCheckBox(options[i]);
        }
    }

    /**
     * @return String
     * @see com.lowagie.toolbox.arguments.StringArgument#getUsage()
     */
    public String getUsage() {
        StringBuilder buf = new StringBuilder(super.getUsage());
        buf.append("    possible options:\n");
        for (JCheckBox option : options) {
            buf.append("    - ");
            buf.append(option.getText());
            buf.append('\n');
        }
        return buf.toString();
    }

    /**
     * @param evt ActionEvent
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent evt) {<FILL_FUNCTION_BODY>}
}

        Object[] message = new Object[1 + options.length];
        message[0] = "Check the options you need:";
        System.arraycopy(options, 0, message, 1, options.length);
        int result = JOptionPane.showOptionDialog(
                tool.getInternalFrame(),
                message,
                description,
                JOptionPane.OK_CANCEL_OPTION,
                JOptionPane.QUESTION_MESSAGE,
                null,
                null,
                null
        );
        if (result == 0) {
            StringBuilder buf = new StringBuilder();
            for (JCheckBox option : options) {
                if (option.isSelected()) {
                    buf.append('1');
                } else {
                    buf.append('0');
                }
            }
            setValue(buf.toString());
        }
    
<methods>public void <init>() ,public void <init>(com.lowagie.toolbox.AbstractTool, java.lang.String, java.lang.String, java.lang.Object) ,public abstract void actionPerformed(java.awt.event.ActionEvent) ,public synchronized void addPropertyChangeListener(java.beans.PropertyChangeListener) ,public java.lang.Object getArgument() throws java.lang.InstantiationException,public java.lang.String getDescription() ,public java.lang.String getName() ,public com.lowagie.toolbox.AbstractTool getTool() ,public java.lang.String getUsage() ,public java.lang.Object getValue() ,public void propertyChange(java.beans.PropertyChangeEvent) ,public synchronized void removePropertyChangeListener(java.beans.PropertyChangeListener) ,public void setDescription(java.lang.String) ,public void setName(java.lang.String) ,public void setTool(com.lowagie.toolbox.AbstractTool) ,public void setValue(java.lang.Object) ,public void setValue(java.lang.Object, java.lang.String) ,public java.lang.String toString() <variables>protected java.lang.String description,protected java.lang.String name,protected java.beans.PropertyChangeSupport pcs,protected com.lowagie.toolbox.AbstractTool tool,protected java.lang.Object value