Changes from 1.1.0 to 1.1.2
---------------------------
Improvement
    [FELIX-6038] - pull Java 7 support back in for gogo runtime,shell and console

Changes from 1.0.2 to 1.1.0
---------------------------
Bug
    [FELIX-5143] - Gogo Command bundle should not include org.osgi.service.log classes
    [FELIX-5958] - gogo command exports org.osgi.service.log

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

Improvement
    [FELIX-5969] - remove transitive dependencies from gogo command
    [FELIX-5970] - Add requirement & capabilities model so gogo can be resolved
    [FELIX-5999] - cleanup compiler warnings
    [FELIX-6002] - Remove legacy code in Gogo Command
    [FELIX-6003] - Add some resolver checks to make sure @RequireGogo annotation works for both jline and shell
    [FELIX-6007] - create a gogo bom

Changes from 1.0.0 to 1.0.2
---------------------------
** Bug
    * [FELIX-5392] - Gogo-command has mandatory dependency on bundlerepository

Changes from 0.16.0 to 1.0.0
----------------------------
** Task
    * [FELIX-5378] - [gogo] Upgrade packages and bundle to 1.0.0

Changes from 0.14.0 to 0.16.0
-----------------------------
** Improvement
    * FELIX-5021 [GOGO] Use system bundle to find bundles
    * FELIX-5009 Relative URIs would be nice for install and update
    * FELIX-5008 gogo usage messages could be less confusing
    * FELIX-3499 felix:cd command works only with relative paths

** Bug
    * FELIX-4969 cd refuses to leave initial directory

Changes from 0.12.0 to 0.14.0
-----------------------------

* Fix a NPE with the obr:info command

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

** Improvement
    * [FELIX-3050] - [Gogo Command] Update "inspect" command to work with OSGi R4.3 generic capabilities/requirements
    * [FELIX-3088] - [Gogo Command] The "resolve" command should print some message if not all bundles could be resolved
    * [FELIX-3118] - obr:deploy should allow user to specify whether optional bundles are deployed or not

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
