Buggy code:
public class JRubyAsciidoctor implements Asciidoctor { private static final Logger log = LoggerFactory . getLogger ( JRubyAsciidoctor . class . getName ( ) ) ; private static final String GEM_PATH = "GEM_PATH" ; private static final int DEFAULT_MAX_LEVEL = 1 ; private AsciidoctorModule asciidoctorModule ; protected RubyGemsPreloader rubyGemsPreloader ; protected Ruby rubyRuntime ; private JRubyAsciidoctor ( AsciidoctorModule asciidoctorModule , Ruby rubyRuntime ) { } public static Asciidoctor create ( ) { } public static Asciidoctor create ( String gemPath ) { } public static Asciidoctor create ( List < String > loadPaths ) { } public static Asciidoctor create ( ClassLoader classloader ) { } private static void registerExtensions ( Asciidoctor asciidoctor ) { } private static Asciidoctor createJRubyAsciidoctorInstance ( List < String > loadPaths ) { } private static Asciidoctor createJRubyAsciidoctorInstance ( Map < String , Object > environmentVars ) { } private static Asciidoctor createJRubyAsciidoctorInstance ( ClassLoader classloader ) { } private static void injectEnvironmentVariables ( RubyInstanceConfig config , Map < String , Object > environmentVars ) { } private static RubyInstanceConfig createOptimizedConfiguration ( ) { } private DocumentHeader toDocumentHeader ( DocumentRuby documentRuby ) { } private StructuredDocument toDocument ( DocumentRuby documentRuby , Ruby rubyRuntime , int maxDeepLevel ) { } private List < ContentPart > getContents ( List < AbstractBlock > blocks , int level , int maxDeepLevel ) { } private ContentPart getContentPartFromBlock ( AbstractBlock child , int level , int maxDeepLevel ) { Object content = child . content ( ) ; String textContent ; if ( content instanceof String ) { textContent = ( ( String ) ( content ) ) ; } else { <START_BUG> textContent = child . render ( ) ; <END_BUG> } ContentPart contentPart = ContentPart . createContentPart ( child . id ( ) , level , child . context ( ) , child . title ( ) , child . style ( ) , child . role ( ) , child . attributes ( ) , textContent ) ; contentPart . setParts ( getContents ( child . blocks ( ) , ( level + 1 ) , maxDeepLevel ) ) ; return contentPart ; } @ SuppressWarnings ( "unchecked" ) @ Override public StructuredDocument readDocumentStructure ( File filename , Map < String , Object > options ) { } @ SuppressWarnings ( "unchecked" ) @ Override public StructuredDocument readDocumentStructure ( String content , Map < String , Object > options ) { } @ Override public StructuredDocument readDocumentStructure ( Reader contentReader , Map < String , Object > options ) { } @ SuppressWarnings ( "unchecked" ) @ Override public DocumentHeader readDocumentHeader ( File filename ) { } @ SuppressWarnings ( "unchecked" ) @ Override public DocumentHeader readDocumentHeader ( String content ) { } @ Override public DocumentHeader readDocumentHeader ( Reader contentReader ) { } private RubyHash getParseHeaderOnlyOption ( ) { } @ SuppressWarnings ( "unchecked" ) @ Override @ Deprecated public String render ( String content , Map < String , Object > options ) { } @ SuppressWarnings ( "unchecked" ) @ Override @ Deprecated public String renderFile ( File filename , Map < String , Object > options ) { } private String returnExpectedValue ( Object object ) { } @ Override @ Deprecated public void render ( Reader contentReader , Writer rendererWriter , Map < String , Object > options ) throws IOException { } @ Override @ Deprecated public String [ ] renderFiles ( Collection < File > asciidoctorFiles , Map < String , Object > options ) { } @ Override @ Deprecated public String [ ] renderFiles ( Collection < File > asciidoctorFiles , Options options ) { } @ Override @ Deprecated public String [ ] renderDirectory ( DirectoryWalker directoryWalker , Map < String , Object > options ) { } private List < String > renderAllFiles ( Map < String , Object > options , final Collection < File > asciidoctorFiles ) { } private List < File > scanForAsciiDocFiles ( DirectoryWalker directoryWalker ) { } @ Override @ Deprecated public String render ( String content , Options options ) { } @ Override @ Deprecated public void render ( Reader contentReader , Writer rendererWriter , Options options ) throws IOException { } @ Override @ Deprecated public String renderFile ( File filename , Options options ) { } @ Override @ Deprecated public String [ ] renderDirectory ( DirectoryWalker directoryWalker , Options options ) { } @ Override @ Deprecated public String render ( String content , OptionsBuilder options ) { } @ Override @ Deprecated public void render ( Reader contentReader , Writer rendererWriter , OptionsBuilder options ) throws IOException { } @ Override @ Deprecated public String renderFile ( File filename , OptionsBuilder options ) { } @ Override @ Deprecated public String [ ] renderDirectory ( DirectoryWalker directoryWalker , OptionsBuilder options ) { } @ Override @ Deprecated public String [ ] renderFiles ( Collection < File > asciidoctorFiles , OptionsBuilder options ) { } @ Override public JavaExtensionRegistry javaExtensionRegistry ( ) { } @ Override public RubyExtensionRegistry rubyExtensionRegistry ( ) { } @ Override public void unregisterAllExtensions ( ) { } @ Override public void shutdown ( ) { } @ Override public String asciidoctorVersion ( ) { } @ Override public String convert ( String content , Map < String , Object > options ) { } @ Override public String convert ( String content , Options options ) { } @ Override public String convert ( String content , OptionsBuilder options ) { } @ Override public void convert ( Reader contentReader , Writer rendererWriter , Map < String , Object > options ) throws IOException { } @ Override public void convert ( Reader contentReader , Writer rendererWriter , Options options ) throws IOException { } @ Override public void convert ( Reader contentReader , Writer rendererWriter , OptionsBuilder options ) throws IOException { }

Fix:
textContent = child . convert ( ) ;