@Override
      public boolean equals(Object obj) {
        // The map instance is used as the recursion prevention key.
        // Each instance is determined by several flags: physical, incomplete, poly;
        // Each instance is unique, so we don't need to store flags to check equality.
        return this == obj;
      }
@Override
      public boolean equals(Object obj)