()
        {
            public Void execute() throws Throwable
            {
                // We'll do all this as user 'UserTwo'.
                AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName());
                
                //Parent Folder Rule: 
                //Add Versionable to newly created nodes
                org.alfresco.service.cmr.rule.Rule parentRule = new org.alfresco.service.cmr.rule.Rule();
                parentRule.setRuleTypes(Collections.singletonList(RuleType.INBOUND));
                parentRule.setTitle("RuleServiceTest" + GUID.generate());
                parentRule.setDescription("Add Versionable");
                Action action = ACTION_SERVICE.createAction(AddFeaturesActionExecuter.NAME);
                action.setParameterValue(AddFeaturesActionExecuter.PARAM_ASPECT_NAME, ContentModel.ASPECT_VERSIONABLE);
                parentRule.setAction(action);
                parentRule.applyToChildren(true);
                
                //Child Folder Rule: 
                //Remove Versionable to newly created nodes
                org.alfresco.service.cmr.rule.Rule childRule = new org.alfresco.service.cmr.rule.Rule();
                childRule.setRuleTypes(Collections.singletonList(RuleType.INBOUND));
                childRule.setTitle("RuleServiceTest" + GUID.generate());
                childRule.setDescription("RemoveVersonable");
                Action action2 = ACTION_SERVICE.createAction(RemoveFeaturesActionExecuter.NAME);
                action2.setParameterValue(RemoveFeaturesActionExecuter.PARAM_ASPECT_NAME, ContentModel.ASPECT_VERSIONABLE);
                childRule.setAction(action2);
                childRule.applyToChildren(false); //Don't need to apply to children
                
                //Save Rules to appropriate Folders
                RULE_SERVICE.saveRule(parentFolder, parentRule);
                RULE_SERVICE.saveRule(childFolder, childRule);
                return null;
            }
        });
        
        //Trigger the inbound rules by adding content
        addContentToNode(childContent);
        
        //Aspect is removed
        assertTrue("Versionable Aspect was not removed", ! NODE_SERVICE.hasAspect(childContent, ContentModel.ASPECT_VERSIONABLE));
        
    }
    
    
    
    /**
     * Adds content to a given node. 
     * 
     * Used to trigger rules of type of incomming.
     * 
     * @param nodeRef  the node reference
     */
    private void addContentToNode(NodeRef nodeRef)
    {
    	ContentWriter contentWriter = CONTENT_SERVICE.getWriter(nodeRef, ContentModel.PROP_CONTENT, true);
        contentWriter.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
        contentWriter.setEncoding("UTF-8");
    	assertNotNull(contentWriter);
    	contentWriter.putContent(STANDARD_TEXT_CONTENT + System.currentTimeMillis());
    }
}