module.manageId( module, true, false );
	public void endDocument( ) throws SAXException	{		super.endDocument( );		// add all the exceptions to the module		module.getAllExceptions( ).addAll( getErrorHandler( ).getErrors( ) );		// Check whether duplicate library namespace exists.		List libraries = module.getAllLibraries( );		{			Iterator iter = libraries.iterator( );			while ( iter.hasNext( ) )			{				Library library = (Library) iter.next( );				if ( !library.isValid( ) )				{					// Forward the fatal error to top level.					Exception fatalException = ModelUtil							.getFirstFatalException( library.getAllExceptions( ) );					if ( fatalException != null )					{						XMLParserException exception = errorHandler								.semanticError( fatalException );						module.getAllExceptions( ).add( exception );					}				}			}		}		// Skip the semantic check if we've already found errors.		// Doing the semantic check would just uncover bogus errors		// due to the ones we've already seen.		if ( !module.getAllErrors( ).isEmpty( )				|| module.getFatalException( ) != null )		{			// The most errors which are found during parsing cannot be			// recovered.			module.setValid( false );			List allExceptions = new ArrayList( );			allExceptions.addAll( module.getAllExceptions( ) );			allExceptions.addAll( errorHandler.getWarnings( ) );			DesignFileException exception = new DesignFileException( module					.getFileName( ), allExceptions );			throw new SAXException( exception );		}		// Perform semantic check. The semantic error is recoverable.		module.semanticCheck( module );		// translates warnings during parsing design files to ErrorDetail.		if ( errorHandler.getWarnings( ) != null )		{			module.getAllExceptions( ).addAll( errorHandler.getWarnings( ) );		}	}