public S addChild(S node){
  children.add(node);
  node.parent=Optional.of(this);
  return node;
}

public S addChild ( S node ) { children . add ( node ) ; node . parent = Optional . of ( this ) ; return node ; }
adds a childnode to the node
