code: public void generateError(MacroBlock macroToReplace, String message, Throwable throwable)
      {
          List<Block> errorBlocks =
              this.errorBlockGenerator.generateErrorBlocks(message, throwable, macroToReplace.isInline());
          macroToReplace.getParent().replaceChild(wrapInMacroMarker(macroToReplace, errorBlocks), macroToReplace);
      }
docs: Generates Blocks to signify that the passed Macro Block has failed to execute.
  
  @param macroToReplace the block for the macro that failed to execute and that we'll replace with Block
  showing to the user that macro has failed
  @param message the message to display to the user in place of the macro result
  @param throwable the exception for the failed macro execution to display to the user in place of the macro result