class MultipleRowsAttributeValueWrapper implements AttributeValueWrapper {

    private final Element[] rows;
    private final Column column;
    private final TimeFormat currentTimeFormat;
    private final DateTimeZone dateTimeZone;
    private Object value;

    public MultipleRowsAttributeValueWrapper(Element[] rows, Column column, TimeFormat currentTimeFormat,
                                             DateTimeZone dateTimeZone) {
        this.rows = rows;
        this.column = column;
        this.currentTimeFormat = currentTimeFormat;
        this.dateTimeZone = dateTimeZone;
        this.value = null;
    }

    private String convertToStringIfNotNull() {<FILL_FUNCTION_BODY>}

    private void setValueToAllElements(Object object) {
        this.value = object;
        for (Element row : rows) {
            row.setAttribute(column, value);
        }
    }

    @Override
    public Byte getValueByte() {
        return (Byte) value;
    }

    @Override
    public void setValueByte(Byte object) {
        setValueToAllElements(object);
    }

    @Override
    public Short getValueShort() {
        return (Short) value;
    }

    @Override
    public void setValueShort(Short object) {
        setValueToAllElements(object);
    }

    @Override
    public Character getValueCharacter() {
        return (Character) value;
    }

    @Override
    public void setValueCharacter(Character object) {
        setValueToAllElements(object);
    }

    @Override
    public String getValueString() {
        return (String) value;
    }

    @Override
    public void setValueString(String object) {
        setValueToAllElements(object);
    }

    @Override
    public Double getValueDouble() {
        return (Double) value;
    }

    @Override
    public void setValueDouble(Double object) {
        setValueToAllElements(object);
    }

    @Override
    public Float getValueFloat() {
        return (Float) value;
    }

    @Override
    public void setValueFloat(Float object) {
        setValueToAllElements(object);
    }

    @Override
    public Integer getValueInteger() {
        return (Integer) value;
    }

    @Override
    public void setValueInteger(Integer object) {
        setValueToAllElements(object);
    }

    @Override
    public Boolean getValueBoolean() {
        return (Boolean) value;
    }

    @Override
    public void setValueBoolean(Boolean object) {
        setValueToAllElements(object);
    }

    @Override
    public Long getValueLong() {
        return (Long) value;
    }

    @Override
    public void setValueLong(Long object) {
        setValueToAllElements(object);
    }

    @Override
    public String getValueAsString() {
        return convertToStringIfNotNull();
    }

    @Override
    public void setValueAsString(String value) {
        setValueToAllElements(AttributeUtils.parse(value, column.getTypeClass()));
    }
}

        if (value != null) {
            return AttributeUtils.print(value, currentTimeFormat, dateTimeZone);
        } else {
            return null;
        }
    
<no_super_class>