Changes from 1.1.2 to 1.1.4
---------------------------
Improvement
    [FELIX-5963] - Gogo runtime should use named executor threads
    [FELIX-6038] - pull Java 7 support back in for gogo runtime,shell and console

Changes 1.1.0 to 1.1.2
----------------------
Improvement
    [FELIX-5970] - Add requirement & capabilities model so gogo can be resolved
    [FELIX-5999] - cleanup compiler warnings
    [FELIX-6001] - cleanup compiler warnings
    [FELIX-6003] - Add some resolver checks to make sure @RequireGogo annotation works for both jline and shell
    [FELIX-6007] - create a gogo bom

Changes 1.0.12 to 1.1.0
-----------------------
New Feature
    [FELIX-5835] - Upgrade to JDK 8
    [FELIX-5836] - Upgrade to OSGi r6

Improvement
    [FELIX-5855] - Support array subscript in expander
    [FELIX-5856] - Coercion between Object[] and List
    [FELIX-5857] - Provide a context classloader on the session to help with class loading

Changes 1.0.10 to 1.0.12
------------------------
Bug
    [FELIX-5805] - [gogo][runtime] OOM caused by endless loop when parsing "]"
    [FELIX-5821] - [gogo][runtime] Hitting Ctrl+C may kill the console output thread

Improvement
    [FELIX-5726] - Thread create by gogo should be named

Changes 1.0.8 to 1.0.10
-----------------------
Bug
    [FELIX-5706] - Unable to access DTO fields using reflection

Improvement
    [FELIX-5715] - Central point to allow customization of security related checks

Changes 1.0.6 to 1.0.8
----------------------
Bug
    [FELIX-5637] - [gogo][runtime] Error throwns by commands are swallowed and lost
    [FELIX-5655] - Possible NPE in Expression.isNumber when passing an empty string
    [FELIX-5656] - [gogo][runtime] The Expander does not correctly support octal values

Changes 1.0.4 to 1.0.6
----------------------
Bug
    [FELIX-5599] - Allow reusing a closure from a parent session

Improvement
    [FELIX-5633] - [gogo][runtime] The file name generation should take ~ into account
    [FELIX-5634] - [gogo][runtime] The file name generation may loop into subtrees for nothing

Changes 1.0.2 to 1.0.4
----------------------
Bug
    [FELIX-5462] - [gogo][runtime] Unable to add a converter using reflection
    [FELIX-5465] - [gogo][runtime] No way to concatenate arrays
    [FELIX-5486] - [gogo][runtime] Avoid unnecessary conversions from strings to booleans/integers
    [FELIX-5541] - ArrayIndexOutOfBoundsException in the parser

Changes 1.0.0 to 1.0.2
----------------------
Bug
    [FELIX-5433] - Interrupting a job should interrupt its children
    [FELIX-5440] - [gogo] Do not print results at end of pipe
    [FELIX-5441] - [gogo] Do not print stack traces when inspection can not access fields

Changes 0.16.2 to 1.0.0
-----------------------
New Feature
    [FELIX-5272] - New gogo features

Improvement
    [FELIX-4970] - all felix poms should advertise their SCM

Task
    [FELIX-5378] - [gogo] Upgrade packages and bundle to 1.0.0

Changes 0.14.0 to 0.16.2
------------------------

** Bug
    * [FELIX-4783] - ConcurrentModificationException when stopping

** New Feature
    * [FELIX-4671] - Provide an expression parser

Changes 0.12.1 to 0.14.0
------------------------

** Bug
    * [FELIX-4637] - Gogo can't cope without several commands with defined service.ranking

** New Feature
    * [FELIX-4671] - Provide an expression parser


Changes 0.12.0 to 0.12.1
------------------------

** Bug
    * [FELIX-4533] - Gogo runtime does not advertise published services


Changes 0.10.0 to 0.12.0
------------------------

** Bug
    * [FELIX-4336] - The use of inheritable thread locals in ThreadIO can cause problems

** Improvement
    * [FELIX-3590] - Add system property resolution to CommandSessionImpl
    * [FELIX-4363] - The CommandSession get/set methods are not thread safe


Changes 0.8.0 to 0.10.0
-----------------------

** Bug
    * [FELIX-2870] - ConcurrentModificationException in gogo runtime
    * [FELIX-2894] - Gogo does not handles options but not parameters
    * [FELIX-2927] - [gogo] coercion mechanism invokes foo(String) instead
      of foo(int) - even with explicit int argument

Changes 0.6.1 to 0.8.0
----------------------

** Bug
    * [FELIX-2723] - When the execution of a closure with pipes is
      interrupted, pipes should be interrupted too

** New Feature
    * [FELIX-2761] - Add a way to listen to execution of command lines
    * [FELIX-2764] - Publish OSGi EventAdmin events when executing a command
      line

Changes 0.6.0 to 0.6.1
----------------------

** Bug
    * [FELIX-1473] - [gogo] The syntax does not provide a way to call
      methods on a string
    * [FELIX-2432] - [gogo] NPE/coercion failure when null first parameter
      to method expecting arry
    * [FELIX-2545] - [gogo] runtime should close all open sessions when it
      is stopped
    * [FELIX-2606] - Gogo isn't decoupled from OSGi anymore

** Improvement
    * [FELIX-2396] - Ability to have callbacks when accessing session variables
    * [FELIX-2433] - [gogo] allow command expansion inside double quotes
    * [FELIX-2607] - Introduce a specific exception when a command is not
      foundGogo Runtime 0.6.1

Gogo Runtime 0.6.0
------------------

** Bug
    * [FELIX-1473] - [gogo] The syntax does not provide a way to call methods
      on a string
    * [FELIX-1474] - [gogo] result of commands is implicitly written to pipe
    * [FELIX-1493] - [gogo] automatic expansion of $args in Closure stops
      direct access to $args list
    * [FELIX-2337] - [gogo] no way to access array[] elements produced by
      assignment
    * [FELIX-2375] - [gogo] when supplied args can't be coerced, the error
      message prints the arg values, rather than their types
    * [FELIX-2380] - [gogo] lock contention in piped writer when reader
      doesn't read all input

** Improvement
    * [FELIX-1487] - Support for commands on multiple lines
    * [FELIX-2328] - [gogo] tidy-up runtime to remove optional code etc
    * [FELIX-2339] - [gogo] add support for running scripts
    * [FELIX-2342] - [gogo] remove old felix command adaptor

** New Feature
    * [FELIX-2363] - [Gogo] Add annotations for creating commands with
      optional and out-of-order arguments

** Task
    * [FELIX-1670] - [gogo] launcher bundle not required
    * [FELIX-1889] - Gogo should depend on the official OSGi jars
    * [FELIX-2334] - [Gogo] Use org.apache.felix as Maven groupId
    * [FELIX-2367] - [Gogo] Use org.apache.felix namespace to avoid any
      perceived legal issues
