Flexmi: Allow including YAML files
diff --git a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiParser.java b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiParser.java
index ea495d2..faa6b26 100644
--- a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiParser.java
+++ b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/FlexmiParser.java
@@ -2,15 +2,30 @@
 
 import java.io.InputStream;
 
+import org.eclipse.emf.common.util.URI;
 import org.eclipse.epsilon.flexmi.xml.FlexmiXmlParser.Handler;
 import org.w3c.dom.Document;
 
 public interface FlexmiParser {
 	
-	public void parse(FlexmiResource resource, InputStream inputStream, Handler handler) throws FlexmiParseException;
-	
+	/**
+	 * Starts the parsing of a Flexmi resource
+	 */
+	public void parse(FlexmiResource resource, InputStream inputStream,
+			Handler handler) throws FlexmiParseException;
+
+	/**
+	 * Allows parsing included fragments that have a different URI
+	 * and do not require startDocument events
+	 */
+	public void parse(FlexmiResource resource, URI uri, InputStream inputStream,
+			Handler handler, boolean processDocument) throws Exception;
+
+	/**
+	 * Performs the actual parsing of the input contents into a DOM
+	 */
 	public Document parse(InputStream inputStream) throws Exception;
-	
+
 	public FlexmiFlavour getFlavour();
 	
 }
diff --git a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/xml/FlexmiXmlParser.java b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/xml/FlexmiXmlParser.java
index ecbfaef..5f5eb5a 100644
--- a/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/xml/FlexmiXmlParser.java
+++ b/plugins/org.eclipse.epsilon.flexmi/src/org/eclipse/epsilon/flexmi/xml/FlexmiXmlParser.java
@@ -9,6 +9,7 @@
 **********************************************************************/
 package org.eclipse.epsilon.flexmi.xml;
 
+import java.io.BufferedInputStream;
 import java.io.InputStream;
 import java.net.URL;
 import java.util.Scanner;
@@ -124,8 +125,12 @@
 				try {
 					URI includedURI = URI.createURI(value).resolve(uri);
 					InputStream includedInputStream = resource.getResourceSet().getURIConverter().createInputStream(includedURI);
+
+					BufferedInputStream bufferedInputStream = new BufferedInputStream(includedInputStream);
+					FlexmiParser parser = resource.createParser(bufferedInputStream);
+
 					resource.startProcessingFragment(includedURI);
-					new FlexmiXmlParser().parse(resource, includedURI, includedInputStream, handler, false);
+					parser.parse(resource, includedURI, bufferedInputStream, handler, false);
 					resource.endProcessingFragment();
 				}
 				catch (Exception ex) {