anchor.diff:          }
       }
   
  +    /**
  +     * Set the usage info for an field named @fieldName of @constrName in group @grpName.
  +     * @idx is the index of the field in the list of attributes on the construct.
  +     */
       function setFieldUse(grpName, constrName, fieldName, idx, use) {
           var field = profile['groups'][grpName]['constructs'][constrName]['fields'][idx];
           if (field['name'] === fieldName) {
  
positive.code:         }
      }
  
      function getConstructUse(grpName, constrName, use) {
          return profile['groups'][grpName]['constructs'][constrName]['use'];
      }
  
      $(".construct-usage-changer").click(function(evt) {
          evt.preventDefault(); // don't act like a link; we're handling this click
          var thisEl = $(this); // get this object as jQuery reference
  
negative.code: </div>
  
  <script type="text/javascript">
      var active = undefined; // the 'active' group/schema being viewed and edited
      var profile = JSON.parse('<%= profile_modifying.to_json.html_safe %>')
  
      /**
       * Set the usage info for the construct named @constrName in @grpName.
       */
      function setConstructUse(grpName, constrName, use) {
          profile['groups'][grpName]['constructs'][constrName]['use'] = use;
      }
  
      /**
       * Set the usage info for an attribute named @attrName of @constrName in group @grpName.
       * @idx is the index of the attribute in the list of attributes on the construct.
       */
      function setAttributeUse(grpName, constrName, attrName, idx, use) {
          var attr = profile['groups'][grpName]['constructs'][constrName]['attributes'][idx];
          if (attr['name'] === attrName) {
  