code: function bloomAdd(injector, type) {
      var id = type[NG_ELEMENT_ID];
      // Set a unique ID on the directive type, so if something tries to inject the directive,
      // we can easily retrieve the ID and hash it into the bloom bit that should be checked.
      if (id == null) {
          id = type[NG_ELEMENT_ID] = nextNgElementId++;
      }
      // We only have BLOOM_SIZE (256) slots in our bloom filter (8 buckets * 32 bits each),
      // so all unique IDs must be modulo-ed into a number from 0 - 255 to fit into the filter.
      // This means that after 255, some directives will share slots, leading to some false positives
      // when checking for a directive's presence.
      var bloomBit = id % BLOOM_SIZE;
      // Create a mask that targets the specific bit associated with the directive.
      // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding
      // to bit positions 0 - 31 in a 32 bit integer.
      var mask = 1 << bloomBit;
      // Use the raw bloomBit number to determine which bloom filter bucket we should check
      // e.g: bf0 = [0 - 31], bf1 = [32 - 63], bf2 = [64 - 95], bf3 = [96 - 127], etc
      if (bloomBit < 128) {
          // Then use the mask to flip on the bit (0-31) associated with the directive in that bucket
          bloomBit < 64 ? (bloomBit < 32 ? (injector.bf0 |= mask) : (injector.bf1 |= mask)) :
              (bloomBit < 96 ? (injector.bf2 |= mask) : (injector.bf3 |= mask));
      }
      else {
          bloomBit < 192 ? (bloomBit < 160 ? (injector.bf4 |= mask) : (injector.bf5 |= mask)) :
              (bloomBit < 224 ? (injector.bf6 |= mask) : (injector.bf7 |= mask));
      }
  }
docs: Registers this directive as present in its node's injector by flipping the directive's
  corresponding bit in the injector's bloom filter.
  
  @param injector The node injector in which the directive should be registered
  @param type The directive to register