code: private String process() throws IOException
      {
          final StringBuilder out = new StringBuilder();
          final Block parent = this.readLines();
          parent.removeSurroundingEmptyLines();
  
          this.recurse(parent, false);
          Block block = parent.blocks;
          while (block != null)
          {
              this.emitter.emit(out, block);
              block = block.next;
          }
  
          return out.toString();
      }
docs: Does all the processing.
  
  @return The processed String.
  @throws IOException
  If an IO error occurred.