text: /**
   * @file gpf.attributes.AttributeAttribute attribute base class
   * @since 0.2.8
   */
  /*#ifndef(UMD)*/
  "use strict";
  /*global _gpfAttribute*/ // Shortcut for gpf.attributes.Attribute
  /*global _gpfAttributesCheckAppliedOnBaseClass*/ // Ensures attribute is applied on a specific base class
  /*global _gpfAttributesCheckAppliedOnlyOnce*/ // Ensures attribute is used only once
  /*global _gpfAttributesCheckClassOnly*/ // Ensures attribute is used only at class level
  /*global _gpfCreateAbstractFunction*/ // Build a function that throws the abstractMethod exception
  /*global _gpfDefine*/ // Shortcut for gpf.define
  /*global _gpfIgnore*/ // Helper to remove unused parameter warning
  /*exported _gpfAttributesAttributeAttribute*/ // Shortcut for gpf.attributes.AttributeAttribute
  /*#endif*/
  
  /**
   * Attribute for attributes
   *
   * @class gpf.attributes.AttributeAttribute
   * @private
   * @since 0.2.8
   */
  var _gpfAttributesAttributeAttribute = _gpfDefine({
      $class: "gpf.attributes.AttributeAttribute",
      $extend: _gpfAttribute,
      $abstract: true,
  
      /**
       * @inheritdoc
       * @since 0.2.8
       */
      _check: function (member, classDefinition) {
          _gpfAttributesCheckClassOnly(member);
          _gpfAttributesCheckAppliedOnBaseClass(classDefinition, _gpfAttribute);
          _gpfAttributesCheckAppliedOnlyOnce(member, classDefinition, this.constructor);
      },
  
      /**
       * _check method 'injected' onto the target attribute
       *
       * @param {String} member Member name or empty if global to the class
       * @param {_GpfClassDefinition} classDefinition Class definition
       * @param {gpf.attributes.Attribute} targetAttribute Target attribute instance
       * @protected
       * @since 0.2.8
       */
      _targetCheck: _gpfCreateAbstractFunction(),
  
      _overrideTargetCheck: function (classPrototype) {
          var me = this,
              initialCheck = classPrototype._check;
          classPrototype._check = function (member, classDefinition) {
              me._targetCheck(member, classDefinition, this);
              initialCheck.call(this, member, classDefinition);
          };
      },
  
      /**
       * @inheritdoc
       * @since 0.2.8
       */
      _build: function (member, classDefinition, classPrototype) {
          _gpfIgnore(member, classDefinition);
          this._overrideTargetCheck(classPrototype);
      }
  
  });
  