- this.head = head;
- this.lift = lift && children != null && children.length > 0;
- this.children = ArrayUtil.clone(children, Tree.class);
+ this.ihead = head;
+ if (lift && children != null && children.length > 0) {
+ Tree<NodeType> last = children[children.length-1];
+ this.children = new Tree[(children.length-1)+last.children.length];
+ System.arraycopy(children, 0, this.children, 0, children.length-1);
+ if (last.children.length > 0)
+ System.arraycopy(last.children, 0, this.children, children.length-1, last.children.length);
+ } else {
+ this.children = ArrayUtil.clone(children, Tree.class);
+ }