code: @Override
      public int compareTo(AstNode other) {
          if (this.equals(other)) return 0;
          int abs1 = this.getAbsolutePosition();
          int abs2 = other.getAbsolutePosition();
          if (abs1 < abs2) return -1;
          if (abs2 < abs1) return 1;
          int len1 = this.getLength();
          int len2 = other.getLength();
          if (len1 < len2) return -1;
          if (len2 < len1) return 1;
          return this.hashCode() - other.hashCode();
      }
docs: Permits AST nodes to be sorted based on start position and length.
  This makes it easy to sort Comment and Error nodes into a set of
  other AST nodes:  just put them all into a {@link java.util.SortedSet},
  for instance.
  @param other another node
  @return -1 if this node's start position is less than {@code other}'s
  start position.  If tied, -1 if this node's length is less than
  {@code other}'s length.  If the lengths are equal, sorts abitrarily
  on hashcode unless the nodes are the same per {@link #equals}.