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

** Bug
    * [FELIX-2937] - [Gogo Command] OBR commands do not output anything
      when nothing is found
    * [FELIX-2938] - [Gogo Command] The "info" command throws an NPE if
      the specified bundle identifier doesn't exist
    * [FELIX-3001] - [gogo] help command throws ClassCastException if any
      osgi.command.function service property is not String[]

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

** Bug
    * [FELIX-2676] - bundlelevel gogo command will never work for modifying
      bundle level

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

* Import Gogo packages with mandatory attribute.

Gogo Command 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
