code: function applyTags(Class, addTags, fieldName, descriptor) {
    var tags = (Array.isArray(addTags) && addTags || []).map(function (tag) {
      return typeof tag === 'string' && Symbol.for(tag) || tag;
    }).filter(function (tag) {
      return (0, _typeof2.default)(tag) === 'symbol';
    });
    tags.forEach(function (tag) {
      Class[_GQLBase.META_KEY][tag] = Class[_GQLBase.META_KEY][tag] || {};
      Class[_GQLBase.META_KEY][tag][fieldName] = descriptor;
    });
  }
docs: When applying multiple property getters and setters, knowing some info
  about what was applied elsewhere can be important. "Tags" can be applied
  that store the fieldName and descriptor applied via one of these decorators.
  
  Multiple "tags" are supported to allow for detecting the difference between
  decorators applied by the developer using lattice and something auto
  generated such as auto-props.
  
  @param  {GQLBase} Class an instance of GQLBase to apply the tags tp
  @param  {Array<string|Symbol>} addTags an array of Symbols or strings to be
  wrapped in Symbols that will be used as tag keys
  @param  {string} fieldName the name of the field being decorated
  @param  {Object} descriptor the JavaScript descriptor object to associate
  with this tagged field.