FunctionCallExpr extends Expr { @Override public Expr getChild(int index) { if (index < 0 || index >= getNumArgs()) { throw new IndexOutOfBoundsException("FunctionCallExpr has no child at index " + index); } return getArg(index); } FunctionCallExpr(String callee, List<Expr> args);  FunctionCallExpr(String callee, Expr... args); String getCallee(); void setCallee(String callee); List<Expr> getArgs(); int getNumArgs(); Expr getArg(int index); void setArg(int index, Expr expr); void removeArg(int index); @Override void accept(IAstVisitor visitor); @Override FunctionCallExpr clone(); @Override boolean hasChild(IAstNode candidateChild); @Override Expr getChild(int index); @Override void setChild(int index, Expr expr); @Override int getNumChildren();  }
@Test public void getChild() throws Exception { assertEquals(fce.getChild(0), fce.getArg(0)); assertEquals(fce.getChild(1), fce.getArg(1)); assertEquals(fce.getChild(2), fce.getArg(2)); assertEquals(fce.getChild(3), fce.getArg(3)); }
@Test(expected = IndexOutOfBoundsException.class) public void getChildBad() { fce.getChild(4); }