docs: public boolean isSameAs( AstNode other ) {
          if (other == null) {
              return false;
          }
          if (!this.name.equals(other.name)) {
              return false;
          }
          if (!this.properties.equals(other.properties)) {
              return false;
          }
          if (this.getChildCount() != other.getChildCount()) {
              return false;
          }
          Iterator<AstNode> thisChildren = this.getChildren().iterator();
          Iterator<AstNode> thatChildren = other.getChildren().iterator();
          while (thisChildren.hasNext() && thatChildren.hasNext()) {
              if (!thisChildren.next().isSameAs(thatChildren.next())) {
                  return false;
              }
          }
          return true;
      }