code: function(propertyInfos, prototype, base) {
        // per-prototype storage for reflected properties
        prototype.reflect = prototype.reflect || {};
        // ensure a prototype value for each property
        // and update the property's reflect to attribute status
        for (var n in propertyInfos) {
          var value = propertyInfos[n];
          // value has metadata if it has a `reflect` property
          if (value && value.reflect !== undefined) {
            prototype.reflect[n] = Boolean(value.reflect);
            value = value.value;
          }
          // only set a value if one is specified
          if (value !== undefined) {
            prototype[n] = value;
          }
        }
      }
docs: `name: value` entries in the `publish` object may need to generate matching properties on the prototype.  Values that are objects may have a `reflect` property, which signals that the value describes property control metadata. In metadata objects, the prototype default value (if any) is encoded in the `value` property.  publish: { foo: 5, bar: {value: true, reflect: true}, zot: {} }  `reflect` metadata property controls whether changes to the property are reflected back to the attribute (default false).  A value is stored on the prototype unless it's === `undefined`, in which case the base chain is checked for a value. If the basal value is also undefined, `null` is stored on the prototype.  The reflection data is stored on another prototype object, `reflect` which also can be specified directly.  reflect: { foo: true }