int bitMask = cv.screen.renderer.rendererBit; long timeStamp = cv.screen.renderer.sharedCtxTimeStamp;
    void updateAllRenderMolecule(Renderer rdr, Canvas3D cv) {	int i;	boolean setCtx = false;	GeometryArrayRetained geo;	int size = renderMoleculeList.size();	if (size > 0) {	    RenderMolecule[] rmArr = (RenderMolecule[])		renderMoleculeList.toArray(false);	    cv.makeCtxCurrent(rdr.sharedCtx);	    setCtx = true;	    for (i = size-1 ; i >= 0; i--) {		rmArr[i].updateAllPrimaryDisplayLists(cv);	    }	}	size =  sharedDList.size();	if (size > 0) {	    RenderAtomListInfo arr[] =		(RenderAtomListInfo []) sharedDList.toArray(false);		    RenderAtomListInfo ra;	    if (!setCtx) {		cv.makeCtxCurrent(rdr.sharedCtx);				setCtx = true;	    }	    // We need two passes to avoid extra buildDisplayList	    // when geo are the same. The first pass clean the	    // rendererBit.	    int bitMask = cv.screen.renderer.rendererBit;	    long timeStamp = cv.screen.renderer.sharedCtxTimeStamp;		    	    for (i = size-1; i >= 0; i--) {		geo = (GeometryArrayRetained) arr[i].geometry();		geo.resourceCreationMask &= ~bitMask;	    }	    for (i = size-1; i >= 0; i--) {		ra = arr[i];		geo = (GeometryArrayRetained) ra.geometry();		if ((geo.resourceCreationMask & bitMask) == 0) {		    dlistRenderMethod.buildIndividualDisplayList(ra, cv, 								 rdr.sharedCtx);		    geo.resourceCreationMask |= bitMask;		    geo.setDlistTimeStamp(bitMask, timeStamp);		}	    }	}	if (setCtx) {	    cv.makeCtxCurrent(cv.ctx);	}    }