code: private void maybeAddUsage(NodeTraversal t, Node n, final JSTypeExpression expr) {
      // Just look at the root node, don't traverse.
      Predicate<Node> pred =
          new Predicate<Node>() {
            @Override
            public boolean apply(Node n) {
              return n == expr.getRoot();
            }
          };
      maybeAddUsage(t, n, expr.getRoot(), true, pred);
    }
docs: Adds a usage for the given type expression (unless it references a variable that is defined in
  the externs, in which case no goog.require() is needed). When a usage is added, it means that
  there should be a goog.require for that type.