style = new Style( selector, parent, cssBlock );
style = new Style( selector, styleName, isDynamicStyle, parent, cssBlock );
	public void addCssBlock( CssBlock cssBlock ) {		this.isInitialised = false;		String selector = cssBlock.getSelector().toLowerCase();		if (selector.charAt(0) == '.') {			selector = selector.substring( 1 );		}		String[] groupNames = cssBlock.getGroupNames();		HashMap[] groups = new HashMap[ groupNames.length ];		for (int i = 0; i < groups.length; i++) {			groups[i] = cssBlock.getGroupDeclarations(groupNames[i]);		}		HashMap target = null;		if ("colors".equals(selector)) {			target = this.colors;		} else if ("fonts".equals(selector)) {			target = this.fonts;		} else if ("backgrounds".equals(selector)) {			target = this.backgrounds;		} else if ("borders".equals(selector)) {			target = this.borders;		}		if (target != null) {			for (int i = 0; i < groups.length; i++) {				String name = groupNames[i];				HashMap group = groups[i]; 				HashMap targetGroup = (HashMap) target.get( name );				if (targetGroup == null) {					target.put( name, group );				} else {					targetGroup.putAll( group );				}			}		} else { // this is a style:			String parent = "default";			int extendsPos = selector.indexOf(" extends ");			if (extendsPos != -1) {				parent = selector.substring( extendsPos + 9).trim();				selector = selector.substring(0, extendsPos ).trim();				if ("default".equals(selector ) ) {					throw new BuildException( "Invalid CSS code: The style [default] must not extend any other style.");				}			}			if ("default".equals(selector ) ) {				parent = null;			}			// check for reserved names of the style-selector:			if (KEYWORDS.get(selector) != null) {				throw new BuildException( "Invalid CSS code: The style-selector [" + selector + "] uses a reserved keyword, please choose another name.");			}			// check for invalid selector-names:			if ( (selector.indexOf(' ') != -1) || (selector.indexOf('\t') != -1)) {				throw new BuildException( "Invalid CSS code: The style-selector [" + selector + "] is invalid, please do not include spaces in selector-names.");			}			Style style = (Style) this.stylesByName.get( selector );			if (style == null) {				style = new Style( selector, parent, cssBlock );				this.styles.add( style );				this.stylesByName.put(  selector, style );			} else {				style.add( cssBlock );			}		}	}