anchor.diff:    }
   
   }
  -----------------------------------------------------------------------
  +----
   
  -...Camel will use your custom GroovyShell instance (containing your
  +Camel will then use your custom GroovyShell instance (containing your
   custom static imports), instead of the default one.
  -
  -=== Customizing Groovy class file name
  -
  -You may rarely in need of customizing generated Groovy class file name for debugging purposes.
  -This is also possible by implementing `getFileName` method.
  -
  -[source,java]
  -----------------------------------------------------------------------
  -public class CustomGroovyShellFactory implements GroovyShellFactory {
  -
  -  public GroovyShell createGroovyShell(Exchange exchange) {
  -    return new GroovyShell();
  -  }
  -
  -  public String getFileName(Exchange exchange) {
  -    return "Foo.groovy";
  -  }
  -
  -}
  -----------------------------------------------------------------------
  -
  -== Example
  -
  -[source,java]
  -------------------------------------------------------------------------------------------------
  -// lets route if a line item is over $100
  -from("queue:foo").filter(groovy("request.lineItems.any { i -> i.value > 100 }")).to("queue:bar")
  -------------------------------------------------------------------------------------------------
  -
  -And the Spring DSL:
  -
  -[source,xml]
  ------------------------------------------------------------------------------
  -        <route>
  -            <from uri="queue:foo"/>
  -            <filter>
  -                <groovy>request.lineItems.any { i -> i.value > 100 }</groovy>
  -                <to uri="queue:bar"/>
  -            </filter>
  -        </route>
  ------------------------------------------------------------------------------
  -
  -== Additional arguments to ScriptingEngine
  -
  -You can provide additional arguments to the `ScriptingEngine` using a
  -header on the Camel message with the key `CamelScriptArguments`. +
  - See this example:
   
   == Loading script from external resource
   
  
positive.code: -------------------------------------------------------------------
  .setHeader("myHeader").groovy("resource:classpath:mygroovy.groovy")
  -------------------------------------------------------------------
  
  == How to get the result from multiple statements script
  
  As the scripteengine evaluate method just return a Null if it runs a
  multiple statements script. Camel now look up the value of script result
  by using the key of "result" from the value set. If you have multiple
  statements script, you need to make sure you set the value of result
  variable as the script return value.
  
  [source,text]
  -------------------------------------------------------------
  bar = "baz";
  # some other statements ...
  # camel take the result value as the script evaluation result
  result = body * 2 + 1
  -------------------------------------------------------------
  
  == Dependencies
  
  
negative.code: |===
  // language options: END
  
  == Examples
  
  In the example below we use a groovy script as predicate in the message filter,
  to determine if any line items is over $100:
  
  [source,java]
  ------------------------------------------------------------------------------------------------
  // lets route if a line item is over $100
  from("queue:foo")
      .filter(groovy("request.lineItems.any { i -> i.value > 100 }"))
          .to("queue:bar")
  ------------------------------------------------------------------------------------------------
  
  And in XML DSL:
  
  [source,xml]
  ----
  <route>
      <from uri="queue:foo"/>
      <filter>
          <groovy>request.lineItems.any { i -> i.value > 100 }</groovy>
          <to uri="queue:bar"/>
      </filter>
  </route>
  ----
  
  == How to get the result from multiple statements script
  
  As the Groovy script engine evaluate method just return a `Null` if it runs a
  multiple statements script. Camel now look up the value of script result
  by using the key of "result" from the value set. If you have multiple
  statements script, you need to make sure you set the value of result
  variable as the script return value.
  
  [source,text]
  -------------------------------------------------------------
  bar = "baz";
  # some other statements ...
  # camel take the result value as the script evaluation result
  result = body * 2 + 1
  -------------------------------------------------------------
  
  == Customizing Groovy Shell
  
  For very special use-cases you may need to use a custom `GroovyShell` instance in your
  Groovy expressions. To provide the custom `GroovyShell`, add an implementation
  of the `org.apache.camel.language.groovy.GroovyShellFactory` SPI
  interface to the Camel registry.
  
  [source,java]
  ----
  public class CustomGroovyShellFactory implements GroovyShellFactory {
  
    public GroovyShell createGroovyShell(Exchange exchange) {
  