docs: function (propType) {
          return {
              propType: propType,
              preCtorInit: function focusProperty_preCtorInit(element, options, data, displayName, propName, value) {
                  options[propName] = value;
              },
              update: function focusProperty_update(winjsComponent, propName, oldValue, newValue) {
                  if (oldValue !== newValue) {
                      var asyncToken = winjsComponent.data[propName];
                      asyncToken && clearImmediate(asyncToken);
                      asyncToken = setImmediate(function () {
                          winjsComponent.data[propName] = null;
                          winjsComponent.winControl[propName] = newValue;
                      });
                  }
              },
              dispose: function focusProperty_dispose(winjsComponent, propName) {
                  var asyncToken = winjsComponent.data[propName];
                  asyncToken && clearImmediate(asyncToken);
              }
          };
      }