// Path: src/main/java/com/ojn/gexf4j/core/Mode.java
// public enum Mode {
// 
// 	STATIC,
// 	DYNAMIC,
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/data/Attribute.java
// public interface Attribute {
// 
// 	String getId();
// 	
// 	String getTitle();
// 	Attribute setTitle(String title);
// 	
// 	AttributeType getAttributeType();
// 	
// 	boolean hasDefaultValue();
// 	Attribute clearDefaultValue();
// 	String getDefaultValue();
// 	Attribute setDefaultValue(String defaultValue);
// 	
// 	List<String> getOptions();
// 	
// 	AttributeValue createValue(String value);
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/data/AttributeClass.java
// public enum AttributeClass {
// 
// 	NODE,
// 	EDGE,
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/data/AttributeList.java
// public interface AttributeList extends List<Attribute>, Dynamic<AttributeList> {
// 	
// 	AttributeClass getAttributeClass();
// 	
// 	Mode getMode();
// 	AttributeList setMode(Mode mode);
// 	
// 	Attribute createAttribute(AttributeType type, String title);
// 	Attribute createAttribute(String id, AttributeType type, String title);
// 	
// 	AttributeList addAttribute(AttributeType type, String title);
// 	AttributeList addAttribute(String id, AttributeType type, String title);
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/data/AttributeType.java
// public enum AttributeType {
// 
// 	INTEGER,
// 	LONG,
// 	DOUBLE,
// 	FLOAT,
// 	BOOLEAN,
// 	STRING,
// 	LISTSTRING,
// 	ANYURI,
// }


import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import java.util.ArrayList;
import java.util.Date;
import java.util.UUID;
import com.ojn.gexf4j.core.Mode;
import com.ojn.gexf4j.core.data.Attribute;
import com.ojn.gexf4j.core.data.AttributeClass;
import com.ojn.gexf4j.core.data.AttributeList;
import com.ojn.gexf4j.core.data.AttributeType;
	public Date getStartDate() {
		checkState(startDate != null, "Start Date has not been set.");
		return startDate;
	}

	@Override
	public boolean hasEndDate() {
		return (endDate != null);
	}

	@Override
	public boolean hasStartDate() {
		return (startDate != null);
	}

	@Override
	public AttributeList setEndDate(Date endDate) {
		checkArgument(endDate != null, "End Date cannot be null.");
		this.endDate = endDate;
		return this;
	}

	@Override
	public AttributeList setStartDate(Date startDate) {
		checkArgument(startDate != null, "Start Date cannot be null.");
		this.endDate = startDate;
		return this;
	}

	@Override
// Path: src/main/java/com/ojn/gexf4j/core/Mode.java
// public enum Mode {
// 
// 	STATIC,
// 	DYNAMIC,
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/data/Attribute.java
// public interface Attribute {
// 
// 	String getId();
// 	
// 	String getTitle();
// 	Attribute setTitle(String title);
// 	
// 	AttributeType getAttributeType();
// 	
// 	boolean hasDefaultValue();
// 	Attribute clearDefaultValue();
// 	String getDefaultValue();
// 	Attribute setDefaultValue(String defaultValue);
// 	
// 	List<String> getOptions();
// 	
// 	AttributeValue createValue(String value);
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/data/AttributeClass.java
// public enum AttributeClass {
// 
// 	NODE,
// 	EDGE,
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/data/AttributeList.java
// public interface AttributeList extends List<Attribute>, Dynamic<AttributeList> {
// 	
// 	AttributeClass getAttributeClass();
// 	
// 	Mode getMode();
// 	AttributeList setMode(Mode mode);
// 	
// 	Attribute createAttribute(AttributeType type, String title);
// 	Attribute createAttribute(String id, AttributeType type, String title);
// 	
// 	AttributeList addAttribute(AttributeType type, String title);
// 	AttributeList addAttribute(String id, AttributeType type, String title);
// }
// 
// Path: src/main/java/com/ojn/gexf4j/core/data/AttributeType.java
// public enum AttributeType {
// 
// 	INTEGER,
// 	LONG,
// 	DOUBLE,
// 	FLOAT,
// 	BOOLEAN,
// 	STRING,
// 	LISTSTRING,
// 	ANYURI,
// }


// Path: src/main/java/com/ojn/gexf4j/core/impl/data/AttributeListImpl.java
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import java.util.ArrayList;
import java.util.Date;
import java.util.UUID;
import com.ojn.gexf4j.core.Mode;
import com.ojn.gexf4j.core.data.Attribute;
import com.ojn.gexf4j.core.data.AttributeClass;
import com.ojn.gexf4j.core.data.AttributeList;
import com.ojn.gexf4j.core.data.AttributeType;

	public Date getStartDate() {
		checkState(startDate != null, "Start Date has not been set.");
		return startDate;
	}

	@Override
	public boolean hasEndDate() {
		return (endDate != null);
	}

	@Override
	public boolean hasStartDate() {
		return (startDate != null);
	}

	@Override
	public AttributeList setEndDate(Date endDate) {
		checkArgument(endDate != null, "End Date cannot be null.");
		this.endDate = endDate;
		return this;
	}

	@Override
	public AttributeList setStartDate(Date startDate) {
		checkArgument(startDate != null, "Start Date cannot be null.");
		this.endDate = startDate;
		return this;
	}

	@Override
	public Attribute createAttribute(AttributeType type, String title) {