code: function validateActions(actions, uniqueOutcomes) {
      //do any actions have duplicate names?
      var actionsMap = new Map();
      _.each(actions, function(a){
          if(actionsMap.has(a.name)){
              throw new DuplicateNameException('The name ' + a.name + ' was found in a different action.  Action names must be unique.');
          }else{
              actionsMap.set(a.name, a);
          }
      });
      
      //do we have at least one action for every possible outcome?  
      //better to test now, rather than waiting for such a branch to 
      //randomly be executed one day in production
      //n.b. subrules have outcome == null, so skip them
      _.each(uniqueOutcomes.values(), function(outcome){
          if(outcome !== null && !actionsMap.has(outcome)){
              throw new NoActionFoundException('No action has been associated with the outcome "' + outcome + '"');
          }
      });
      
      return actionsMap;
  }
docs: private, inner