// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/model/SetWithoutNull.java
// @SuppressWarnings("serial")
// public class SetWithoutNull<E> extends HashSet<E> {
// 	@Override
// 	public boolean add(E e) {
// 		return e != null && super.add(e);
// 
// 	}
// }
// 
// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/model/entities/AbstractEntity.java
// public abstract class AbstractEntity extends AbstractVowlObject implements HasEquivalents, HasSubEntities {
// 	private String type;
// 	private Set<VowlAttribute> attributes = new HashSet<>();
// 	private Set<IRI> equivalents = new SetWithoutNull<>();
// 	private List<IRI> sortedEquivalents = new ArrayList<>();
// 	private Set<IRI> subEntities = new SetWithoutNull<>();
// 	private Set<IRI> superEntities = new SetWithoutNull<>();
// 	private VowlGenerationEnum generated = VowlGenerationEnum.AUTOMATIC;
// 	private boolean exportToJson = true;
// 
// 	protected AbstractEntity(IRI iri, String type) {
// 		super(iri);
// 		this.type = type;
// 	}
// 
// 	public List<IRI> getSortedEquivalents() {
// 		return Collections.unmodifiableList(sortedEquivalents);
// 	}
// 
// 	public void setSortedEquivalents(List<IRI> sortedEquivalents) {
// 		this.sortedEquivalents = sortedEquivalents;
// 	}
// 
// 	public VowlGenerationEnum getGenerated() {
// 		return generated;
// 	}
// 
// 	public void setGenerated(VowlGenerationEnum generated) {
// 		this.generated = generated;
// 	}
// 
// 	public Set<VowlAttribute> getAttributes() {
// 		return Collections.unmodifiableSet(attributes);
// 	}
// 
// 	public void addAttribute(VowlAttribute attribute) {
// 		attributes.add(attribute);
// 	}
// 
// 	public String getType() {
// 		return type;
// 	}
// 
// 	public void setType(String type) {
// 		this.type = type;
// 	}
// 
// 	@Override
// 	public Set<IRI> getEquivalentElements() {
// 		return Collections.unmodifiableSet(equivalents);
// 	}
// 
// 	@Override
// 	public void addEquivalentElement(IRI iri) {
// 		equivalents.add(iri);
// 	}
// 
// 	@Override
// 	public boolean equals(Object o) {
// 		if (this == o)
// 			return true;
// 		if (o == null || getClass() != o.getClass())
// 			return false;
// 
// 		AbstractEntity that = (AbstractEntity) o;
// 
// 		return !(iri != null ? !iri.equals(that.iri) : that.iri != null);
// 
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return iri != null ? iri.hashCode() : 0;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return iri.toString();
// 	}
// 
// 	@Override
// 	public Set<IRI> getSuperEntities() {
// 		return Collections.unmodifiableSet(superEntities);
// 	}
// 
// 	@Override
// 	public void addSuperEntity(IRI iri) {
// 		superEntities.add(iri);
// 	}
// 
// 	@Override
// 	public Set<IRI> getSubEntities() {
// 		return Collections.unmodifiableSet(subEntities);
// 	}
// 
// 	@Override
// 	public void addSubEntity(IRI iri) {
// 		subEntities.add(iri);
// 	}
// 
// 	public boolean isExportToJson() {
// 		return exportToJson;
// 	}
// 
// 	public void setExportToJson(boolean exportToJson) {
// 		this.exportToJson = exportToJson;
// 	}
// 	
// 	// Memory Handler required? 
// 	
// 	public void releaseMemory() {
// 		attributes.clear();
// 		equivalents.clear();
// 		sortedEquivalents.clear();
// 		subEntities.clear();
// 		superEntities.clear();
// 		
// 		attributes        = null;
// 		equivalents       = null;
// 		sortedEquivalents = null;
// 		subEntities       = null;
// 		superEntities     = null;
// 
// 	}
// 	
// }
// 
// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/model/visitor/VowlPropertyVisitor.java
// public interface VowlPropertyVisitor {
// 	void visit(VowlObjectProperty vowlObjectProperty);
// 
// 	void visit(VowlDatatypeProperty vowlDatatypeProperty);
// 
// 	void visit(TypeOfProperty typeOfProperty);
// }


import de.uni_stuttgart.vis.vowl.owl2vowl.model.SetWithoutNull;
import de.uni_stuttgart.vis.vowl.owl2vowl.model.entities.AbstractEntity;
import de.uni_stuttgart.vis.vowl.owl2vowl.model.visitor.VowlPropertyVisitor;
import org.semanticweb.owlapi.model.IRI;
import java.util.Set;

	@Override
	public void setMaxCardinality(Integer value) {
		maxCardinality = value;
	}

	@Override
	public Integer getMinCardinality() {
		return minCardinality;
	}

	@Override
	public void setMinCardinality(Integer value) {
		minCardinality = value;
	}

	
	@Override
	public void releaseMemory() {
		if (domains!=null) domains.clear();
		if (ranges!=null) ranges.clear();
		if (referencedIris!=null) referencedIris.clear();
		
		
		domains 		= null;
		ranges			= null;
		referencedIris	= null;
		
	}
	
// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/model/SetWithoutNull.java
// @SuppressWarnings("serial")
// public class SetWithoutNull<E> extends HashSet<E> {
// 	@Override
// 	public boolean add(E e) {
// 		return e != null && super.add(e);
// 
// 	}
// }
// 
// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/model/entities/AbstractEntity.java
// public abstract class AbstractEntity extends AbstractVowlObject implements HasEquivalents, HasSubEntities {
// 	private String type;
// 	private Set<VowlAttribute> attributes = new HashSet<>();
// 	private Set<IRI> equivalents = new SetWithoutNull<>();
// 	private List<IRI> sortedEquivalents = new ArrayList<>();
// 	private Set<IRI> subEntities = new SetWithoutNull<>();
// 	private Set<IRI> superEntities = new SetWithoutNull<>();
// 	private VowlGenerationEnum generated = VowlGenerationEnum.AUTOMATIC;
// 	private boolean exportToJson = true;
// 
// 	protected AbstractEntity(IRI iri, String type) {
// 		super(iri);
// 		this.type = type;
// 	}
// 
// 	public List<IRI> getSortedEquivalents() {
// 		return Collections.unmodifiableList(sortedEquivalents);
// 	}
// 
// 	public void setSortedEquivalents(List<IRI> sortedEquivalents) {
// 		this.sortedEquivalents = sortedEquivalents;
// 	}
// 
// 	public VowlGenerationEnum getGenerated() {
// 		return generated;
// 	}
// 
// 	public void setGenerated(VowlGenerationEnum generated) {
// 		this.generated = generated;
// 	}
// 
// 	public Set<VowlAttribute> getAttributes() {
// 		return Collections.unmodifiableSet(attributes);
// 	}
// 
// 	public void addAttribute(VowlAttribute attribute) {
// 		attributes.add(attribute);
// 	}
// 
// 	public String getType() {
// 		return type;
// 	}
// 
// 	public void setType(String type) {
// 		this.type = type;
// 	}
// 
// 	@Override
// 	public Set<IRI> getEquivalentElements() {
// 		return Collections.unmodifiableSet(equivalents);
// 	}
// 
// 	@Override
// 	public void addEquivalentElement(IRI iri) {
// 		equivalents.add(iri);
// 	}
// 
// 	@Override
// 	public boolean equals(Object o) {
// 		if (this == o)
// 			return true;
// 		if (o == null || getClass() != o.getClass())
// 			return false;
// 
// 		AbstractEntity that = (AbstractEntity) o;
// 
// 		return !(iri != null ? !iri.equals(that.iri) : that.iri != null);
// 
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return iri != null ? iri.hashCode() : 0;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return iri.toString();
// 	}
// 
// 	@Override
// 	public Set<IRI> getSuperEntities() {
// 		return Collections.unmodifiableSet(superEntities);
// 	}
// 
// 	@Override
// 	public void addSuperEntity(IRI iri) {
// 		superEntities.add(iri);
// 	}
// 
// 	@Override
// 	public Set<IRI> getSubEntities() {
// 		return Collections.unmodifiableSet(subEntities);
// 	}
// 
// 	@Override
// 	public void addSubEntity(IRI iri) {
// 		subEntities.add(iri);
// 	}
// 
// 	public boolean isExportToJson() {
// 		return exportToJson;
// 	}
// 
// 	public void setExportToJson(boolean exportToJson) {
// 		this.exportToJson = exportToJson;
// 	}
// 	
// 	// Memory Handler required? 
// 	
// 	public void releaseMemory() {
// 		attributes.clear();
// 		equivalents.clear();
// 		sortedEquivalents.clear();
// 		subEntities.clear();
// 		superEntities.clear();
// 		
// 		attributes        = null;
// 		equivalents       = null;
// 		sortedEquivalents = null;
// 		subEntities       = null;
// 		superEntities     = null;
// 
// 	}
// 	
// }
// 
// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/model/visitor/VowlPropertyVisitor.java
// public interface VowlPropertyVisitor {
// 	void visit(VowlObjectProperty vowlObjectProperty);
// 
// 	void visit(VowlDatatypeProperty vowlDatatypeProperty);
// 
// 	void visit(TypeOfProperty typeOfProperty);
// }


// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/model/entities/properties/AbstractProperty.java
import de.uni_stuttgart.vis.vowl.owl2vowl.model.SetWithoutNull;
import de.uni_stuttgart.vis.vowl.owl2vowl.model.entities.AbstractEntity;
import de.uni_stuttgart.vis.vowl.owl2vowl.model.visitor.VowlPropertyVisitor;
import org.semanticweb.owlapi.model.IRI;
import java.util.Set;


	@Override
	public void setMaxCardinality(Integer value) {
		maxCardinality = value;
	}

	@Override
	public Integer getMinCardinality() {
		return minCardinality;
	}

	@Override
	public void setMinCardinality(Integer value) {
		minCardinality = value;
	}

	
	@Override
	public void releaseMemory() {
		if (domains!=null) domains.clear();
		if (ranges!=null) ranges.clear();
		if (referencedIris!=null) referencedIris.clear();
		
		
		domains 		= null;
		ranges			= null;
		referencedIris	= null;
		
	}
	
	public abstract void accept(VowlPropertyVisitor visitor);