private SingularAttributeBinding locateAttributeBindingFromIdentifier(
      TableSpecification table, List<? extends Value> values) {
    if (!primaryTable.equals(table)) {
      return null;
    }

    final EntityIdentifier idInfo = hierarchyDetails.getEntityIdentifier();
    final SingularAttributeBinding idAttributeBinding =
        idInfo.getEntityIdentifierBinding().getAttributeBinding();
    final List<? extends Value> idAttributeValues = idAttributeBinding.getValues();
    // order-insensitive check (column order handled later)
    if (idAttributeValues.size() == values.size() && idAttributeValues.containsAll(values)) {
      return idAttributeBinding;
    }
    //		if ( idAttributeValues.equals( values ) ) {
    //			return idAttributeBinding;
    //		}

    return null;
  }
 public boolean isPolymorphic() {
   return !isRoot()
       || hierarchyDetails.getEntityDiscriminator() != null
       || !subEntityBindings.isEmpty();
 }