class 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();
    }

    public  LikePredicate(Expression value, Expression pattern, Expression escape);
    public  LikePredicate(NodeLocation location, Expression value, Expression pattern, Optional<Expression> escape);
    public  LikePredicate(Expression value, Expression pattern, Optional<Expression> escape);
    private  LikePredicate(Optional<NodeLocation> location, Expression value, Expression pattern, Optional<Expression> escape);

}