Add criteria for a check.

    Args:
      artifact: An artifact name.
      target: A tuple of artifact necessary to process the data.
      callback: Entities that should be called if the condition matches.

def Add(self, artifact=None, target=None, callback=None):
    """Add criteria for a check.

    Args:
      artifact: An artifact name.
      target: A tuple of artifact necessary to process the data.
      callback: Entities that should be called if the condition matches.
    """
    # Cases where a target field is undefined or empty need special handling.
    # Repeated field helper in target yields results, so expand this out into a
    # list. If the attribute doesn't exist, default to an empty list.
    # Then, in either case, replace the empty list with one containing a single
    # None value.
    if target is None:
      target = Target()
    os_name = target.Get("os") or [None]
    cpe = target.Get("cpe") or [None]
    label = target.Get("label") or [None]
    attributes = itertools.product(os_name, cpe, label)
    new_conditions = [Condition(artifact, *attr) for attr in attributes]
    self.conditions.update(new_conditions)
    self._Register(new_conditions, callback)