FontDefinition newFd = (FontDefinition) EcoreUtil.copy( newStyle.getFont( ) );
FontDefinition newFd = FontDefinitionImpl.copyInstance( newStyle.getFont( ) );
	private boolean updateHierarchyStyle( Chart model, StyledComponent type,			IStyleProcessor processor, SimpleContainer currentContainer )	{		SimpleStyle currentStyle = currentContainer.style;		IStyle newStyle = null;		if ( currentStyle == null )		{			currentContainer.style = new SimpleStyle( processor.getStyle( model,					type ) );			currentStyle = currentContainer.style;		}		else		{			newStyle = processor.getStyle( model, type );		}		if ( newStyle != null )		{			if ( currentStyle.getFont( ) == null )			{				if ( newStyle.getFont( ) != null )				{					currentStyle.setFont( (FontDefinition) EcoreUtil.copy( newStyle.getFont( ) ) );				}			}			else if ( newStyle.getFont( ) != null )			{				FontDefinition fd = currentStyle.getFont( );				FontDefinition newFd = (FontDefinition) EcoreUtil.copy( newStyle.getFont( ) );				ChartUtil.mergeFont( fd, newFd );			}			if ( currentStyle.getColor( ) == null					&& newStyle.getColor( ) != null )			{				currentStyle.setColor( (ColorDefinition) EcoreUtil.copy( newStyle.getColor( ) ) );			}		}		// check inherited styles.		FontDefinition fd = currentStyle.getFont( );		if ( fd != null				&& fd.getName( ) != null				&& fd.isSetSize( )				&& fd.isSetBold( )				&& fd.isSetItalic( )				&& fd.isSetRotation( )				&& fd.isSetWordWrap( )				&& fd.isSetUnderline( )				&& fd.isSetStrikethrough( )				&& fd.getAlignment( ) != null				&& fd.getAlignment( ).isSetHorizontalAlignment( )				&& currentStyle.getColor( ) != null )		{			return true;		}		return false;	}