code: @Override
      public Positions merge(Positions other) {
  
          if (other instanceof SinglePosition) {
  
              throw new IllegalArgumentException("Cannot merge single position and area children");
          } else if (other instanceof LinearPositions) {
  
              LinearPositions that = (LinearPositions) other;
              return builder().addLinearPosition(that).build();
          } else if (other instanceof AreaPositions) {
  
              AreaPositions that = (AreaPositions) other;
              return MultiDimensionalPositions.builder().addAreaPosition(this).addAreaPosition(that).build();
          } else {
  
              return other.merge(this);
          }
      }
docs: Merge this Positions with another one. If the given {@link Positions} is:
  - SinglePosition, it will raise an IllegalArgumentException.
  - LinearPositions, it will return a new AreaPosition by appending the given LinearPositions to this.
  - AreaPositions, it will return a new MultiDimensionalPositions composed by this and the given AreaPositions,
  in order.
  - Any other, it delegates to the other the merge logic.
  
  @param other Positions instance to merge with.
  
  @return Positions results of merging.