docs: def _GetPredicate(self, pred_str, test_attr=False):
          """
      The user's predicates are consulted first, then the default predicates.
      """
          predicate, args, func_type = self.predicates.LookupWithType(pred_str)
          if predicate:
              pred = predicate, args, func_type
          else:
              # Nicer syntax, {.debug?} is shorthand for {.if test debug}.
              # Currently there is not if/elif chain; just use
              # {.if test debug} {.or test release} {.or} {.end}
              if test_attr:
                  assert pred_str.endswith('?')
                  # func, args, func_type
                  pred = (_TestAttribute, (pred_str[:-1],), ENHANCED_FUNC)
              else:
                  raise BadPredicate('%r is not a valid predicate' % pred_str)
          return pred