throw new UnsupportedOperationException("reference pointcuts are not supported by this parser");
throw new UnsupportedOperationException("if pointcuts and reference pointcuts are not supported by this parser");
    private void validateAgainstSupportedPrimitives(Pointcut pc) {        switch(pc.getPointcutKind()) {        	case Pointcut.AND:        	   validateAgainstSupportedPrimitives(((AndPointcut)pc).getLeft());        	   validateAgainstSupportedPrimitives(((AndPointcut)pc).getRight());        	   break;        	case Pointcut.ARGS:        	    if (!supportedPrimitives.contains(PointcutPrimitives.ARGS))        	        throw new UnsupportedOperationException("args is not supported by this parser");        	    break;        	case Pointcut.CFLOW:        	        throw new UnsupportedOperationException("cflow and cflowbelow are not supported by this parser");        	case Pointcut.HANDLER:        	    if (!supportedPrimitives.contains(PointcutPrimitives.HANDLER))        	        throw new UnsupportedOperationException("handler is not supported by this parser");        	    break;        	case Pointcut.IF:        	case Pointcut.IF_FALSE:        	case Pointcut.IF_TRUE:        	    throw new UnsupportedOperationException("if is not supported by this parser");        	            	case Pointcut.KINDED:        	    break;        	case Pointcut.NOT:        	    validateAgainstSupportedPrimitives(((NotPointcut)pc).getNegatedPointcut());        	    break;        	case Pointcut.OR:         	    validateAgainstSupportedPrimitives(((OrPointcut)pc).getLeft());        		validateAgainstSupportedPrimitives(((OrPointcut)pc).getRight());        	    break;        	case Pointcut.REFERENCE:        	    throw new UnsupportedOperationException("reference pointcuts are not supported by this parser");        	case Pointcut.THIS_OR_TARGET:        	    boolean isThis = ((ThisOrTargetPointcut)pc).isThis();        		if (isThis && !supportedPrimitives.contains(PointcutPrimitives.THIS)) {        		    throw new UnsupportedOperationException("this is not supported by this parser");        		} else if (!supportedPrimitives.contains(PointcutPrimitives.TARGET)) {        		    throw new UnsupportedOperationException("target is not supported by this parser");        		}        	    break;        	case Pointcut.WITHIN:        	    if (!supportedPrimitives.contains(PointcutPrimitives.WITHIN))        	        throw new UnsupportedOperationException("within is not supported by this parser");        	    break;        	case Pointcut.WITHINCODE:        	    if (!supportedPrimitives.contains(PointcutPrimitives.WITHIN_CODE))        	        throw new UnsupportedOperationException("withincode is not supported by this parser");        	    break;        	case Pointcut.NONE:  // deliberate fall-through        	default:        	    throw new UnsupportedOperationException("Unknown pointcut kind: " + pc.getPointcutKind());        }    }