I checked: the ordered/not-ordered is not a class level decision but a feature level decision. Each feature has a field "ordered". I am going to correct this and write some tests. Thank you for pointing it out!

I would consider the general case in which things are not unique: I would check the size to be the same then I will check that I find in the second array each value of the first as many times as it is present in the first. If the features are marked as unique that would means just one time.