Program: 54657
Project: 54657
Buggy source:
public void classLambdaToJava(ClassNode node,BufferedWriter writer,int indent) throws IOException {
  ClassNode node_content=node;
  while (node_content != null && node_content.type == ClassNode.CLASS_LAMBDA) {
    node_content=node_content.parent;
  }
  if (node_content == null) {
    return;
  }
  boolean lambda_to_anonymous=DecompilerContext.getOption(IFernflowerPreferences.LAMBDA_TO_ANONYMOUS_CLASS);
  ClassNode nodeold=(ClassNode)DecompilerContext.getProperty(DecompilerContext.CURRENT_CLASSNODE);
  DecompilerContext.setProperty(DecompilerContext.CURRENT_CLASSNODE,node);
  ClassWrapper wrapper=node_content.wrapper;
  StructClass cl=wrapper.getClassStruct();
  DecompilerContext.getLogger().startWriteClass(node.simpleName);
  if (node.lambda_information.is_method_reference) {
    writer.write(ExprProcessor.getCastTypeName(new VarType(node.lambda_information.content_class_name,false)));
    writer.write("String_Node_Str");
    writer.write(node.lambda_information.content_method_name);
    writer.flush();
  }
 else {
    StructMethod mt=cl.getMethod(node.lambda_information.content_method_key);
    MethodWrapper meth=wrapper.getMethodWrapper(mt.getName(),mt.getDescriptor());
    MethodDescriptor md_content=MethodDescriptor.parseDescriptor(node.lambda_information.content_method_descriptor);
    MethodDescriptor md_lambda=MethodDescriptor.parseDescriptor(node.lambda_information.method_descriptor);
    if (!lambda_to_anonymous) {
      StringBuilder buff=new StringBuilder("String_Node_Str");
      boolean firstpar=true;
      int index=1;
      int start_index=md_content.params.length - md_lambda.params.length;
      for (int i=0; i < md_content.params.length; i++) {
        if (i >= start_index) {
          if (!firstpar) {
            buff.append("String_Node_Str");
          }
          String parname=meth.varproc.getVarName(new VarVersionPaar(index,0));
          buff.append(parname == null ? "String_Node_Str" + index : parname);
          firstpar=false;
        }
        index+=md_content.params[i].stack_size;
      }
      buff.append("String_Node_Str");
      writer.write(buff.toString());
    }
    StringWriter strwriter=new StringWriter();
    BufferedWriter bufstrwriter=new BufferedWriter(strwriter);
    if (lambda_to_anonymous) {
      methodLambdaToJava(node,node_content,mt,bufstrwriter,indent + 1,false);
    }
 else {
      methodLambdaToJava(node,node_content,mt,bufstrwriter,indent,true);
    }
    bufstrwriter.flush();
    writer.write("String_Node_Str");
    writer.write(DecompilerContext.getNewLineSeparator());
    writer.write(strwriter.toString());
    writer.write(InterpreterUtil.getIndentString(indent));
    writer.write("String_Node_Str");
    writer.flush();
  }
  DecompilerContext.setProperty(DecompilerContext.CURRENT_CLASSNODE,nodeold);
  DecompilerContext.getLogger().endWriteClass();
}

Fixed version (ground truth):
public void classLambdaToJava(ClassNode node,BufferedWriter writer,Exprent method_object,int indent) throws IOException {
  ClassNode node_content=node;
  while (node_content != null && node_content.type == ClassNode.CLASS_LAMBDA) {
    node_content=node_content.parent;
  }
  if (node_content == null) {
    return;
  }
  boolean lambda_to_anonymous=DecompilerContext.getOption(IFernflowerPreferences.LAMBDA_TO_ANONYMOUS_CLASS);
  ClassNode nodeold=(ClassNode)DecompilerContext.getProperty(DecompilerContext.CURRENT_CLASSNODE);
  DecompilerContext.setProperty(DecompilerContext.CURRENT_CLASSNODE,node);
  ClassWrapper wrapper=node_content.wrapper;
  StructClass cl=wrapper.getClassStruct();
  DecompilerContext.getLogger().startWriteClass(node.simpleName);
  if (node.lambda_information.is_method_reference) {
    if (!node.lambda_information.is_content_method_static && method_object != null) {
      writer.write(method_object.toJava(indent));
    }
 else {
      writer.write(ExprProcessor.getCastTypeName(new VarType(node.lambda_information.content_class_name,false)));
    }
    writer.write("String_Node_Str");
    writer.write(node.lambda_information.content_method_name);
    writer.flush();
  }
 else {
    StructMethod mt=cl.getMethod(node.lambda_information.content_method_key);
    MethodWrapper meth=wrapper.getMethodWrapper(mt.getName(),mt.getDescriptor());
    MethodDescriptor md_content=MethodDescriptor.parseDescriptor(node.lambda_information.content_method_descriptor);
    MethodDescriptor md_lambda=MethodDescriptor.parseDescriptor(node.lambda_information.method_descriptor);
    if (!lambda_to_anonymous) {
      StringBuilder buff=new StringBuilder("String_Node_Str");
      boolean firstpar=true;
      int index=node.lambda_information.is_content_method_static ? 0 : 1;
      ;
      int start_index=md_content.params.length - md_lambda.params.length;
      for (int i=0; i < md_content.params.length; i++) {
        if (i >= start_index) {
          if (!firstpar) {
            buff.append("String_Node_Str");
          }
          String parname=meth.varproc.getVarName(new VarVersionPaar(index,0));
          buff.append(parname == null ? "String_Node_Str" + index : parname);
          firstpar=false;
        }
        index+=md_content.params[i].stack_size;
      }
      buff.append("String_Node_Str");
      writer.write(buff.toString());
    }
    StringWriter strwriter=new StringWriter();
    BufferedWriter bufstrwriter=new BufferedWriter(strwriter);
    if (lambda_to_anonymous) {
      methodLambdaToJava(node,node_content,mt,bufstrwriter,indent + 1,false);
    }
 else {
      methodLambdaToJava(node,node_content,mt,bufstrwriter,indent,true);
    }
    bufstrwriter.flush();
    writer.write("String_Node_Str");
    writer.write(DecompilerContext.getNewLineSeparator());
    writer.write(strwriter.toString());
    writer.write(InterpreterUtil.getIndentString(indent));
    writer.write("String_Node_Str");
    writer.flush();
  }
  DecompilerContext.setProperty(DecompilerContext.CURRENT_CLASSNODE,nodeold);
  DecompilerContext.getLogger().endWriteClass();
}