package cide.gast; public class PropertyOne<T extends IASTNode> extends Property { protected T value; public PropertyOne(String name, T value) { super(name, PropertyType.ONE); this.value = value; } public T getValue() { return value; } public void setValue(T value) { if (value != null){ this.value = value; notifyChange(); } } public boolean canRemoveSubtree(IASTNode node) { return false; } public void removeSubtree(IASTNode node) { throw new UnsupportedOperationException(); } @Override public void replaceChild(IASTNode oldChild, IASTNode newChild) { if (value == oldChild) setValue((T) newChild); } public void setParent(IASTNode parent) { super.setParent(parent); value.setParentProperty(this); } Property deepCopy() { return new PropertyOne<T>(new String(name), (T) value.deepCopy()); } public IASTNode[] getChildren() { return new IASTNode[] { value }; } }