PropertyValueException.INVALID_VALUE, VARIANT_TYPE );
PropertyValueException.INVALID_VALUE, STRUCT_TYPE );
    public Object validateValue( ReportDesign design, PropertyDefn defn,            Object value ) throws PropertyValueException    {        if ( value == null )            return null;        // Cannot store objects of a list directly.        if ( defn.isList( ) )            throw new PropertyValueException( value,                    PropertyValueException.INVALID_VALUE, VARIANT_TYPE );        if ( value instanceof Structure )        {            Iterator iter = ( (Structure) value ).getDefn( )                    .getPropertyIterator( );            while ( iter.hasNext( ) )            {                PropertyDefn memberDefn = (PropertyDefn) iter.next( );                if( !memberDefn.isList() )                {                    Object propValue = ( (Structure) value ).getProperty( design,                        memberDefn );                    memberDefn.validateValue( design, propValue );                }            }                        return value;        }        // exception        return null;    }