code: function addDirective(tDirectives, name, location, maxPriority, ignoreDirective, startAttrName,
                            endAttrName) {
        if (name === ignoreDirective) return null;
        var match = null;
        if (hasDirectives.hasOwnProperty(name)) {
          for (var directive, directives = $injector.get(name + Suffix),
              i = 0, ii = directives.length; i < ii; i++) {
            try {
              directive = directives[i];
              if ((maxPriority === undefined || maxPriority > directive.priority) &&
                   directive.restrict.indexOf(location) != -1) {
                if (startAttrName) {
                  directive = inherit(directive, {$$start: startAttrName, $$end: endAttrName});
                }
                tDirectives.push(directive);
                match = directive;
              }
            } catch (e) { $exceptionHandler(e); }
          }
        }
        return match;
      }
docs: looks up the directive and decorates it with exception handling and proper parameters. We
  call this the boundDirective.
  
  @param {string} name name of the directive to look up.
  @param {string} location The directive must be found in specific format.
  String containing any of theses characters:
  
  * `E`: element name
  * `A': attribute
  * `C`: class
  * `M`: comment
  @returns {boolean} true if directive was added.