throw new ExtendsException( element, base, ExtendsException.DESIGN_EXCEPTION_EXTENDS_FORBIDDEN );
throw new ExtendsForbiddenException( element, base, ExtendsForbiddenException.DESIGN_EXCEPTION_EXTENDS_FORBIDDEN );
	public void setExtendsName( String base ) throws ExtendsException	{		base = StringUtil.trimString( base );		// Can not set extends explicitly if the element is a virtual element		// (inside a child) or the element already extends from another.		if ( element.isVirtualElement( ) )			throw new ExtendsException( element, base,					ExtendsException.DESIGN_EXCEPTION_EXTENDS_FORBIDDEN );		if ( base == null && element.getExtendsName( ) == null )			return;		ElementDefn metaData = (ElementDefn) element.getDefn( );		ElementRefValue retValue = null;		if ( base == null )		{			if ( !metaData.canExtend( ) )				return;		}		else		{			// Verify that the symbol exists and is the right type.			if ( !metaData.canExtend( ) )				throw new ExtendsException( element, base,						ExtendsException.DESIGN_EXCEPTION_CANT_EXTEND );			ElementPropertyDefn propDefn = element					.getPropertyDefn( IDesignElementModel.EXTENDS_PROP );			try			{				retValue = (ElementRefValue) propDefn.validateValue( module,						base );			}			catch ( PropertyValueException e )			{				assert false;			}		}		// Make the change.		doSetExtendsRefValue( retValue );	}