docs: function postLinkFn(scope, elem, attrs) {
      // compile with `ng-model` pointing to `checked`
      $compile(elem)(scope);
  
      // getter / setter for original model
      var getter = $parse(attrs.checklistModel);
      var setter = getter.assign;
  
      // value added to list
      var value = $parse(attrs.checklistValue)(scope.$parent);
  
      // watch UI checked change
      scope.$watch('checked', function(newValue, oldValue) {
        if (newValue === oldValue) { 
          return;
        } 
        var current = getter(scope.$parent);
        if (newValue === true) {
          setter(scope.$parent, add(current, value));
        } else {
          setter(scope.$parent, remove(current, value));
        }
      });
  
      // watch original model change
      scope.$parent.$watch(attrs.checklistModel, function(newArr, oldArr) {
        scope.checked = contains(newArr, value);
      }, true);
    }