anchor.diff:      (println (.bar y))))
   
   ----
  -Compile as above, and run like an ordinary Java app:
  -[source,clojure]
  -----
  -java -cp ./classes:clojure.jar clojure.examples.instance asdf
  +
  +Compile as above:
  +
  +[source,clojure]
  +----
  +$ clj
  +Clojure 1.10.1
  +user=> (compile 'clojure.examples.instance)
  +clojure.examples.instance
  +----
  +
  +And run like an ordinary Java app:
  +
  +[source,clojure]
  +----
  +java -cp `clj -Spath` clojure.examples.instance asdf
   a
   s
   d
   f
   class clojure.examples.impl
   I am an IBar
  -
  -----
  +----
  
positive.code: 
  ----
  
  To compile, first ensure the target output directory `classes` exists:
  
  [source,shell]
  ----
  mkdir classes
  ----
  
  Then compile to generate the classes as follows:
  
  [source,clojure]
  ----
  (compile 'clojure.examples.hello)
  ----
  And can be run like an ordinary Java app like so (be sure to include the output classes directory):
  [source,clojure]
  ----
  java -cp ./classes:clojure.jar clojure.examples.hello Fred
  Hello Fred!
  ----
  
  
negative.code: Classes generated by Clojure are highly dynamic. In particular, note that no method bodies or other implementation details are specified in gen-class - it specifies only a signature, and the class that it generates is only a stub. This stub class defers all implementation to functions defined in the implementing namespace. At runtime, a call to some method foo of the generated class will find the current value of the var implementing.namespace/prefixfoo and call it. If the var is not bound or nil, it will call the superclass method, or if an interface method, generate an UnsupportedOperationException.
  
  == gen-class Examples
  
  In the simplest case, an empty :gen-class is supplied, and the compiled class has only main, which is implemented by defining -main in the namespace. The file should be saved in src/clojure/examples/hello.clj:
  
  [source,clojure]
  ----
  (ns clojure.examples.hello
  