if ( ( factory == null && cssRule.getType() == CSSRule.STYLE_RULE ) ||
if (
    public static Iterator fromCSSPropertyDecl( CSSRule cssRule, CSSStyleDeclaration style, String propName, int sequence ) {        // HACK: special cases for RuleNormalizer...need to work this out cleanly        PropertyFactory factory = (PropertyFactory)PRP_FACTORIES.get( propName );        if ( ( factory == null && cssRule.getType() == CSSRule.STYLE_RULE ) ||                propName.indexOf( "color" ) >= 0 && !propName.equals( "border" ) ) {            RULE_NORMALIZER.normalize( (CSSStyleRule)cssRule );            style = ( (CSSStyleRule)cssRule ).getStyle();        }        List list = new ArrayList();        switch ( style.getPropertyCSSValue( propName ).getCssValueType() ) {            case CSSValue.CSS_PRIMITIVE_VALUE:                if ( factory == null ) {                    XRProperty prop = new XRPropertyImpl( style, propName, sequence );                    list.add( prop );                } else {                    Iterator iter = factory.explodeProperties( style, propName, sequence );                    while ( iter.hasNext() ) {                        list.add( iter.next() );                    }                }                break;            case CSSValue.CSS_VALUE_LIST:                if ( factory == null ) {                    XRProperty prop = new XRPropertyImpl( style, propName, sequence );                    list.add( prop );                    // HACK--right now, BP is allowed to not have a factory                    if ( !propName.equals( CSSName.BACKGROUND_POSITION ) && !propName.equals( CSSName.FONT_FAMILY ) ) {                        System.err.println( "! Property '" + propName + "' was assigned multiple values but no factory is assigned to it." );                    }                } else {                    Iterator iter = factory.explodeProperties( style, propName, sequence );                    while ( iter.hasNext() ) {                        list.add( iter.next() );                    }                }                break;            default:                System.err.println( "Property '" + propName + "' is neither primitive nor value list, can't handle." );                break;        }        return list.iterator();    }