Thread.currentThread().setContextClassLoader(currentCL);
        private void annotate(IResource resource, IProgressMonitor monitor, boolean isFull) {            // change the Thread classloader            ClassLoader currentCL = Thread.currentThread().getContextClassLoader();            try {                BpLog.logInfo("annotate " + resource.getName());                Thread.currentThread().setContextClassLoader(m_projectClassLoader);                                File resourceFile = resource.getRawLocation().toFile();                String className = BpCorePlugin.getDefault().extractClassNameFromClassFile(resourceFile);                BpLog.logTrace("got name from bytes " + className);                                // skip inner class since they will be annnotated when their outer is annotated                // TODO  handle aspect as inner class change triggering                if (className.indexOf('$')>0) {                    return;                }//                //                // check if we have at least one aspect in the delta when we are not doing a full build//                if (!m_isFull && !m_hasEncounteredAspects) {//                    boolean isAspect = isAspect(className);//                    if (isAspect) {//                        BpLog.logInfo("Detected a change in aspect " + className);//                        m_hasEncounteredAspects = true;//                    }//                }////                    IProject project = resource.getProject();//                    //TODO how to trigger a nested build / clear state etc ?////                    project.getProject().build(IncrementalProjectBuilder.FULL_BUILD,monitor);                ////                    getProject().getProject().build(AwAnnotationBuilder.FULL_BUILD,////                            AwAnnotationBuilder.BUILDER_ID, null, monitor);////                    getProject().getProject().build(AwProjectBuilder.FULL_BUILD,////                            AwProjectBuilder.BUILDER_ID, null, monitor);////                    BpLog.logInfo("DONE Detected a change in aspect " + className);////                    BpLog.logInfo("full .? " + isFull );////                    //return;                // extract the file path                int segments = Strings.splitString(className, "/").length;                // = 2 for pack.Hello                IPath pathToFile = resource.getRawLocation().removeLastSegments(segments);                String destDir = pathToFile.toFile().toString();                BpLog.logTrace("will annotate to " + destDir);                // call AnnotationC for only one file, dest dir = src dir                boolean verbose = true;                // source file for this resource                IResource sourceFile = BpCorePlugin.getDefault().findSourceForResource(getProject(), resource, className);                if (checkCancel(monitor))                    return;                if (sourceFile == null) {                    BpLog.logInfo("cannot find source for compiled resource "                            + resource.getRawLocation().toString());                } else {    	                String targetFile = sourceFile.getRawLocation().toFile().toString();    	                    	                // delete all annotation markers before running    	                AnnotationEventHandler.deleteMarkers(sourceFile);    	                    	                AnnotationC.compile(new String[0],    	                        new String[] { targetFile }, m_pathFiles, destDir,    	                        m_annotationPropsFiles.length==0?null:m_annotationPropsFiles,    	                        m_eventHandler,								true//ignore unknown since markers    	                );    	                BpLog.logTrace("annotated " + className + " from " + targetFile);                }                if (checkCancel(monitor))                    return;                monitor.worked(1);                // write back                // -> has been done by AnnotationC            } catch (Throwable e) {                BpLog.logError(e);    	    } finally {    	        Thread.currentThread().setContextClassLoader(currentCL);    	    }        }