// 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/nodes/AbstractNode.java
// public abstract class AbstractNode extends AbstractEntity implements HasUnions, HasIntersections, HasComplement {
// 
// 	private Set<IRI> complements = new SetWithoutNull<>();
// 	private Set<IRI> intersectionElements = new SetWithoutNull<>();
// 	private Set<IRI> unionElements = new SetWithoutNull<>();
// 	private Set<IRI> inGoingProperties = new SetWithoutNull<>();
// 	private Set<IRI> outGoingProperties = new SetWithoutNull<>();
// 
// 	protected AbstractNode(IRI iri, String type) {
// 		super(iri, type);
// 	}
// 
// 	public Set<IRI> getInGoingProperties() {
// 		return inGoingProperties;
// 	}
// 
// 	public Set<IRI> getOutGoingProperties() {
// 		return outGoingProperties;
// 	}
// 
// 	@Override
// 	public Set<IRI> getComplements() {
// 		return Collections.unmodifiableSet(complements);
// 	}
// 
// 	@Override
// 	public void addComplement(IRI iri) {
// 		if (iri.equals(VowlThing.GENERIC_THING_IRI)){
// 			return;
// 		}
// 		complements.add(iri);
// 	}
// 
// 	@Override
// 	public void addElementToIntersection(IRI iri) {
// 		if (iri.equals(VowlThing.GENERIC_THING_IRI)){
// 			return;
// 		}
// 		intersectionElements.add(iri);
// 	}
// 
// 	@Override
// 	public Set<IRI> getElementOfIntersection() {
// 		return Collections.unmodifiableSet(intersectionElements);
// 	}
// 
// 	@Override
// 	public void addElementToUnion(IRI iri) {
// 		if (iri.equals(VowlThing.GENERIC_THING_IRI)){
// 			return;
// 		}
// 		unionElements.add(iri);
// 	}
// 
// 	@Override
// 	public Set<IRI> getElementsOfUnion() {
// 		return Collections.unmodifiableSet(unionElements);
// 	}
// 
// 	public void addInGoingProperty(IRI property) {
// 		inGoingProperties.add(property);
// 	}
// 
// 	public void addOutGoingProperty(IRI property) {
// 		outGoingProperties.add(property);
// 	}
// 	
// 	@Override
// 	public void releaseMemory() {
// 		if (complements!=null) complements.clear();
// 		if (intersectionElements!=null) intersectionElements.clear();
// 		if (unionElements!=null) unionElements.clear();
// 		if (inGoingProperties!=null) inGoingProperties.clear();
// 		if (outGoingProperties!=null) outGoingProperties.clear();
// 		
// 		complements 		 = null;
// 		intersectionElements = null;
// 		unionElements		 = null;
// 		inGoingProperties	 = null;
// 		outGoingProperties	 = null;
// 	}
// 	
// }


import de.uni_stuttgart.vis.vowl.owl2vowl.model.SetWithoutNull;
import de.uni_stuttgart.vis.vowl.owl2vowl.model.entities.nodes.AbstractNode;
import org.semanticweb.owlapi.model.IRI;
import java.util.Collections;
import java.util.Set;
	@Override
	public Set<IRI> getIndividuals() {
		return Collections.unmodifiableSet(individuals);
	}

	@Override
	public void addInstance(IRI iri) {
		instances.add(iri);
	}

	@Override
	public Set<IRI> getInstances() {
		return Collections.unmodifiableSet(instances);
	}

	public Set<IRI> getKeys() {
		return Collections.unmodifiableSet(keys);
	}

	public void addKey(IRI keyIri) {
		keys.add(keyIri);
	}
	
	@Override
	public void releaseMemory() {
		if ( disjointUnion	!= null) disjointUnion.clear();
		if ( instances		!= null) instances.clear();
		if ( individuals	!= null) individuals.clear();
		if ( keys			!= null) keys.clear();
		
// 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/nodes/AbstractNode.java
// public abstract class AbstractNode extends AbstractEntity implements HasUnions, HasIntersections, HasComplement {
// 
// 	private Set<IRI> complements = new SetWithoutNull<>();
// 	private Set<IRI> intersectionElements = new SetWithoutNull<>();
// 	private Set<IRI> unionElements = new SetWithoutNull<>();
// 	private Set<IRI> inGoingProperties = new SetWithoutNull<>();
// 	private Set<IRI> outGoingProperties = new SetWithoutNull<>();
// 
// 	protected AbstractNode(IRI iri, String type) {
// 		super(iri, type);
// 	}
// 
// 	public Set<IRI> getInGoingProperties() {
// 		return inGoingProperties;
// 	}
// 
// 	public Set<IRI> getOutGoingProperties() {
// 		return outGoingProperties;
// 	}
// 
// 	@Override
// 	public Set<IRI> getComplements() {
// 		return Collections.unmodifiableSet(complements);
// 	}
// 
// 	@Override
// 	public void addComplement(IRI iri) {
// 		if (iri.equals(VowlThing.GENERIC_THING_IRI)){
// 			return;
// 		}
// 		complements.add(iri);
// 	}
// 
// 	@Override
// 	public void addElementToIntersection(IRI iri) {
// 		if (iri.equals(VowlThing.GENERIC_THING_IRI)){
// 			return;
// 		}
// 		intersectionElements.add(iri);
// 	}
// 
// 	@Override
// 	public Set<IRI> getElementOfIntersection() {
// 		return Collections.unmodifiableSet(intersectionElements);
// 	}
// 
// 	@Override
// 	public void addElementToUnion(IRI iri) {
// 		if (iri.equals(VowlThing.GENERIC_THING_IRI)){
// 			return;
// 		}
// 		unionElements.add(iri);
// 	}
// 
// 	@Override
// 	public Set<IRI> getElementsOfUnion() {
// 		return Collections.unmodifiableSet(unionElements);
// 	}
// 
// 	public void addInGoingProperty(IRI property) {
// 		inGoingProperties.add(property);
// 	}
// 
// 	public void addOutGoingProperty(IRI property) {
// 		outGoingProperties.add(property);
// 	}
// 	
// 	@Override
// 	public void releaseMemory() {
// 		if (complements!=null) complements.clear();
// 		if (intersectionElements!=null) intersectionElements.clear();
// 		if (unionElements!=null) unionElements.clear();
// 		if (inGoingProperties!=null) inGoingProperties.clear();
// 		if (outGoingProperties!=null) outGoingProperties.clear();
// 		
// 		complements 		 = null;
// 		intersectionElements = null;
// 		unionElements		 = null;
// 		inGoingProperties	 = null;
// 		outGoingProperties	 = null;
// 	}
// 	
// }


// Path: src/main/java/de/uni_stuttgart/vis/vowl/owl2vowl/model/entities/nodes/classes/AbstractClass.java
import de.uni_stuttgart.vis.vowl.owl2vowl.model.SetWithoutNull;
import de.uni_stuttgart.vis.vowl.owl2vowl.model.entities.nodes.AbstractNode;
import org.semanticweb.owlapi.model.IRI;
import java.util.Collections;
import java.util.Set;

	@Override
	public Set<IRI> getIndividuals() {
		return Collections.unmodifiableSet(individuals);
	}

	@Override
	public void addInstance(IRI iri) {
		instances.add(iri);
	}

	@Override
	public Set<IRI> getInstances() {
		return Collections.unmodifiableSet(instances);
	}

	public Set<IRI> getKeys() {
		return Collections.unmodifiableSet(keys);
	}

	public void addKey(IRI keyIri) {
		keys.add(keyIri);
	}
	
	@Override
	public void releaseMemory() {
		if ( disjointUnion	!= null) disjointUnion.clear();
		if ( instances		!= null) instances.clear();
		if ( individuals	!= null) individuals.clear();
		if ( keys			!= null) keys.clear();
		
		disjointUnion=null;