code: public static void check(final Tree<? extends Op<?>, ?> program) {
  		requireNonNull(program);
  		program.forEach(Program::checkArity);
  	}
docs: Validates the given program tree.
  
  @param program the program to validate
  @throws NullPointerException if the given {@code program} is {@code null}
  @throws IllegalArgumentException if the given operation tree is invalid,
  which means there is at least one node where the operation arity
  and the node child count differ.