Apache Avro
Copyright 2010-2015 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

This library was original developed by Yann Kerherve with the following
copyright notice:

| Copyright (C) 2010 Yann Kerherve. All rights reserved.

