anchor.diff:  <4> Create a PhraseNode with context `image` and no text.
   <5> The macro processor has to return the converted PhraseNode.
   
  -
  +// #506
  +
  +It was noted at the start of this section that the target (the x in `\menu:x[]`) is optional. 
  +If you want a macro that does not have a target (for example `cite:[brown79]`) add the following annotation to your class:
  +
  +[source,java,indent=0]
  +----
  +@Name("cite")
  +@Format(SHORT)
  +class CiteInlineMacroProcessor extends InlineMacroProcessor {
  +  ...
  +}
  +----
  +
  +With the SHORT format, the attributes are not parsed, and the 'target' that is passed to your macro is the value between the brackets ("brown79").
  +
  +
  +[[blockprocessor]]
   === Block Processors
   
   A block processor is very similar to a block macro processor.
  
positive.code: <1> The block macro processor is registered at the `JavaExtensionRegistry` of the Asciidoctor instance.
  <2> Check that the resulting HTML contains the `<script>` element that you also get from the https://gist.github.com when you get the HTML snippet to embed a gist.
  
  
  === Inline Macro Processors
  
  An inline macro is very similar to a block macro.
  
negative.code: But before starting to write your first extension it is essential to understand how Asciidoctor treats the document:
  The raw text content is parsed into a tree structure which is then transformed into the target format.
  Therefore this section first goes into the details of this tree structure before explaining what extensions are possible and how to implement them.
  
  
  === Understanding the AST classes
  
  