code: FunctionTypeBuilder inferThisType(JSDocInfo info) {
      if (info != null && info.hasThisType()) {
        // TODO(johnlenz): In ES5 strict mode a function can have a null or
        // undefined "this" value, but all the existing "@this" annotations
        // don't declare restricted types.
        JSType maybeThisType =
            info.getThisType().evaluate(templateScope, typeRegistry).restrictByNotNullOrUndefined();
        if (maybeThisType != null) {
          thisType = maybeThisType;
        }
      }
  
      return this;
    }
docs: Infers the type of {@code this}.
  @param info The JSDocInfo for this function.