<document xmlns="http://maven.apache.org/changes/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/plugins/maven-changes-plugin/xsd/changes-1.0.0.xsd">
    <properties>
        <title>YAML 1.1 parser and emitter</title>
        <author email="py4fun@gmail.com">Andrey Somov</author>
    </properties>
    <body>
        <release version="1.13-SNAPSHOT" date="in Mercurial" description="Maintenance">
             <action dev="py4fun" type="fix"  issue="172">
                Using a locale with minimum number fraction digits breaks anchor generation (2013-03-30)
             </action>
             <action dev="py4fun" type="fix"  issue="171">
                Use more generic generics in BaseRepresenter (2013-03-30)
             </action>
        </release>
        <release version="1.12" date="2013-03-02" description="Maintenance">
             <action dev="py4fun" type="update">
                The build is using JDK 1.6 (2013-03-02)
             </action>
             <action dev="py4fun" type="fix"  issue="169">
                Make Constructor.typeDefinitions protected to be more flexible (2013-02-18)
             </action>
             <action dev="py4fun" type="remove">
                Remove file AUTHORS because it does not reflect the actual situation (2012-11-09)
             </action>
             <action dev="py4fun" type="update">
                Improve the error message when a TAB character starts a token (2012-11-06)
             </action>
        </release>
        <release version="1.11" date="2012-09-29" description="Maintenance">
             <action dev="py4fun" type="fix"  issue="158">
                Fix issue 158: improve support for 32-bit characters (UTF-16 surrogate pairs) (2012-09-29)
             </action>
             <action dev="py4fun" type="fix"  issue="146">
                Fix issue 146: empty tags should not force explicit document start (2012-09-29)
             </action>
             <action dev="py4fun" type="fix"  issue="156">
                Fix issue 156: setSkipMissingProperties fails for non-scalar values (2012-09-05)
             </action>
             <action dev="py4fun" type="fix"  issue="155">
                Fix issue 155: SnakeYAML must always eat its own food - a YAML document created by itself must
                be read without exceptions (2012-09-04)
             </action>
             <action dev="py4fun" type="update"  issue="154">
                Fix issue 154: Add option to skip missing properties when deserializing YAML into Java object (2012-07-25)
             </action>
             <action dev="py4fun" type="update">
                Add a test for issue 150 (2012-06-17)
             </action>
             <action dev="py4fun" type="update">
                Add a test for issue 151 (2012-06-14)
             </action>
             <action dev="py4fun" type="fix">
                Fix issue 149: Directives are no longer lost between documents (2012-06-10)
             </action>
             <action dev="py4fun" type="update">
                Refactor: use Version enum instead of Array of Integers. 
                This is done to simplify fixing issue 149 (2012-06-09)
             </action>
             <action dev="py4fun" type="fix">
                Add tests for issue 148  (2012-06-07)
             </action>
             <action dev="py4fun" type="fix">
                Fix issue 147: Serialized representation of character U+FFFD causes exception on deserialization  (2012-06-05)
             </action>
             <action dev="py4fun" type="fix">
                Fix issue 145: exception.getMessage() must show the line number as exception.toString() does (2012-04-03)
             </action>
             <action dev="maslovalex" type="fix">
                Fix issue 144: improve type inference for Compact Object Notation (2012-03-16)
             </action>
             <action dev="maslovalex" type="add">
                Improve Android support
             </action>
        </release>
        <release version="1.10" date="2012-02-08" description="Maintenance">
             <action dev="py4fun" type="update">
                Fix issue 141: TimeZone is configurable in DumperOptions (2012-02-03)
             </action>
             <action dev="py4fun" type="update">
                Refactor with PMD: minor non-functional improvements (2012-01-28)
             </action>
             <action dev="py4fun" type="update">
                Refactor with PMD: Avoid unused method parameter 'index' in 
                Serializer and Emitter (2012-01-28)
             </action>
             <action dev="py4fun" type="update">
                Refactor with PMD: Composer - Avoid unused method parameter 'index' in 
                'Composer.composeNode(Node parent, Object index)''. It was used
                in PyYAML for kind of XPath for YAML, but it was not imported from PyYAML (2012-01-28)
             </action>
             <action dev="py4fun" type="update">
                Refactor Emitter: the SPACE mutable static field could be changed by malicious code or by accident. 
                Boxed value is unboxed and then immediately reboxed (2012-01-28)
             </action>
             <action dev="py4fun" type="remove">
                Refactor with FindBugs: remove unused ScalarAnalysis.allowDoubleQuoted (2012-01-28)
             </action>
             <action dev="py4fun" type="update">
                Refactor with FindBugs: do not rely on default encoding (2012-01-28)
             </action>
             <action dev="py4fun" type="update">
                Refactor: apply FindBugs recommendations (2012-01-28)
             </action>
             <action dev="maslovalex" type="fix">
                Fix issue 139: merge should use last key in map (2012-01-24)
             </action>
             <action dev="py4fun" type="fix">
                Fix issue 136: tabs are allowed in plain scalars. This is a deviation from PyYAML (2012-01-11)
             </action>
             <action dev="py4fun" type="add" issue="138">
                Expose internal data of ReaderException (2012-01-06)
             </action>
             <action dev="py4fun" type="fix" issue="137">
                Respect supplementary characters (2012-01-06)
             </action>
             <action dev="py4fun" type="add">
                Use http://mercurial.selenic.com/wiki/EolExtension to force LF  as line separator
                for all operating systems (2011-12-20)
             </action>
             <action dev="py4fun" type="add">
                Add a test for issue 136 (2011-12-14)
             </action>
              <action dev="py4fun" type="remove">
                Deprecate the DumperOptions.calculateScalarStyle() method because it was introduced as a quick
                fix for issue 29. Now it should not be required at all (because of the fix for issue 66),
                or it should be implemented in the Representer (in RepresentString) (2011-10-10)
             </action>
             <action dev="py4fun" type="fix">
                Fix issue 66: literal scalar style is used by default for multiline scalars (2011-10-10)
             </action>
             <action dev="py4fun" type="add">
                An example added: how to dump multiline literal scalars (2011-10-04)
             </action>
             <action dev="py4fun" type="add">
                An example added: how to dump recursive object for issue 133 (2011-09-14)
             </action>
             <action dev="py4fun" type="add">
                A test added for issue 132 (2011-09-13)
             </action>
             <action dev="py4fun" type="update">
                Finish 1.9 release (2011-08-15)
             </action>
        </release>
        <release version="1.9" date="2011-08-15" description="Introduce Yaml.loadAs() and Yaml.dumpAs() methods">
            <action dev="py4fun" type="update">
                Add a test to prove that SnakeYAML is not affected by the problem reported for libyaml
                at http://pyyaml.org/ticket/196 (2011-07-28)
            </action>
            <action dev="py4fun" type="fix" issue="128">
                Since timestamp contains ':' characters it is dumped with single quoted scalar style 
                in the flow context. The single quoted scalar style causes to dump the explicit tag. 
                In the block context the plain scalar can be used and the tag is not required. It may cause
                unpredictable behaviour if the tag is required. See the comments in JodaTimeExampleTest (2011-07-25)
            </action>
            <action dev="py4fun" type="fix" issue="130">
                Fix scientific notation inconsistency in the YAML 1.1 specification: 
                scalar '8e-06' should be parsed as a Double (2011-07-24)
            </action>
            <action dev="py4fun" type="remove" issue="127">
                Do not allow to override BaseRepresenter.representData(Object data) because 
                users should instead implement Represent interface (2011-07-21)
            </action>
            <action dev="py4fun" type="remove" issue="124">
                Deprecate DumperOptions.explicitRoot (2011-07-20)
            </action>
            <action dev="py4fun" type="add" issue="124">
                Add Yaml.dumpAs(Object, Tag.MAP, FlowStyle) and Yaml.dumpAsMap(Object) methods. JavaBeanDumper is marked as deprecated (2011-07-16)
            </action>
            <action dev="py4fun" type="add" issue="127">
                Add example to show how to dump a custom class (2011-07-12)
            </action>
            <action dev="py4fun" type="add" issue="129">
                Add Yaml.serialize(Node) low level method to the public API (2011-07-14)
            </action>
            <action dev="py4fun" type="add" issue="129">
                Add Yaml.represent(Object) low level method to the public API (2011-07-14)
            </action>
            <action dev="py4fun" type="add" issue="125">
                Add support for Maven 3 via 'm3' profile (2011-07-10)
            </action>
            <action dev="py4fun" type="remove" issue="124">
                Remove deprecated JavaBeanParser (2011-07-05)
            </action>
            <action dev="py4fun" type="remove" issue="124">
                Remove redundant JavaBeanDumper.classTags set (2011-07-03)
            </action>
            <action dev="py4fun" type="add" issue="124">
                Add Yaml.loadAs() methods. JavaBeanLoader is marked as deprecated (2011-07-03)
            </action>
            <action dev="py4fun" type="remove" issue="124">
                Remove TypeDescription.root property to prepare issue 124. This is a minor backwards incompatible change.
                Now instead of setting as root, the TypeDescription must be passed to the Contructor's constructor
                to be taken as the root definition (2011-07-03)
            </action>
            <action dev="py4fun" type="fix" issue="121" due-to="Jaromir">
                Fix: close files in tests to avoid a possible file handle limit (2011-06-09)
            </action>
            <action dev="py4fun" type="fix" issue="116" due-to="Jim Peterson">
                Fix: Improved support for empty JavaBeans (2011-06-09)
            </action>
            <action dev="py4fun" type="fix" issue="112" due-to="Lethargish">
                Fix: Improved support for parameterised types in collections (2011-05-25)
            </action>
            <action dev="py4fun" type="fix" issue="115" due-to="elkniwt">
                Fix: parameterised JavaBeans fail to load and dump because they are treated as Maps (2011-05-16)
            </action>
            <action dev="py4fun" type="fix" issue="114" due-to="gileadis">
                Fix: Do not remove root tags of JavaBeans when it is not explicitly requested (2011-04-20)
            </action>
            <action dev="py4fun" type="fix" issue="111" due-to="JordanAngold">
                Fix: Long escaped tag URI sequences throw BufferOverflowException (2011-03-03)
            </action>
            <action dev="py4fun" type="fix" issue="110" due-to="dmitry.s.mamonov">
                Fix: introduce a package for external libraries and move there the 64Coder 
                and the Google's URL encoder (2011-02-24)
            </action>
            <action dev="py4fun" type="fix" issue="109" due-to="cjalmeida">
                Fix: ancient years must be dumped with leading zeros (2011-02-19)
            </action>
            <action dev="py4fun" type="remove" due-to="JordanAngold">
                Remove unused code in Constructor: Modifier.isAbstract() is not needed any more (2011-02-18)
            </action>
            <action dev="JordanAngold" type="fix" issue="108">
                Enum's name property shall be dumped instead of the 'toString()' output (2011-02-16)
            </action>
        </release>
        <release version="1.8" date="2011-02-15" description="Performance improvement">
            <action dev="py4fun" type="add">
                Add example to howto Wiki:
                How_to_substitute_object_in_YAML_document_with_a_custom_object (2011-01-27)
            </action>
            <action dev="py4fun" type="update">
                When the YAML document to be loaded is provided as String parse it directly
                without making a Reader first (2011-01-23)
            </action>
            <action dev="py4fun" type="fix" issue="106">
                Immutable data structures in StreamReader allow to share the same buffer for all
                the Mark instances. It makes 'withMarkContext' setting redundant (2011-01-19)
            </action>
            <action dev="maslovalex" type="update" issue="100">
                Merge JavaBean properties when an explicit tag is provided (2011-01-11)
            </action>
            <action dev="py4fun" type="update" issue="99">
                Add an example for escaping line breaks in binary content (2011-01-03)
            </action>
            <action dev="py4fun" type="update" issue="97">
                Propose a solution for JavaBeans to support SortedSet property when it is encoded 
                as a sequence (2010-11-24)
            </action>
            <action dev="py4fun" type="update" issue="59">
                Simplify the way how the order of JavaBean properties is specified. Introduce 
                PropertyUtils.createPropertySet() method to be overridden when a specific order
                is expected (2010-11-23)
            </action>
            <action dev="maslovalex" type="fix" issue="95">
                Fix: Loading of generic collections with Array parameter(s). (2010-11-16)
            </action>
            <action dev="py4fun" type="update" issue="94">
                Add ChangeRuntimeClassTest as an example how to change a class for a global tag (2010-11-05)
            </action>
            <action dev="py4fun" type="update">
                Inner objects in Constructor become protected to be more flexible when Constructor
                is expended (2010-10-03)
            </action>
            <action dev="py4fun" type="update" issue="91">
                Apply www.snakeyaml.org domain name (2010-09-20)
            </action>
            <action dev="py4fun" type="fix" issue="90">
                Move Base64Coder into another package to keep a separate copyright statement.
                Base64Coder is left unchanged (2010-09-19)
            </action>
            <action dev="py4fun" type="fix" issue="69">
                Iterable should not be serialised as sequence (2010-09-16)
            </action>
            <action dev="py4fun" type="update">
                Introduce 'fast' Maven profile to quickly build cobertura reports (2010-09-16)
            </action>
            <action dev="py4fun" type="update" issue="89">
                Fix: Specify plugin versions in POM (2010-09-15)
            </action>
            <action dev="maslovalex" type="fix" issue="88">
                Fix: Custom tag erased when referenced from generic collection (2010-09-15)
            </action>
            <action dev="py4fun" type="update">
                Minor refactoring in Emitter to improve performance: save calls to Constant.has() (2010-09-13)
            </action>
            <action dev="maslovalex" type="update">
                Minor refactorings in Emitter to improve performance: create less Strings [r9185e0b3] (2010-09-10)
            </action>
            <action dev="py4fun" type="update" issue="79">
                Introduce LoaderOptions to be able to specify configuration while loading (2010-09-03)
            </action>
            <action dev="py4fun" type="fix" issue="81">
                Representer.representJavaBeanProperty() is given the wrong tag. Instead of the property tag, 
                the tag for the JavaBean itself is provided. (2010-09-01)
            </action>
            <action dev="py4fun" type="update">
                Rename JvmDetector into GenericsBugDetector (2010-08-31)
            </action>
            <action dev="py4fun" type="fix" issue="80" due-to="SebastienRainville">
                Fix: Timestamp is not parsed properly when milliseconds start with 0 (2010-08-24)
            </action>
            <action dev="maslovalex" type="update" issue="79">
                Context for error reporting consumes a lot of resources (2010-08-21)
            </action>
            <action dev="py4fun" type="remove">
                Cleanup unused code in deprecated Loader and Dumper (2010-08-13)
            </action>
        </release>
        <release version="1.7" date="2010-08-12" description="Simplify public API (drop Loader and Dumper)">
            <action dev="py4fun" type="update">
                Eclipse does not run JUnit 4 tests when they are launched for the whole project (2010-08-11)
            </action>
            <action dev="maslovalex" type="update" issue="55">
                Share PropertyUtils if not explicitly set in Constructor or Representer
                (BeanAccess.FIELD works properly when JavaBean is identified by a root tag) (2010-08-11)
            </action>
            <action dev="py4fun" type="update">
                Create 1.7 Release Candidate 1 (2010-08-11)
            </action>
            <action dev="py4fun" type="update" issue="77">
                Simplify public API: Drop Dumper (2010-08-06)
            </action>
            <action dev="py4fun" type="update" issue="77">
                Simplify public API: Drop Loader (2010-08-05)
            </action>
            <action dev="py4fun" type="update" issue="75" due-to="jon.p.hermes">
                Add examples to create scalars that match custom regular expression:
                CustomImplicitResolverTest, CustomBeanResolverTest (2010-08-03)
            </action>
            <action dev="py4fun" type="fix" issue="74" due-to="Kevin Menard">
                Do not use redundant tags for arrays which are JavaBean properties. (2010-07-21)
            </action>
            <action dev="py4fun" type="update">
                RecursiveSetTest proves that it is possible to construct a recursive set (2010-07-20)
            </action>
            <action dev="py4fun" type="add" issue="73" due-to="birnbuazn">
                Provide sequence support for loading java.util.Set. Also provide an example
                to serialise a java.util.Set as a sequence. (2010-07-19)
            </action>
            <action dev="py4fun" type="add" issue="72" due-to="birnbuazn">
                Support java.util.Collection as a parent for List and Set (2010-07-09)
            </action>
            <action dev="maslovalex" type="add" issue="55" due-to="birnbuazn">
                Allow direct field access bypassing setters and getters. Empty constructor
                is required to support 2-step construction (2010-07-02)
            </action>
            <action dev="py4fun" type="update" issue="69">
                Serialise Iterator and Iterable as sequences (2010-06-25)
            </action>
            <action dev="py4fun" type="update" due-to="maslovalex">
                Change error message when 'No suitable constructor with N arguments found for class' (2010-06-23)
            </action>
            <action dev="py4fun" type="add" due-to="Antony Stubbs">
                Add JodaTime example (2010-06-04)
            </action>
            <action dev="py4fun" type="add" issue="67" due-to="Manuel Sugawara">
                Add possibility to create a Tag out of an URI (2010-05-31)
            </action>
            <action dev="py4fun" type="update">
                URLDecoder.decode() does not fail when UTF-8 is invalid. Use 
                CodingErrorAction.REPORT to implement the failure (2010-05-21)
            </action>
            <action dev="maslovalex" type="update">
                Fix generic collections which contain other collections (2010-05-18)
            </action>
            <action dev="py4fun" type="fix" issue="67" due-to="Manuel Sugawara">
                Fix: java classes containing non-ASCII characters in names are 
                incorrectly encoded (2010-05-14)
            </action>
            <action dev="py4fun" type="fix" issue="65" due-to="lerch.johannes">
                Fix: add checks for null arguments for JavaBeanDumper (2010-04-27)
            </action>
            <action dev="py4fun" type="add">
                Add a test to see how stack trace is serialised (2010-04-27)
            </action>
            <action dev="py4fun" type="fix" issue="64" due-to="maxim.moschko">
                ClassCastException in Representer when working with ParameterizedType (2010-04-25)
            </action>
            <action dev="py4fun" type="update">
                Improve toString() method for Node. Since scalars cannot be recursive
                they can be printed (2010-04-15)
            </action>
            <action dev="maslovalex" type="fix" issue="63" due-to="Udo">
                Refactor the way arrays are constructed (2010-04-15)
            </action>
            <action dev="py4fun" type="fix" issue="62">
                Add examples for dumping custom values for !!bool and !!null (2010-04-13)
            </action>
            <action dev="py4fun" type="fix" issue="61">
                Fix: ClassCastException when dumping generic bean (2010-04-11)
            </action>
            <action dev="py4fun" type="fix" issue="59">
                Provide an example for changing JavaBean properties order (2010-04-01)
            </action>
            <action dev="py4fun" type="fix" issue="60">
                Provide example for skipping null and empty collections (2010-03-29)
            </action>
            <action dev="py4fun" type="fix" issue="58" due-to="jeff.caulfield">
                JavaBeanDumper.dump throws NullPointerException on list property 
                with null element (2010-03-23)
            </action>
            <action dev="py4fun" type="fix" issue="56" due-to="DZeiss">
                Make constructors in SafeConstructor public (2010-03-16)
            </action>
            <action dev="py4fun" type="update" due-to="David Bernard">
                Releases and snapshots are available in the Sonatype Maven repository. 
                https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide 
            </action>
            <action dev="obastard" type="fix" issue="53" due-to="obastard">
                Enhancement for a pretty format that combines BLOCK and FLOW (2010-03-03)
            </action>
            <action dev="py4fun" type="fix" issue="50" due-to="sualeh.fatehi">
                Unable to dump JavaBean that inherits from a protected base class (2010-03-02)
            </action>
            <action dev="py4fun" type="update">
                Format source (2010-03-01)
            </action>
            <action dev="py4fun" type="update">
                Use Token.ID and Event.ID instead of just ID (2010-03-01)
            </action>
            <action dev="py4fun" type="update">
                Issue 50 fails in Eclipse but works with Maven (2010-03-01)
            </action>
        </release>
        <release version="1.6" date="2010-02-26" description="introduce Tag class">
            <action dev="py4fun" type="update">
                Release Candidate 2 is available (2010-02-24)
            </action>
            <action dev="py4fun" type="fix" issue="47" due-to="obastard">
                Don't dump read-only properties by default. DumperOptions gets a setting to
                include read-only JavaBean properties. 
                This is no backwards compatible change (2010-02-19)
            </action>
            <action dev="py4fun" type="fix" issue="49" due-to="obastard">
                Support GregorianCalendar. Due to Daylight Saving Time parsing the timestamp with
                a TimeZone cannot determine the exact time (2010-02-19)
            </action>
            <action dev="py4fun" type="fix" issue="51" due-to="johann.Werner">
                Some Unicode characters are wrongly replaced by \x{fffd} during 
                double quoted style dump (2010-02-15)
            </action>
            <action dev="py4fun" type="fix" issue="48" due-to="obastard">
                Introduce representJavaBeanProperty() method in Representer. The method
                can be overridden to simplify custom JavaBean representation (2010-02-12)
            </action>
            <action dev="py4fun" type="update">
                Release Candidate 1 is available (2010-02-01)
            </action>
            <action dev="py4fun" type="add">
                Representer.representJavaBean() returns MappingNode (2010-01-26)
            </action>
            <action dev="py4fun" type="add">
                Add example of serialising static fields  (2010-01-26)
            </action>
            <action dev="py4fun" type="add">
                Add example of serialising java.io.File as scalar node for issue 46  (2010-01-25)
            </action>
            <action dev="py4fun" type="update">
                Refactor: introduce Chomping to avoid using null as value for Boolean.
                Stay in line with Scala port where null is not allowed (2010-01-19)
            </action>
            <action dev="py4fun" type="update">
                Refactor: use Event.ID enum instead of classes (2010-01-15)
            </action>
            <action dev="py4fun" type="update">
                Refactor: use Token.ID enum instead of classes (2010-01-15)
            </action>
            <action dev="py4fun" type="update">
                Refactor: use generic classes for DirectiveToken (2010-01-14)
            </action>
            <action dev="py4fun" type="update">
                Refactor: rename Reader to StreamReader to avoid name conflict with java.io.Reader (2010-01-13)
            </action>
            <action dev="py4fun" type="update">
                Refactor: use StringBuilder instead of StringBuffer (2010-01-12)
            </action>
            <action dev="py4fun" type="update">
                Refactor: introduce Constant class to share String constants (2010-01-12)
            </action>
            <action dev="py4fun" type="update">
                Keep Tag.equals(String) to simplify transition to Tag class (2010-01-08)
            </action>
            <action dev="py4fun" type="update">
                Refactor: introduce Tag instead of Tags. Nodes use Tag class instead of String (2010-01-05)
            </action>
            <action dev="py4fun" type="fix" issue="42" due-to="Artem">
                BaseConstructor shall give more flexibility to choose a constructor at runtime (2010-01-08)
            </action>
            <action dev="py4fun" type="update">
                Refactor: introduce TagTuple instead of String[] (2010-01-04)
            </action>
            <action dev="py4fun" type="fix" issue="40" due-to="sitrious">
                Ignore tags when they are compatible with the runtime class (2010-01-04)
            </action>
            <action dev="py4fun" type="add">
                Add example to ignore unknown tags (2009-12-08)
            </action>
            <action dev="py4fun" type="add">
                Add Ruby example (2009-12-08)
            </action>
            <action dev="py4fun" type="update">
                Do not omit the tag for JavaBean properties when the tag is explicitly defined (2009-12-08)
            </action>
            <action dev="py4fun" type="fix" issue="38" due-to="gchpaco">
                Fix ID format for numbers over 999 (2009-12-05)
            </action>
            <action dev="py4fun" type="fix" issue="29" due-to="grignaak">
                Allow separate option in DumperOptions for long strings (2009-11-16)
            </action>
            <action dev="py4fun" type="add">
                JavaBeanDumper: add possibility to define a custom Representer (2009-11-25)
            </action>
            <action dev="py4fun" type="fix" issue="36">
                Introduce multi contructors (tag prefix). A family of tags may be processed
                by a single constructor (2009-11-25)
            </action>
            <action dev="py4fun" type="update">
                Refactor BaseConstructor: simplify second step for recursive structures (2009-11-25)
            </action>
            <action dev="py4fun" type="add">
                Add FilterPropertyToDumpTest to show how to filter JavaBean properties (2009-11-24)
            </action>
            <action dev="py4fun" type="add">
                Add FilterClassesConstructorTest to show how to filter created classes (2009-11-16)
            </action>
            <action dev="py4fun" type="update" due-to="Stefan">
                Improve JavaDoc (2009-11-12)
            </action>
            <action dev="py4fun" type="add">
                Add Velocity example (2009-11-03)
            </action>
            <action dev="py4fun" type="update">
                Refactor: rename Tuple to RecursiveTuple and hide it inside BaseConstructor (2009-11-03)
            </action>
        </release>
        <release version="1.5" date="2009-10-30" description="Improve usage of generic collections in JavaBeans">
            <action dev="py4fun" type="fix" issue="27" due-to="Polyglot Maven team">
                Extend Resolver to support custom implicit types (2009-10-27)
            </action>
            <action dev="py4fun" type="update">
                Performance improvement: use ArrayStack instead of Stack which extends Vector (2009-10-20)
            </action>
            <action dev="py4fun" type="fix" issue="25" due-to="Benjamin Bentmann">
                Improve usage of generic collections: while type erase makes no difference between 
                Class&lt; Foo&gt; and Class&lt; Bar&gt; at runtime, the information about generics is still 
                accessible via reflection from Method/Field. (2009-10-19)
            </action>
            <action dev="py4fun" type="update">
                Fix ConstructYamlObject: support recursive objects. Introduce 'resolved'
                property for Nodes. This property supposed to help to distinguish explicit tag
                from the resolved tag (2009-10-19)
            </action>
            <action dev="py4fun" type="update">
                Refactor: use rootTag instead of rootType (for Class) in BaseConstructor. This is done to 
                solve the priority problem: normally explicit tag has more priority then runtime class but
                for the root tag it is the other way around (2009-10-19)
            </action>
            <action dev="py4fun" type="fix" issue="24" due-to="shrode">
                Line numbers reported in Exceptions are Zero based, should be 1 based (2009-10-12)
            </action>
            <action dev="py4fun" type="fix" issue="21" due-to="ashwin.jayaprakash">
                Support arrays of reference types as JavaBean properties (2009-09-22)
            </action>
            <action dev="py4fun" type="fix" issue="17" due-to="jcucurull">
                Respect root tag for sequences (2009-09-04)
            </action>
            <action dev="py4fun" type="fix" issue="18" due-to="creiniger">
                SafeRepresenter respects custom tags for standard Java classes where standard tag has 
                more then one Java implementation available (Long, List, Map, Date etc) (2009-09-03)
            </action>
            <action dev="py4fun" type="add">
                Add possibility to define a custom Class Loader. (2009-09-01)
            </action>
            <action dev="py4fun" type="fix">
                Fixed an obscure scanner error not reported when there is no line break at the end 
                of the stream. The fix is imported from PyYAML 3.09 {ticket 118} (2009-08-31)
            </action>
            <action dev="py4fun" type="fix" issue="16" due-to="infinity0x">
                Cache JavaBean class properties. Tests show that the loading has become a few percents faster (2009-08-31)
            </action>
            <action dev="py4fun" type="add">
                Introduce ArrayStack to use push() and pop() instead of standard (and too verbose) 
                'remove(size()-1)'  (2009-08-27)
            </action>
            <action dev="py4fun" type="fix" issue="14" due-to="infinity0x">
                Fix: ArrayList is more efficient than LinkedList  (2009-08-26)
            </action>
        </release>
        <release version="1.4" date="2009-08-26" description="better support for loading immutable objects">
            <action dev="py4fun" type="update">
                Apply Apache License Version 2.0 (2009-08-14)
            </action>
            <action dev="py4fun" type="fix" issue="13" due-to="infinity0x">
                Provide javadocs link to Sun Java API (2009-08-10)
            </action>
            <action dev="py4fun" type="add">
                Build 1.4 Release Candidate 1 (2009-08-07)
            </action>
            <action dev="py4fun" type="add">
                Introduce Tags.getGlobalTagForClass() to simplify tag generation in custom constructors (2009-08-06)
            </action>
            <action dev="py4fun" type="update">
                Refactor: introduce ImplicitTuple (2009-08-06)
            </action>
            <action dev="py4fun" type="fix" issue="11" due-to="infinity0x">
                Fix: create a Java instance with the following priority to choose the class:
                Explicit tag -> Runtime class (defined in JavaBean) -> implicit tag  (2009-08-06)
            </action>
            <action dev="py4fun" type="fix" issue="9" due-to="wwagner4">
                Fix: Bean with no property cannot be instantiated. This is implemented via better
                support for immutable objects. Custom Constructor may be used when there are more
                then 1 way to create an instance (2009-08-04)
            </action>
            <action dev="py4fun" type="add">
                Deliver possibility to load immutable instances with no global tags. Reflection for
                constructor arguments is used to get the runtime classes (2009-08-04)
            </action>
            <action dev="py4fun" type="update">
                Use more informative error message when a JavaBean property cannot
                be created (2009-08-02)
            </action>
            <action dev="py4fun" type="update">
                Refactor: Constructor is rewritten. Do not overwrite methods from BaseConstructor. 
                Instead introduce ConstructScalar, ConstructSequence, ConstructMapping (2009-07-31)
            </action>
            <action dev="py4fun" type="update">
                Change Maven repository path: groupId='org.yaml', artifactId='snakeyaml' (2009-07-31)
            </action>
            <action dev="py4fun" type="fix" issue="10" due-to="derrick.rice">
                Fix: dump omits JavaBean class name when used with an alias (2009-07-28)
            </action>
            <action dev="py4fun" type="add">
                Generate sources and Javadoc (2009-07-27)
            </action>
            <action dev="py4fun" type="update">
                Node does not have the value. It is delegated to the non-abstract classes (2009-07-27)
            </action>
            <action dev="py4fun" type="add">
                Extends JavaBeanDumper to allow skipping global tags inside type-safe collections.
                Introduce method setMapTagForBean() (2009-07-22)
            </action>
            <action dev="py4fun" type="add">
                Add ConstructEmptyBeanTest to test JavaBean construction with no 
                properties in the YAML document(2009-07-22)
            </action>
            <action dev="py4fun" type="remove">
                Refactor: redesign tag management for JavaBeans in Representer. 
                Drop dynamic root tag concept (2009-07-22)
            </action>
            <action dev="py4fun" type="remove">
                Remove unused TypeDescription in Representer (2009-07-21)
            </action>
            <action dev="py4fun" type="update">
                Use NodeTuple instead of Node[] for mappings (2009-07-21)
            </action>
            <action dev="py4fun" type="add">
                Introduce JavaBeanLoader and JavaBeanDumper. Deprecate JavaBeanParser (2009-07-21)
            </action>
            <action dev="py4fun" type="fix" issue="8" due-to="Alan Gutierrez">
                Fix: Representer was keeping state between invocations (2009-07-21)
            </action>
        </release>
        <release version="1.3" date="2009-07-20" description="complete support for recursive objects">
            <action dev="py4fun" type="fix" issue="6" due-to="infinity0x">
                Fix: values returned by System.identityHashCode() are not guaranteed to be unique (2009-07-14)
            </action>
            <action dev="py4fun" type="add">
                Add a simple test for Java Generics (BirdTest). Unfortunately it shows that some JVM 
                implementations do not recognise classes for JavaBean properties at runtime. 
                It leads to unnecessary global tags. See http://code.google.com/p/snakeyaml/wiki/Documentation#Generics
                for details (2009-07-13)
            </action>
            <action dev="py4fun" type="fix" issue="5" due-to="infinity0x">
                Fix: set the "cause" field for MarkedYAMLException (2009-07-10)
            </action>
            <action dev="maslovalex" type="fix" issue="1">
                Fix: Recursive objects are now fully supported (2009-07-09)
            </action>
            <action dev="py4fun" type="add">
                Add support for BigDecimal as a JavaBean property (2009-07-07)
            </action>
            <action dev="py4fun" type="update">
                Improve test coverage for Constructor. Allow construction of JavaBeans
                with only setter without the corresponding getter (2009-07-07)
            </action>
            <action dev="py4fun" type="add">
                Add a test to check the proper report for IOException (2009-07-03)
            </action>
            <action dev="py4fun" type="fix" issue="3" due-to="infinity0x">
                Fix: represent proper tags for JavaBeans when they are not the root of the YAML 
                document but a member of a collection (2009-07-03)
            </action>
            <action dev="py4fun" type="update">
                Refactor: run PMD and apply some of the recommendations (2009-06-18)
            </action>
            <action dev="py4fun" type="add" issue="1">
                Create an issue for Recursive objects to be remembered (2009-06-08)
            </action>
            <action dev="py4fun" type="update">
                Migrate project hosting from Assembla to Google code (2009-06-08)
            </action>
            <action dev="py4fun" type="fix" due-to="Magne">
                Fix: null as a JavaBean property was not handled properly (2009-06-04)
            </action>
            <action dev="py4fun" type="update">
                Validate changes.xml file (2009-05-25)
            </action>
            <action dev="py4fun" type="fix" due-to="Magne">
                Fix ticket 40 in Assembla: getting an error when javabean contains java.sql.Timestamp fields (2009-05-25)
            </action>
        </release>
        <release version="1.2" date="2009-04-27" description="expose low-level API">
            <action dev="py4fun" type="add">
                Add 'Yaml.parse()' method which return Events to support low level YAML processing (2009-04-20)
            </action>
            <action dev="py4fun" type="add" due-to="Bob Jalex">
                Introduce LineBreak.getPlatformLineBreak (ticket 5 in Assembla) (2009-04-18)
            </action>
            <action dev="py4fun" type="update" due-to="Bob Jalex">
                 Rename LineBreak.LINUX to LineBreak.UNIX (ticket 5 in Assembla) (2009-04-18)
            </action>
            <action dev="py4fun" type="add">
                Add 'Yaml.compose()' methods which return Nodes to support YEdit (2009-04-17)
            </action>
            <action dev="py4fun" type="update">
                Refactor: rename enums in DumperOptions to make the names consistent (2009-04-07)
            </action>
            <action dev="py4fun" type="update">
                Refactor: use Character instead of char primitive for style in Emitter (2009-04-07)
            </action>
            <action dev="py4fun" type="add">
                Add possibility to parse all scalars as Strings (2009-03-30)
            </action>
            <action dev="py4fun" type="update">
                Merge changeset 347 from PyYAML (2009-03-30)
            </action>
            <action dev="py4fun" type="fix">
                Respect DumperOptions with a custom Representer (2009-03-18)
            </action>
            <action dev="py4fun" type="fix">
                Represent TAB as '\t' instead of '(9' in the error message (2009-03-17)
            </action>
        </release>
        <release version="1.1" date="2009-03-14" description="improve performance and test coverage">
            <action dev="py4fun" type="add">
                Introduce JavaBeanParser (2009-03-14)
            </action>
            <action dev="py4fun" type="add">
                Introduce DumperOptions.Version enum (2009-03-13)
            </action>
            <action dev="py4fun" type="add">
                Introduce DumperOptions.LineBreak enum (2009-03-10)
            </action>
            <action dev="py4fun" type="update">
                Use byte[] for binary type. (2009-03-09)
            </action>
            <action dev="py4fun" type="update">
                Restore Regular Expressions in Resolver. Ragel gives only 5% performance increase. 
                Fix a bug in Resolver with expanded regular expressions which caused the
                performance problem. (2009-03-06)
            </action>
            <action dev="py4fun" type="add">
                Better Spring support: it is now possible to create a constructor with a String
                as the class name. (2009-03-05)
            </action>
            <action dev="py4fun" type="update">
                Throw an exception when the same Loader or Dumper instance is shared between
                different Yaml instances. Because they are statefull it is not Thread-safe. (2009-03-05)
            </action>
            <action dev="py4fun" type="add">
                Add possibility to set a meaningful name for Yaml instance to be shown in toString(). (2009-03-05)
            </action>
            <action dev="py4fun" type="update">
                Refactor: declare classes which are not expected to be extended as final. (2009-03-04)
            </action>
            <action dev="py4fun" type="update">
                Refactor: use 'final' keyword to identify immutable fields. (2009-03-04)
            </action>
            <action dev="py4fun" type="update">
                Refactor: do not use 'final' keyword for local variables. (2009-03-04)
            </action>
            <action dev="py4fun" type="fix">
                Fix: respect implicit resolvers with 'null' as a first character. (2009-03-02)
            </action>
            <action dev="py4fun" type="update">
                Refactor: use Character instead of String as a key for implicit resolvers. (2009-03-02)
            </action>
            <action dev="py4fun" type="add">
                Use Ragel instead of Regular Expressions for implicit types. (2009-03-02)
            </action>
            <action dev="py4fun" type="fix" due-to="Christophe Desguez">
                Fix ticket #4 (in Assembla): java.sql.Date not handled. (2009-02-28)
            </action>
             <action dev="py4fun" type="add">
                Introduce DumperOptions.DefaultFlowStyle enum (2009-02-24)
            </action>
            <action dev="py4fun" type="add">
                Introduce DumperOptions.DefaultScalarStyle enum (2009-02-24)
            </action>
            <action dev="py4fun" type="update">
                Refactor: use 'switch' with Enum instead of multiple 'if' statements to distinguish nodes (2009-02-19)
            </action>
            <action dev="py4fun" type="update">
                Refactor: use Enum instead of String as NodeId (2009-02-19)
            </action>
        </release>
        <release version="1.0.1" date="2009-02-18" description="implement Enum support">
            <action dev="py4fun" type="fix">
                Do not emit anchors for Enum (2009-02-18)
            </action>
            <action dev="py4fun" type="fix">
                Enum as a JavaBean property (when the Enum class is implicitly defined) does
                not need tags for both loading and dumping (2009-02-17)
            </action>
            <action dev="py4fun" type="fix">
                Enum is emitted as a scalar node (2009-02-17)
            </action>
            <action dev="py4fun" type="fix" due-to="James Nissel">
                Enum is parsed as a scalar node or as a JavaBean property (2009-02-17)
            </action>
            <action dev="py4fun" type="update">
                Refactor: for performance ScannerImpl.stalePossibleSimpleKeys() does not copy key Set (2009-02-10)
            </action>
            <action dev="py4fun" type="update">
                By default allowUnicode=true. If it is necessary to escape Unicode use 
                DumperOptions.setAllowUnicode(false) (2009-02-09)
            </action>
            <action dev="py4fun" type="add">
                Implement allowUnicode setting (to escape Unicode characters on non UTF-8 terminals) (2009-02-09)
            </action>
            <action dev="py4fun" type="add">
                Add possibility to specify tags for dumping (2009-02-09)
            </action>
            <action dev="py4fun" type="update">
                Rename getExpRoot to getExplicitRoot to conform with 
                standard JavaBean naming convention (2009-02-09)
            </action>
            <action dev="py4fun" type="update">
                Rename explictStart and explicitEnd to standard setters to conform with 
                standard JavaBean naming convention (2009-02-09)
            </action>
            <action dev="py4fun" type="fix">
                Add possibility to specify a line break (2009-02-09)
            </action>
        </release>
        <release version="1.0" date="2009-02-06" description="final 1.0 release">
            <action dev="py4fun" type="fix">
                Use LinkedHashMap for Emitter.tagPrefixes to respect the order (2009-02-06)
            </action>
            <action dev="py4fun" type="fix">
                Use LinkedHashMap for ScannerImpl.possibleSimpleKeys to respect the key order (2009-02-05)
            </action>
            <action dev="py4fun" type="add">
                Add a test to prove that Yaml instances are independent and can safely be used in 
                multithreaded environment like for instance a Servlet container (2009-02-05)
            </action>
            <action dev="py4fun" type="update">
                The mailing list is renamed to snakeyaml-core to avoid a 
                name conflict in Google AppEngine (2009-02-03)
            </action>
        </release>
        <release version="1.0rc2" date="2008-01-22" description="Improve JavaBeans support">
            <action dev="py4fun" type="add">
                Provide possibility to define/eliminate the root tag for JavaBeans. Avoiding global tags
                helps to exchange YAML documents with other programming languages (2009-01-21)
            </action>
            <action dev="py4fun" type="fix">
                Arrays as JavaBens properties are properly supported (2009-01-21)
            </action>
            <action dev="py4fun" type="update">
                Do not emit redundant tags for JavaBeans (2009-01-20)
            </action>
            <action dev="py4fun" type="add">
                Respect public fields in JavaBeans (2009-01-20)
            </action>
        </release>
        <release version="1.0rc1" date="2009-01-16" description="Construct type safe collections">
            <action dev="py4fun" type="update">
                Replace String.getBytes(Charset charset) with String.getBytes(String charsetName) because 
                String.getBytes(Charset charset) was introduced only in Java 6 (2009-01-16)
            </action>
            <action dev="py4fun" type="update">
                Replace LinkedList.pop() with removeFirst() because pop() was
                introduced only in Java 6 (2009-01-16)
            </action>
            <action dev="py4fun" type="update">
                Replace LinkedList.push() with addFirst() because push() was
                introduced only in Java 6 (2009-01-16)
            </action>
            <action dev="py4fun" type="add">
                Implement type safe Map as a property of custom Java class (2009-01-16)
            </action>
            <action dev="py4fun" type="add">
                Implement type safe List as a property of custom Java class (2009-01-15)
            </action>
            <action dev="py4fun" type="update">
                Construct interface does not use generics. The type information is set
                to the Node (2009-01-15)
            </action>
            <action dev="py4fun" type="add">
                Introduce TypeDescription as a single configuration option for a custom class (2009-01-15)
            </action>
        </release>
        <release version="0.91" date="2008-01-14" description="Support shortcut tags for custom classes">
            <action dev="py4fun" type="add">
                Add possibility to define shortcut tags for custom classes while loading (2009-01-13)
            </action>
            <action dev="py4fun" type="add">
                Add possibility to define shortcut tags for custom classes while dumping (2009-01-13)
            </action>
            <action dev="py4fun" type="add">
                Construct List as a JavaBean property. But due to erasure only standard Java
                classes created (2009-01-13)
            </action>
            <action dev="py4fun" type="add">
                Import PyStructureTest from PyYAML (2009-01-13)
            </action>
            <action dev="py4fun" type="add">
                Import canonical scanner and parser from PyYAML (2009-01-12)
            </action>
        </release>
        <release version="0.9" date="2008-01-12" description="Add possibility to define a root class for Loader">
            <action dev="py4fun" type="add">
                Finish 2.27 example from the specification (2009-01-12)
            </action>
            <action dev="py4fun" type="add">
                Add possibility to define a root class for Loader (2009-01-11)
            </action>
            <action dev="py4fun" type="update">
                Use Java Generics in the Construct interface (2009-01-11)
            </action>
            <action dev="py4fun" type="update">
                Use Java Generics in the Scanner interface (2009-01-08)
            </action>
            <action dev="py4fun" type="update">
                Create ScannerIml only in ParserImpl (2009-01-08)
            </action>
            <action dev="py4fun" type="fix">
                Import changeset 312 from PyYAML. Fix a bug in Emitter when writing folded scalars (2009-01-07)
            </action>
        </release>
        <release version="0.8" date="2009-01-07" description="Import changes from PyYAML 3.08">
            <action dev="py4fun" type="add">
                Add possibility to use java.io.Reader as input. BOM must be respected. (2009-01-06)
            </action>
            <action dev="py4fun" type="update">
                Import Changeset 308 from PyYAML: Refactored whitespace combination 
                detector in the scalar analyser. (2009-01-06)
            </action>
            <action dev="py4fun" type="update">
                Import Changeset 313 from PyYAML: Emit an explicit document end indicator 
                when there is a possibility of ambiguous parsing. (2009-01-06)
            </action>
            <action dev="py4fun" type="update">
                Use global tags (with !!) to dump Java custom instances. (2009-01-05)
            </action>
            <action dev="py4fun" type="update">
                Use global tags (with !!) to load Java custom instances. (2009-01-05)
            </action>
            <action dev="py4fun" type="add">
                Add example of defining a custom List and Map implementations. (2009-01-04)
            </action>
            <action dev="py4fun" type="fix">
                Fix parsing Long.MIN_VALUE: respect the sign when parsing integers. (2009-01-04)
            </action>
            <action dev="py4fun" type="update">
                when constructing integers try to create the first in the following order: 
                Integer -> Long -> BigInteger. (2009-01-02)
            </action>
        </release>
        <release version="0.7" date="2008-12-20" description="Improve test coverage">
            <action dev="py4fun" type="update">
                Improve test coverage for constructor package (2008-12-20)
            </action>
            <action dev="py4fun" type="remove">
                Remove support for "value" type because it is not used (2008-12-20)
            </action>
             <action dev="py4fun" type="update">
                Require test coverage 95% (2008-12-19)
            </action>
            <action dev="py4fun" type="update">
                Improve test coverage for Nodes (2008-12-19)
            </action>
            <action dev="py4fun" type="fix">
                Fix dumping Date and better coverage for Representer (2008-12-19)
            </action>
            <action dev="py4fun" type="remove">
                Remove unused code based on coverage report (2008-12-19)
            </action>
            <action dev="py4fun" type="remove">
                Tokens are 100% covered by tests (2008-12-19)
            </action>
            <action dev="py4fun" type="remove">
                Remove old tests (2008-12-18)
            </action>
            <action dev="py4fun" type="update">
                Synchronized with PyYAML revision 307
            </action>
        </release>
        <release version="0.6" date="2008-12-17" description="Documentation added">
            <action dev="py4fun" type="add">
                Many examples added to the Wiki page  (2008-12-17)
            </action>
            <action dev="py4fun" type="update">
                Public interface is using Iterator instead of Iterable (2008-12-17)
            </action>
            <action dev="py4fun" type="update">
                Sort names when JavaBeans are represented (2008-12-15)
            </action>
            <action dev="py4fun" type="fix">
                defaultFlowStyle for Dumper is configurable in DumperOptions (2008-12-12)
            </action>
        </release>
        <release version="0.5" date="2008-12-12" description="Import PyYAML 3.06">
            <action dev="py4fun" type="add">
                Add possibility to define an implicit resolver. {359:63190d5bcd10} (2008-12-11)
            </action>
            <action dev="py4fun" type="add">
                Add possibility to define an explicit constructor. {356:ccaa0df9ca98} (2008-12-11)
            </action>
            <action dev="py4fun" type="update">
                Java objects can be constructed from mapping (JavaBeans), from sequence (constructor)
                from scalar (constructor). (2008-12-10)
            </action>
            <action dev="py4fun" type="fix">
                pairs tag works properly. (2008-12-08)
            </action>
            <action dev="py4fun" type="fix">
                omap tag works properly. (2008-12-08)
            </action>
            <action dev="py4fun" type="add">
                Implement possibility to define a custom Map implementation {332}. (2008-12-06)
            </action>
            <action dev="py4fun" type="add">
                Implement possibility to define a custom List implementation {331:72c03254c184}. (2008-12-06)
            </action>
            <action dev="py4fun" type="add">
                Path resolver is removed because it is not imported properly {330}. (2008-12-06)
            </action>
            <action dev="py4fun" type="add">
                Constructor is overwritten completely. (2008-12-06)
            </action>
            <action dev="py4fun" type="add">
                Implement possibility to define a custom Representer. (2008-12-01)
            </action>
            <action dev="py4fun" type="update">
                Support arrays of reference types. Arrays of primitives are not supported
                because Arrays.asList() does not work. (2008-12-01)
            </action>
            <action dev="py4fun" type="update">
                Import change 300 for Emitter from PyYAML. (2008-12-01)
            </action>
            <action dev="py4fun" type="fix">
                Fix Node identity to avoid aliases for simple types - [1, 1]. (2008-11-28)
            </action>
            <action dev="py4fun" type="update">
                Recursive objects can be represented (but not yet constructed) (2008-11-28)
            </action>
            <action dev="py4fun" type="update">
                Binary is represented back as String (2008-11-28)
            </action>
            <action dev="py4fun" type="update">
                Re-write Representer classes from scratch (2008-11-28)
            </action>
            <action dev="py4fun" type="fix">
                'null' can be a key in a map (2008-11-21)
            </action>
            <action dev="py4fun" type="fix">
                !!set tag is parsed properly (2008-11-21)
            </action>
            <action dev="py4fun" type="update">
                Single characters 'Y', 'N', 'y' and 'n' are parsed as String opposed to boolean
                as it is defined in the specification. This is how it is done in PyYAML (2008-11-21)
            </action>
            <action dev="py4fun" type="remove">
                Constructor: because Java does not have generators 'deep' is not 
                imported from PyYAML (2008-11-19)
            </action>
            <action dev="py4fun" type="update">
                Composer imported from PyYAML (2008-11-17)
            </action>
            <action dev="py4fun" type="update">
                Resolver.resolve() is using simple boolean argument instead of array of booleans
                as in PyYAML. (2008-11-18)
            </action>
            <action dev="py4fun" type="fix">
                Fix: 'set' type works. (2008-11-18)
            </action>
            <action dev="py4fun" type="update">
                Rewrite Parser from scratch. (2008-11-17)
            </action>
        </release>
        <release version="0.4" date="2008-11-11" description="Fix issues in Scanner">
            <action dev="py4fun" type="update">
                Move constants from Yaml interface to appropriate classes (2008-11-10)
            </action>
            <action dev="py4fun" type="update">
                Interface change: Yaml dumpAll() methods accept Iterable (2008-11-10)
            </action>
            <action dev="py4fun" type="update">
                Interface change: Yaml loadAll() methods return Iterable (2008-11-10)
            </action>
            <action dev="py4fun" type="fix">
                Scanner: copy keys to avoid java.util.ConcurrentModificationException when removing
                possible simple key (2008-11-10)
            </action>
            <action dev="py4fun" type="update">
                Tag v0.3.1 (2008-11-08)
            </action>
            <action dev="py4fun" type="update">
                MappingNode requires Map as a value and SequenceNode requires
                List as a value (2008-11-08)
            </action>
            <action dev="py4fun" type="update">
                Marks in a Token are required (2008-11-08)
            </action>
            <action dev="py4fun" type="remove">
                Remove prefixForward() method from Reader because it is not present
                in PyYAML (2008-11-08)
            </action>
            <action dev="py4fun" type="fix">
                Fix a deviation with PyYAML in method scanBlockScalar().
                'chomping' can be null. Fix a bug in JvYaml that the trailing '\n' in a 
                block scalar was removed.(2008-11-07)
            </action>
            <action dev="py4fun" type="fix">
                Fix a deviation with PyYAML in method scanDirectiveIgnoredLine().
                Put '#' instead of '"'. (2008-11-07)
            </action>
            <action dev="py4fun" type="add">
                Restore from PyYAML the way the keys are parsed. (Restored methods are
                stalePossibleSimpleKeys() and removePossibleSimpleKey().)
                Fix issue http://code.google.com/p/jvyamlb/issues/detail?id=6. (2008-11-07)
            </action>
            <action dev="py4fun" type="update">
                Refactor: put changed classes to 'org.yaml.snakeyaml' package. (2008-11-05)
            </action>
            <action dev="py4fun" type="update">
                Move all the main() methods to the corresponding test classes. (2008-11-05)
            </action>
            <action dev="py4fun" type="update">
                Change public interface. Rename YAML to Yaml. Remove all static methods from Yaml.
                Factory and configuration must be injected at the constructor. This way is closer
                to PyYAML API. (2008-11-05)
            </action>
            <action dev="py4fun" type="add">
                Reader as in PyYAML is implemented. BOM is properly supported (2008-11-05)
            </action>
            <action dev="py4fun" type="add">
                Restore Mark in Token as it is in PyYAML. Mark is not defined yet (2008-10-30)
            </action>
            <action dev="py4fun" type="fix">
                Off-by-one in EmitterImpl.writeDoubleQuoted().
                Fix issue: https://jvyaml.dev.java.net/issues/show_bug.cgi?id=11 (2008-10-28)
            </action>
            <action dev="py4fun" type="fix">
                Respect Unicode characters.
                Fix issue: https://jvyaml.dev.java.net/issues/show_bug.cgi?id=10 (2008-10-28)
            </action>
            <action dev="py4fun" type="fix">
                Respect sign for float.
                Fix issue: https://jvyaml.dev.java.net/issues/show_bug.cgi?id=13 (2008-10-28)
            </action>
            <action dev="py4fun" type="add">
                Binary data is represented as ByteBuffer (2008-10-27)
            </action>
            <action dev="py4fun" type="fix">
                When parsed, a timestamp in the canonical form (i.e, 2001-12-15T02:59:43.1Z) is
                interpreted as if it is in the default time zone.
                Fix issue: https://jvyaml.dev.java.net/issues/show_bug.cgi?id=7 (2008-10-27)
            </action>
            <action dev="py4fun" type="add">
                Add Mark from PyYAML. It is not used yet. The JUnit test is migrated from PyYAML (2008-10-23)
            </action>
            <action dev="py4fun" type="update">
                Apply SnakeYAML as the name of the library (2008-10-22)
            </action>
            <action dev="py4fun" type="update">
                Reformat the source files (2008-10-22)
            </action>
            <action dev="py4fun" type="update">
                Apply LICENSE info to source files (2008-10-22)
            </action>
            <action dev="py4fun" type="update">
                Mavenize project. Apply standard Maven folder structure (2008-10-20)
            </action>
        </release>
        <release version="0.2.1" date="2008-10-20" description="Import JvYaml from CVS">
             <action dev="py4fun" type="add">
                Import project from https://jvyaml.dev.java.net/ (2008-10-20)
             </action>
        </release>
    </body>
</document>

