Program: 53482
Project: 53482
Buggy source:
/** 
 * Inline a call to an expression. Returns   {@code InlineResult.BLACKLIST} if the method isdeemed not inlineable regardless of call site;  {@code InlineResult.DO_NOT_BLACKLIST}otherwise.
 */
private InlineResult tryInlineBody(JMethodCall x,Context ctx,List<JExpression> bodyAsExpressionList,boolean ignoringReturn){
  if (isTooComplexToInline(bodyAsExpressionList,ignoringReturn)) {
    return InlineResult.BLACKLIST;
  }
  ExpressionAnalyzer targetAnalyzer=new ExpressionAnalyzer();
  targetAnalyzer.accept(bodyAsExpressionList);
  if (targetAnalyzer.hasAssignmentToParameter()) {
    return InlineResult.BLACKLIST;
  }
  RecursionCheckVisitor recursionCheckVisitor=new RecursionCheckVisitor(x.getTarget());
  recursionCheckVisitor.accept(bodyAsExpressionList);
  if (recursionCheckVisitor.isRecursive()) {
    return InlineResult.BLACKLIST;
  }
  if (x.getTarget().getParams().size() != x.getArgs().size()) {
    return InlineResult.DO_NOT_BLACKLIST;
  }
  OrderVisitor orderVisitor=new OrderVisitor(x.getTarget().getParams());
  orderVisitor.accept(bodyAsExpressionList);
  if (orderVisitor.checkResults() == SideEffectCheck.NO_REFERENCES) {
    List<JExpression> expressions=expressionsIncludingArgs(x);
    expressions.addAll(bodyAsExpressionList);
    ctx.replaceMe(JjsUtils.createOptimizedMultiExpression(ignoringReturn,expressions));
    return InlineResult.DO_NOT_BLACKLIST;
  }
  if (orderVisitor.checkResults() == SideEffectCheck.FAILS) {
    for (    JExpression arg : x.getArgs()) {
      ExpressionAnalyzer argAnalyzer=new ExpressionAnalyzer();
      argAnalyzer.accept(arg);
      if (argAnalyzer.hasAssignment() || argAnalyzer.accessesField() || argAnalyzer.createsObject()|| argAnalyzer.canThrowException()) {
        return InlineResult.DO_NOT_BLACKLIST;
      }
    }
  }
  boolean hasSideEffects=x.hasSideEffects();
  if (!hasSideEffects) {
    for (    JExpression expression : bodyAsExpressionList) {
      if (expression instanceof JMethodCall) {
        ((JMethodCall)expression).setMethodHasSideEffects(false);
      }
    }
  }
  ParameterReplacer replacer=new ParameterReplacer(x);
  replacer.accept(bodyAsExpressionList);
  bodyAsExpressionList.add(0,x.getInstance());
  bodyAsExpressionList.add(1,createClinitCall(x));
  ctx.replaceMe(JjsUtils.createOptimizedMultiExpression(ignoringReturn,bodyAsExpressionList));
  return InlineResult.DO_NOT_BLACKLIST;
}

Fixed version (ground truth):
/** 
 * Inline a call to an expression. Returns   {@code InlineResult.BLACKLIST} if the method isdeemed not inlineable regardless of call site;  {@code InlineResult.DO_NOT_BLACKLIST}otherwise.
 */
private InlineResult tryInlineBody(JMethodCall x,Context ctx,List<JExpression> bodyAsExpressionList,boolean ignoringReturn){
  if (isTooComplexToInline(bodyAsExpressionList,ignoringReturn)) {
    return InlineResult.BLACKLIST;
  }
  ExpressionAnalyzer targetAnalyzer=new ExpressionAnalyzer();
  targetAnalyzer.accept(bodyAsExpressionList);
  if (targetAnalyzer.hasAssignmentToParameter()) {
    return InlineResult.BLACKLIST;
  }
  RecursionCheckVisitor recursionCheckVisitor=new RecursionCheckVisitor(x.getTarget());
  recursionCheckVisitor.accept(bodyAsExpressionList);
  if (recursionCheckVisitor.isRecursive()) {
    return InlineResult.BLACKLIST;
  }
  if (x.getTarget().getParams().size() != x.getArgs().size()) {
    return InlineResult.DO_NOT_BLACKLIST;
  }
  OrderVisitor orderVisitor=new OrderVisitor(x.getTarget().getParams());
  orderVisitor.accept(bodyAsExpressionList);
  if (orderVisitor.checkResults() == SideEffectCheck.NO_REFERENCES) {
    List<JExpression> expressions=expressionsIncludingArgs(x);
    expressions.addAll(bodyAsExpressionList);
    ctx.replaceMe(JjsUtils.createOptimizedMultiExpression(ignoringReturn,expressions));
    return InlineResult.DO_NOT_BLACKLIST;
  }
  if (orderVisitor.checkResults() == SideEffectCheck.FAILS) {
    for (    JExpression arg : x.getArgs()) {
      ExpressionAnalyzer argAnalyzer=new ExpressionAnalyzer();
      argAnalyzer.accept(arg);
      if (argAnalyzer.hasAssignment() || argAnalyzer.accessesField() || argAnalyzer.createsObject()|| argAnalyzer.canThrowException()) {
        return InlineResult.DO_NOT_BLACKLIST;
      }
    }
  }
  boolean hasSideEffects=x.hasSideEffects();
  if (!hasSideEffects) {
    new JModVisitor(){
      @Override public void endVisit(      JMethodCall x,      Context ctx){
        x.markSideEffectFree();
      }
    }
.accept(bodyAsExpressionList);
  }
  ParameterReplacer replacer=new ParameterReplacer(x);
  replacer.accept(bodyAsExpressionList);
  bodyAsExpressionList.add(0,x.getInstance());
  bodyAsExpressionList.add(1,createClinitCall(x));
  ctx.replaceMe(JjsUtils.createOptimizedMultiExpression(ignoringReturn,bodyAsExpressionList));
  return InlineResult.DO_NOT_BLACKLIST;
}