public GenericObject deepClone() { final GenericObject retValue = new GenericObject(parent, name); for (WritableObject obj : allWritable) { if (obj instanceof GenericObject) { GenericObject go = ((GenericObject) obj).deepClone(); retValue.addChild(go); } else if (obj instanceof GenericList) { GenericList gl = ((GenericList) obj).clone(); retValue.addList(gl); } else if (obj instanceof ObjectVariable) { ObjectVariable ov = ((ObjectVariable) obj).clone(); retValue.values.add(ov); retValue.allWritable.add(ov); } else if (obj instanceof InlineComment) { Comment com = ((InlineComment) obj).clone(); retValue.generalComments.add(com); retValue.allWritable.add(com); } } if (headComment != null) retValue.setHeadComment(headComment.getComment()); if (inlineComment != null) retValue.setInlineComment(inlineComment.getComment()); return retValue; }
/** * Creates and returns a shallow copy of this object. Note that children are not cloned, but the * lists of children are. * * @return a shallow copy of this object. */ @Override public GenericObject clone() { final GenericObject retValue = new GenericObject(parent, name); retValue.children.addAll(children); retValue.lists.addAll(lists); retValue.values.addAll(values); retValue.generalComments.addAll(generalComments); retValue.allWritable.addAll(allWritable); if (headComment != null) retValue.setHeadComment(headComment.getComment()); if (inlineComment != null) retValue.setInlineComment(inlineComment.getComment()); return retValue; }
/** * Simple recursive method to find the root node. * * @since EUGFile 1.01.03 */ public GenericObject getRoot() { return (parent == null ? this : parent.getRoot()); }