public void processMonitorForCompositeMonitor(Monitor monitor) { LinkedList stack = getStack(); if (stack != null) { if (! stack.isEmpty()) { StackFrame stackFrame = (StackFrame) stack.getLast(); CompositeMonitor parentMonitor = stackFrame.getCompositeMonitor(); // only add this monitor being processed to a parent if it is enabled // by its monitoring level MonitoringLevel monitorLevel = monitor.getLevel(); if ((monitorLevel != null) && (monitorLevel.hasHigherOrEqualPriorityThan(getEventPatternLevel()))) { parentMonitor.addChildMonitor(monitor); } } else { threadBasedMap.remove(Thread.currentThread()); } } }