}
  public int compareTo(Object other)  {    if (other instanceof ParameterNode)      {        ParameterNode pn = (ParameterNode) other;        boolean r1 = references(pn.name);        boolean r2 = pn.references(name);        if (r1 && r2)          {            throw new IllegalArgumentException("circular definitions");          }        if (r1)          {            return 1;          }        if (r2)          {            return -1;          }      }    return 0;  }