1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package dev.metaschema.core.metapath.cst;
7   
8   import java.util.List;
9   import java.util.Objects;
10  
11  import dev.metaschema.core.metapath.IExpression;
12  import edu.umd.cs.findbugs.annotations.NonNull;
13  
14  /**
15   * An immutable expression that has a number of sub-expression children.
16   */
17  public abstract class AbstractNAryExpression
18      extends AbstractExpression {
19    @NonNull
20    private final List<IExpression> children;
21  
22    /**
23     * Construct a new n-ary expression.
24     *
25     * @param text
26     *          the parsed text of the expression
27     * @param children
28     *          the sub-expression children
29     */
30    public AbstractNAryExpression(@NonNull String text, @NonNull List<IExpression> children) {
31      super(text);
32      this.children = Objects.requireNonNull(children);
33    }
34  
35    @Override
36    public List<IExpression> getChildren() {
37      return children;
38    }
39  }