// Path: src/main/java/de/graphml/writer/model/ElementWriter.java
// public interface ElementWriter {
// 
// 	void startData(Key key);
// 
// 	void startElement(String localName);
// 
// 	void startElement(String namespaceURI, String localName);
// 
// 	void writeAttribute(String localName, String value);
// 
// 	void writeAttribute(String localName, Boolean value);
// 
// 	void writeAttribute(String localName, Double value);
// 
// 	void writeAttribute(String localName, Integer value);
// 
// 	void writeText(String description);
// 
// 	void endElement();
// }
// 
// Path: src/main/java/de/graphml/writer/yed/YedConstants.java
// public interface YedConstants {
// 	public static String Y = "http://www.yworks.com/xml/graphml";
// }
// 
// Path: src/main/java/de/graphml/writer/yed/style/ModelName.java
// public enum ModelName {
// 	CUSTOM("custom"),
// 	CORNERS("corners"),
// 	INTERNAL("internal"),
// 	SANDWICH("sandwich"),
// 	EIGHT_POS("eight_pos"),
// 	EDGE_OPPOSITE("edge_opposite"),
// 	// edge models
// 	CENTERED("centered"),
// 	TWO_POS("two_pos"),
// 	THREE_CENTER("three_center"),
// 	SIX_POS("six_pos"),
// 	CENTER_SLIDER("center_slider"),
// 	SIDE_SLIDER("side_slider");
// 	public final String value;
// 	private ModelName(String value){
// 		this.value = value;
// 	}
// }
// 
// Path: src/main/java/de/graphml/writer/yed/style/ModelPosition.java
// public enum ModelPosition {
// 	NORTH("n"),
// 	NORTH_EAST("ne"),
// 	EAST("e"),
// 	SOUTH_EAST("se"),
// 	SOUTH("s"),
// 	SOUTH_WEST("se"),
// 	WEST("w"),
// 	NORTH_WEST("nw"),
// 	CENTER("c"),
// 	TOP("t"),
// 	BOTTOM("b"),
// 	LEFT("l"),
// 	RIGHT("r"),
// 	TOP_RIGHT("tr"),
// 	TOP_LEFT("tl"),
// 	BOTTOM_RIGHT("br"),
// 	BOTTOM_LEFT("bl"),
// 	
// 	TWO_POS_HEAD("head"),
// 	TWO_POS_TAIL("tail"),
// 	
// 	THREE_CENTER("center"),
// 	THREE_SOURCE_CENTER("scentr"),
// 	THREE_TARGET_CENTER("tcentr"),
// 	
// 	SIX_POS_HEAD("head"),
// 	SIX_POS_TAIL("tail"),
// 	SIX_POS_SOURCE_HEAD("shead"),
// 	SIX_POS_SOURCE_TAIL("stail"),
// 	SIX_POS_TARGET_HEAD("thead"),
// 	SIX_POS_TARGET_TAIL("ttail");
// 	public final String value;
// 	private ModelPosition(String value){
// 		this.value = value;
// 	}
// }


import de.graphml.writer.model.ElementWriter;
import de.graphml.writer.yed.YedConstants;
import de.graphml.writer.yed.style.ModelName;
import de.graphml.writer.yed.style.ModelPosition;
		writerAttributes(w);
		w.writeAttribute("preferredPlacement", "anywhere");
		if (autoFlippingLabel){
			w.writeAttribute("configuration", "AutoFlippingLabel");
		}
		w.writeAttribute("ratio", ratio);
		w.writeAttribute("distance", distance);
		w.writeText(text);
		if (labelModel != null){
			w.startElement(Y, "LabelModel");
			labelModel.writeTo(w);
			w.endElement();
		}
		
		w.startElement(Y, "ModelParameter");
		if (labelModel != null){
			labelModel.writeParameter(w);
		}
		w.endElement();

		w.endElement();
	}

	public static EdgeLabel centered(String text) {
		return withModelAndPosition(text, ModelName.CENTERED, ModelPosition.CENTER);
	}
	public static EdgeLabel sourceCenter(String text) {
		return withModelAndPosition(text, ModelName.THREE_CENTER, ModelPosition.THREE_SOURCE_CENTER);
	}
	public static EdgeLabel sourceHead(String text) {
// Path: src/main/java/de/graphml/writer/model/ElementWriter.java
// public interface ElementWriter {
// 
// 	void startData(Key key);
// 
// 	void startElement(String localName);
// 
// 	void startElement(String namespaceURI, String localName);
// 
// 	void writeAttribute(String localName, String value);
// 
// 	void writeAttribute(String localName, Boolean value);
// 
// 	void writeAttribute(String localName, Double value);
// 
// 	void writeAttribute(String localName, Integer value);
// 
// 	void writeText(String description);
// 
// 	void endElement();
// }
// 
// Path: src/main/java/de/graphml/writer/yed/YedConstants.java
// public interface YedConstants {
// 	public static String Y = "http://www.yworks.com/xml/graphml";
// }
// 
// Path: src/main/java/de/graphml/writer/yed/style/ModelName.java
// public enum ModelName {
// 	CUSTOM("custom"),
// 	CORNERS("corners"),
// 	INTERNAL("internal"),
// 	SANDWICH("sandwich"),
// 	EIGHT_POS("eight_pos"),
// 	EDGE_OPPOSITE("edge_opposite"),
// 	// edge models
// 	CENTERED("centered"),
// 	TWO_POS("two_pos"),
// 	THREE_CENTER("three_center"),
// 	SIX_POS("six_pos"),
// 	CENTER_SLIDER("center_slider"),
// 	SIDE_SLIDER("side_slider");
// 	public final String value;
// 	private ModelName(String value){
// 		this.value = value;
// 	}
// }
// 
// Path: src/main/java/de/graphml/writer/yed/style/ModelPosition.java
// public enum ModelPosition {
// 	NORTH("n"),
// 	NORTH_EAST("ne"),
// 	EAST("e"),
// 	SOUTH_EAST("se"),
// 	SOUTH("s"),
// 	SOUTH_WEST("se"),
// 	WEST("w"),
// 	NORTH_WEST("nw"),
// 	CENTER("c"),
// 	TOP("t"),
// 	BOTTOM("b"),
// 	LEFT("l"),
// 	RIGHT("r"),
// 	TOP_RIGHT("tr"),
// 	TOP_LEFT("tl"),
// 	BOTTOM_RIGHT("br"),
// 	BOTTOM_LEFT("bl"),
// 	
// 	TWO_POS_HEAD("head"),
// 	TWO_POS_TAIL("tail"),
// 	
// 	THREE_CENTER("center"),
// 	THREE_SOURCE_CENTER("scentr"),
// 	THREE_TARGET_CENTER("tcentr"),
// 	
// 	SIX_POS_HEAD("head"),
// 	SIX_POS_TAIL("tail"),
// 	SIX_POS_SOURCE_HEAD("shead"),
// 	SIX_POS_SOURCE_TAIL("stail"),
// 	SIX_POS_TARGET_HEAD("thead"),
// 	SIX_POS_TARGET_TAIL("ttail");
// 	public final String value;
// 	private ModelPosition(String value){
// 		this.value = value;
// 	}
// }


// Path: src/main/java/de/graphml/writer/yed/graphics/EdgeLabel.java
import de.graphml.writer.model.ElementWriter;
import de.graphml.writer.yed.YedConstants;
import de.graphml.writer.yed.style.ModelName;
import de.graphml.writer.yed.style.ModelPosition;

		writerAttributes(w);
		w.writeAttribute("preferredPlacement", "anywhere");
		if (autoFlippingLabel){
			w.writeAttribute("configuration", "AutoFlippingLabel");
		}
		w.writeAttribute("ratio", ratio);
		w.writeAttribute("distance", distance);
		w.writeText(text);
		if (labelModel != null){
			w.startElement(Y, "LabelModel");
			labelModel.writeTo(w);
			w.endElement();
		}
		
		w.startElement(Y, "ModelParameter");
		if (labelModel != null){
			labelModel.writeParameter(w);
		}
		w.endElement();

		w.endElement();
	}

	public static EdgeLabel centered(String text) {
		return withModelAndPosition(text, ModelName.CENTERED, ModelPosition.CENTER);
	}
	public static EdgeLabel sourceCenter(String text) {
		return withModelAndPosition(text, ModelName.THREE_CENTER, ModelPosition.THREE_SOURCE_CENTER);
	}
	public static EdgeLabel sourceHead(String text) {
		return withModelAndPosition(text, ModelName.SIX_POS, ModelPosition.SIX_POS_SOURCE_HEAD);