### Question:
LikePredicate extends Expression { @Override public List<Node> getChildren() { ImmutableList.Builder<Node> result = ImmutableList.<Node>builder() .add(value) .add(pattern); escape.ifPresent(result::add); return result.build(); } LikePredicate(Expression value, Expression pattern, Expression escape);  LikePredicate(NodeLocation location, Expression value, Expression pattern, Optional<Expression> escape);  LikePredicate(Expression value, Expression pattern, Optional<Expression> escape); private  LikePredicate(Optional<NodeLocation> location, Expression value, Expression pattern, Optional<Expression> escape); Expression getValue(); Expression getPattern(); Optional<Expression> getEscape(); @Override R accept(AstVisitor<R, C> visitor, C context); @Override List<Node> getChildren(); @Override boolean equals(Object o); @Override int hashCode(); @Override boolean shallowEquals(Node other);  }### Answer:
@Test public void testGetChildren() { StringLiteral value = new StringLiteral("a"); StringLiteral pattern = new StringLiteral("b"); StringLiteral escape = new StringLiteral("c"); assertEquals(new LikePredicate(value, pattern, escape).getChildren(), ImmutableList.of(value, pattern, escape)); assertEquals(new LikePredicate(value, pattern, Optional.empty()).getChildren(), ImmutableList.of(value, pattern)); }