diff --git a/.gitignore b/.gitignore
index 4e3996b..2d5b540 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/SnakeYAML-all-1.8.zip
+/SnakeYAML-all-1.9.zip
diff --git a/snakeyaml-add-osgi-metadata.patch b/snakeyaml-add-osgi-metadata.patch
deleted file mode 100644
index 0993191..0000000
--- a/snakeyaml-add-osgi-metadata.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/pom.xml b/pom.xml
-index 4bf5a5e..8bc6e54 100644
---- a/pom.xml
-+++ b/pom.xml
-@@ -3,7 +3,7 @@
- org.yaml
- snakeyaml
- 1.8
-- jar
-+ bundle
-
- UTF-8
-
-@@ -226,6 +226,12 @@
-
-
-
-+
-+ org.apache.felix
-+ maven-bundle-plugin
-+ 2.3.4
-+ true
-+
-
-
-
diff --git a/snakeyaml-issue121-file-handle-leaks.patch b/snakeyaml-issue121-file-handle-leaks.patch
deleted file mode 100644
index c93e1b7..0000000
--- a/snakeyaml-issue121-file-handle-leaks.patch
+++ /dev/null
@@ -1,406 +0,0 @@
-diff -Naur snakeyaml.orig/src/test/java/examples/LoadExampleTest.java snakeyaml/src/test/java/examples/LoadExampleTest.java
---- snakeyaml.orig/src/test/java/examples/LoadExampleTest.java 2011-01-16 14:39:08.000000000 +0100
-+++ snakeyaml/src/test/java/examples/LoadExampleTest.java 2011-06-09 14:07:02.000000000 +0200
-@@ -19,7 +19,7 @@
- import java.io.ByteArrayInputStream;
- import java.io.File;
- import java.io.FileInputStream;
--import java.io.FileNotFoundException;
-+import java.io.IOException;
- import java.io.InputStream;
- import java.util.List;
- import java.util.Map;
-@@ -40,12 +40,13 @@
- public void testLoadFromString() {
- Yaml yaml = new Yaml();
- String document = "hello: 25";
-- Map map = (Map) yaml.load(document);
-+ @SuppressWarnings("unchecked")
-+ Map map = (Map) yaml.load(document);
- assertEquals("{hello=25}", map.toString());
- assertEquals(new Integer(25), map.get("hello"));
- }
-
-- public void testLoadFromStream() throws FileNotFoundException {
-+ public void testLoadFromStream() throws IOException {
- InputStream input = new FileInputStream(new File("src/test/resources/reader/utf-8.txt"));
- Yaml yaml = new Yaml();
- Object data = yaml.load(input);
-@@ -53,9 +54,10 @@
- //
- data = yaml.load(new ByteArrayInputStream("test2".getBytes()));
- assertEquals("test2", data);
-+ input.close();
- }
-
-- public void testLoadManyDocuments() throws FileNotFoundException {
-+ public void testLoadManyDocuments() throws IOException {
- InputStream input = new FileInputStream(new File(
- "src/test/resources/specification/example2_28.yaml"));
- Yaml yaml = new Yaml();
-@@ -66,5 +68,6 @@
- counter++;
- }
- assertEquals(3, counter);
-+ input.close();
- }
- }
-diff -Naur snakeyaml.orig/src/test/java/org/pyyaml/AnInstance.java snakeyaml/src/test/java/org/pyyaml/AnInstance.java
---- snakeyaml.orig/src/test/java/org/pyyaml/AnInstance.java 2011-01-12 13:56:10.000000000 +0100
-+++ snakeyaml/src/test/java/org/pyyaml/AnInstance.java 2011-06-09 14:07:02.000000000 +0200
-@@ -43,5 +43,4 @@
- public void setBar(Object bar) {
- this.bar = bar;
- }
--
- }
-\ Chybí znak konce řádku na konci souboru
-diff -Naur snakeyaml.orig/src/test/java/org/pyyaml/PyCanonicalTest.java snakeyaml/src/test/java/org/pyyaml/PyCanonicalTest.java
---- snakeyaml.orig/src/test/java/org/pyyaml/PyCanonicalTest.java 2011-01-12 13:56:10.000000000 +0100
-+++ snakeyaml/src/test/java/org/pyyaml/PyCanonicalTest.java 2011-06-09 14:07:02.000000000 +0200
-@@ -35,7 +35,9 @@
- File[] files = getStreamsByExtension(".canonical");
- assertTrue("No test files found.", files.length > 0);
- for (int i = 0; i < files.length; i++) {
-- List tokens = canonicalScan(new FileInputStream(files[i]));
-+ InputStream input = new FileInputStream(files[i]);
-+ List tokens = canonicalScan(input);
-+ input.close();
- assertFalse(tokens.isEmpty());
- }
- }
-@@ -59,7 +61,9 @@
- File[] files = getStreamsByExtension(".canonical");
- assertTrue("No test files found.", files.length > 0);
- for (int i = 0; i < files.length; i++) {
-- List tokens = canonicalParse(new FileInputStream(files[i]));
-+ InputStream input = new FileInputStream(files[i]);
-+ List tokens = canonicalParse(input);
-+ input.close();
- assertFalse(tokens.isEmpty());
- }
- }
-diff -Naur snakeyaml.orig/src/test/java/org/pyyaml/PyEmitterTest.java snakeyaml/src/test/java/org/pyyaml/PyEmitterTest.java
---- snakeyaml.orig/src/test/java/org/pyyaml/PyEmitterTest.java 2011-01-12 13:56:10.000000000 +0100
-+++ snakeyaml/src/test/java/org/pyyaml/PyEmitterTest.java 2011-06-09 14:07:02.000000000 +0200
-@@ -19,6 +19,7 @@
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
-+import java.io.InputStream;
- import java.io.StringWriter;
- import java.util.ArrayList;
- import java.util.Arrays;
-@@ -63,7 +64,9 @@
- // continue;
- // }
- try {
-- List events = parse(new FileInputStream(file));
-+ InputStream input = new FileInputStream(file);
-+ List events = parse(input);
-+ input.close();
- //
- StringWriter stream = new StringWriter();
- DumperOptions options = new DumperOptions();
-@@ -116,23 +119,24 @@
- }
- }
-
-- @SuppressWarnings("unchecked")
- public void testEmitterStyles() throws IOException {
- File[] canonicalFiles = getStreamsByExtension(".canonical", false);
- assertTrue("No test files found.", canonicalFiles.length > 0);
- File[] dataFiles = getStreamsByExtension(".data", true);
- assertTrue("No test files found.", dataFiles.length > 0);
-- List allFiles = new ArrayList(Arrays.asList(canonicalFiles));
-+ List allFiles = new ArrayList(Arrays.asList(canonicalFiles));
- allFiles.addAll(Arrays.asList(dataFiles));
- for (File file : allFiles) {
- try {
- List events = new ArrayList();
-- StreamReader reader = new StreamReader(new UnicodeReader(new FileInputStream(file)));
-+ InputStream input = new FileInputStream(file);
-+ StreamReader reader = new StreamReader(new UnicodeReader(input));
- Parser parser = new ParserImpl(reader);
- while (parser.peekEvent() != null) {
- Event event = parser.getEvent();
- events.add(event);
- }
-+ input.close();
- //
- for (Boolean flowStyle : new Boolean[] { Boolean.FALSE, Boolean.TRUE }) {
- for (DumperOptions.ScalarStyle style : DumperOptions.ScalarStyle.values()) {
-@@ -140,19 +144,19 @@
- for (Event event : events) {
- if (event instanceof ScalarEvent) {
- ScalarEvent scalar = (ScalarEvent) event;
-- event = new ScalarEvent(scalar.getAnchor(), scalar.getTag(), scalar
-- .getImplicit(), scalar.getValue(), scalar.getStartMark(),
-- scalar.getEndMark(), style.getChar());
-+ event = new ScalarEvent(scalar.getAnchor(), scalar.getTag(),
-+ scalar.getImplicit(), scalar.getValue(),
-+ scalar.getStartMark(), scalar.getEndMark(), style.getChar());
- } else if (event instanceof SequenceStartEvent) {
- SequenceStartEvent seqStart = (SequenceStartEvent) event;
-- event = new SequenceStartEvent(seqStart.getAnchor(), seqStart
-- .getTag(), seqStart.getImplicit(), seqStart.getStartMark(),
-- seqStart.getEndMark(), flowStyle);
-+ event = new SequenceStartEvent(seqStart.getAnchor(),
-+ seqStart.getTag(), seqStart.getImplicit(),
-+ seqStart.getStartMark(), seqStart.getEndMark(), flowStyle);
- } else if (event instanceof MappingStartEvent) {
- MappingStartEvent mapStart = (MappingStartEvent) event;
-- event = new MappingStartEvent(mapStart.getAnchor(), mapStart
-- .getTag(), mapStart.getImplicit(), mapStart.getStartMark(),
-- mapStart.getEndMark(), flowStyle);
-+ event = new MappingStartEvent(mapStart.getAnchor(),
-+ mapStart.getTag(), mapStart.getImplicit(),
-+ mapStart.getStartMark(), mapStart.getEndMark(), flowStyle);
- }
- styledEvents.add(event);
- }
-diff -Naur snakeyaml.orig/src/test/java/org/pyyaml/PyErrorsTest.java snakeyaml/src/test/java/org/pyyaml/PyErrorsTest.java
---- snakeyaml.orig/src/test/java/org/pyyaml/PyErrorsTest.java 2011-01-12 13:56:10.000000000 +0100
-+++ snakeyaml/src/test/java/org/pyyaml/PyErrorsTest.java 2011-06-09 14:07:02.000000000 +0200
-@@ -19,6 +19,7 @@
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
-+import java.io.InputStream;
- import java.io.StringWriter;
- import java.io.Writer;
- import java.util.ArrayList;
-@@ -54,9 +55,11 @@
- continue;
- }
- try {
-- for (Object document : loadAll(new FileInputStream(files[i]))) {
-+ InputStream input = new FileInputStream(files[i]);
-+ for (Object document : loadAll(input)) {
- assertNotNull("File " + files[i], document);
- }
-+ input.close();
- fail("Loading must fail for " + files[i].getAbsolutePath());
- // System.err.println("Loading must fail for " +
- // files[i].getAbsolutePath());
-diff -Naur snakeyaml.orig/src/test/java/org/pyyaml/PyImportTest.java snakeyaml/src/test/java/org/pyyaml/PyImportTest.java
---- snakeyaml.orig/src/test/java/org/pyyaml/PyImportTest.java 2011-01-12 13:56:10.000000000 +0100
-+++ snakeyaml/src/test/java/org/pyyaml/PyImportTest.java 2011-06-09 14:07:02.000000000 +0200
-@@ -98,6 +98,7 @@
- while (parser.peekEvent() != null) {
- result.add(parser.getEvent());
- }
-+ input2.close();
- return result;
- }
-
-@@ -108,6 +109,7 @@
- while (parser.peekEvent() != null) {
- result.add(parser.getEvent());
- }
-+ input.close();
- return result;
- }
-
-diff -Naur snakeyaml.orig/src/test/java/org/pyyaml/PyReaderTest.java snakeyaml/src/test/java/org/pyyaml/PyReaderTest.java
---- snakeyaml.orig/src/test/java/org/pyyaml/PyReaderTest.java 2011-01-12 13:56:10.000000000 +0100
-+++ snakeyaml/src/test/java/org/pyyaml/PyReaderTest.java 2011-06-09 14:07:02.000000000 +0200
-@@ -19,6 +19,7 @@
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
-+import java.io.InputStream;
-
- import org.yaml.snakeyaml.reader.ReaderException;
- import org.yaml.snakeyaml.reader.StreamReader;
-@@ -32,8 +33,8 @@
- public void testReaderUnicodeErrors() throws IOException {
- File[] inputs = getStreamsByExtension(".stream-error");
- for (int i = 0; i < inputs.length; i++) {
-- StreamReader stream = new StreamReader(
-- new UnicodeReader(new FileInputStream(inputs[i])));
-+ InputStream input = new FileInputStream(inputs[i]);
-+ StreamReader stream = new StreamReader(new UnicodeReader(input));
- try {
- while (stream.peek() != '\u0000') {
- stream.forward();
-@@ -41,10 +42,11 @@
- fail("Invalid stream must not be accepted: " + inputs[i].getAbsolutePath()
- + "; encoding=" + stream.getEncoding());
- } catch (ReaderException e) {
-- assertTrue(e.toString(), e.toString().contains(
-- " special characters are not allowed"));
-+ assertTrue(e.toString(),
-+ e.toString().contains(" special characters are not allowed"));
-+ } finally {
-+ input.close();
- }
- }
- }
--
- }
-diff -Naur snakeyaml.orig/src/test/java/org/pyyaml/PyStructureTest.java snakeyaml/src/test/java/org/pyyaml/PyStructureTest.java
---- snakeyaml.orig/src/test/java/org/pyyaml/PyStructureTest.java 2011-01-12 13:56:10.000000000 +0100
-+++ snakeyaml/src/test/java/org/pyyaml/PyStructureTest.java 2011-06-09 14:07:02.000000000 +0200
-@@ -85,7 +85,9 @@
- continue;
- }
- try {
-- List events1 = parse(new FileInputStream(file));
-+ InputStream input = new FileInputStream(file);
-+ List events1 = parse(input);
-+ input.close();
- assertFalse(events1.isEmpty());
- int index = file.getAbsolutePath().lastIndexOf('.');
- String canonicalName = file.getAbsolutePath().substring(0, index) + ".canonical";
-@@ -106,7 +108,9 @@
- assertTrue("No test files found.", canonicalFiles.length > 0);
- for (File file : canonicalFiles) {
- try {
-- List events1 = parse(new FileInputStream(file));
-+ InputStream input = new FileInputStream(file);
-+ List events1 = parse(input);
-+ input.close();
- assertFalse(events1.isEmpty());
- List events2 = canonicalParse(new FileInputStream(file));
- assertFalse(events2.isEmpty());
-@@ -157,11 +161,15 @@
- assertTrue("No test files found.", files.length > 0);
- for (File file : files) {
- try {
-- List events1 = compose_all(new FileInputStream(file));
-+ InputStream input = new FileInputStream(file);
-+ List events1 = compose_all(input);
-+ input.close();
- int index = file.getAbsolutePath().lastIndexOf('.');
- String canonicalName = file.getAbsolutePath().substring(0, index) + ".canonical";
- File canonical = new File(canonicalName);
-- List events2 = canonical_compose_all(new FileInputStream(canonical));
-+ InputStream input2 = new FileInputStream(canonical);
-+ List events2 = canonical_compose_all(input2);
-+ input2.close();
- assertEquals(events1.size(), events2.size());
- Iterator iter1 = events1.iterator();
- Iterator iter2 = events2.iterator();
-@@ -268,11 +276,14 @@
- Yaml canonicalYaml = new CanonicalLoader();
- for (File file : files) {
- try {
-- Iterable