Program: 27290
Project: 27290
Buggy source:
/** 
 * Updates the FunctionState object for the given function. Checks if the given function matches the criteria for an inlinable function.
 */
private void maybeAddFunction(Function fn,JSModule module){
  String name=fn.getName();
  FunctionState fs=getOrCreateFunctionState(name);
  if (fs.hasExistingFunctionDefinition()) {
    fs.setInline(false);
    return;
  }
  Node fnNode=fn.getFunctionNode();
  if (enforceMaxSizeAfterInlining && !isAlwaysInlinable(fnNode) && maxSizeAfterInlining <= NodeUtil.countAstSizeUpToLimit(fnNode,maxSizeAfterInlining)) {
    fs.setInline(false);
    return;
  }
  if (fs.canInline()) {
    fs.setFn(fn);
    if (FunctionInjector.isDirectCallNodeReplacementPossible(fn.getFunctionNode())) {
      fs.inlineDirectly(true);
    }
    if (!isCandidateFunction(fn)) {
      fs.setInline(false);
    }
    if (fs.canInline()) {
      fs.setModule(module);
      Set<String> namesToAlias=FunctionArgumentInjector.findModifiedParameters(fnNode);
      if (!namesToAlias.isEmpty()) {
        fs.inlineDirectly(false);
        fs.setNamesToAlias(namesToAlias);
      }
      Node block=NodeUtil.getFunctionBody(fnNode);
      if (NodeUtil.referencesThis(block)) {
        fs.setReferencesThis(true);
      }
      if (NodeUtil.containsFunction(block)) {
        fs.setHasInnerFunctions(true);
        if (!assumeMinimumCapture && hasLocalNames(fnNode) && !NodeUtil.isIIFE(fnNode)) {
          fs.setInline(false);
        }
      }
    }
    if (fs.canInline() && !fs.canInlineDirectly() && !blockFunctionInliningEnabled) {
      fs.setInline(false);
    }
  }
}

Fixed version (ground truth):
/** 
 * Updates the FunctionState object for the given function. Checks if the given function matches the criteria for an inlinable function.
 */
private void maybeAddFunction(Function fn,JSModule module){
  String name=fn.getName();
  FunctionState fs=getOrCreateFunctionState(name);
  if (fs.hasExistingFunctionDefinition()) {
    fs.setInline(false);
    return;
  }
  Node fnNode=fn.getFunctionNode();
  if (enforceMaxSizeAfterInlining && !isAlwaysInlinable(fnNode) && maxSizeAfterInlining <= NodeUtil.countAstSizeUpToLimit(fnNode,maxSizeAfterInlining)) {
    fs.setInline(false);
    return;
  }
  if (fs.canInline()) {
    fs.setFn(fn);
    if (FunctionInjector.isDirectCallNodeReplacementPossible(fn.getFunctionNode())) {
      fs.inlineDirectly(true);
    }
    if (!isCandidateFunction(fn)) {
      fs.setInline(false);
    }
    if (fs.canInline()) {
      fs.setModule(module);
      Set<String> namesToAlias=FunctionArgumentInjector.findModifiedParameters(fnNode);
      if (!namesToAlias.isEmpty()) {
        fs.inlineDirectly(false);
        fs.setNamesToAlias(namesToAlias);
      }
      Node block=NodeUtil.getFunctionBody(fnNode);
      if (NodeUtil.referencesThis(block)) {
        fs.setReferencesThis(true);
      }
      if (NodeUtil.containsFunction(block)) {
        fs.setHasInnerFunctions(true);
        if (!assumeMinimumCapture && hasLocalNames(fnNode)) {
          fs.setInline(false);
        }
      }
    }
    if (fs.canInline() && !fs.canInlineDirectly() && !blockFunctionInliningEnabled) {
      fs.setInline(false);
    }
  }
}