* @param	value	an array with values that need to be selected
     * @return	true only if the field value was changed
     * @since 2.1.4
     */
	public boolean setListSelection(String name, String[] value) throws IOException, DocumentException {
        Item item = getFieldItem(name);
        if (item == null)
            return false;
        PdfDictionary merged = item.getMerged( 0 );
        PdfName type = merged.getAsName(PdfName.FT);
        if (!PdfName.CH.equals(type)) {
        	return false;
        }
        String[] options = getListOptionExport(name);
        PdfArray array = new PdfArray();
        for (String element : value) {
        	for (int j = 0; j < options.length; j++) {
        		if (options[j].equals(element)) {
        			array.add(new PdfNumber(j));
        			break;
        		}
        	}
        }
        item.writeToAll(PdfName.I, array, Item.WRITE_MERGED | Item.WRITE_VALUE);

        PdfArray vals = new PdfArray();
        for (int i = 0; i < value.length; ++i) {
        	vals.add( new PdfString( value[i] ) );
        }
        item.writeToAll(PdfName.V, vals, Item.WRITE_MERGED | Item.WRITE_VALUE);

        PdfAppearance app = getAppearance( merged, value, name );

        PdfDictionary apDic = new PdfDictionary();
        apDic.put( PdfName.N, app.getIndirectReference() );
        item.writeToAll(PdfName.AP, apDic, Item.WRITE_MERGED | Item.WRITE_WIDGET);

        writer.releaseTemplate( app );

        item.markUsed( this, Item.WRITE_VALUE | Item.WRITE_WIDGET );
        return true;
	}