The ISO 19107:2008 draft defines a new CoordinateSystem class which act as a proxy to the ISO 19111 CRS objects, adding information about whatever the CS is left-handed or right-handed, and how to rearrange the ordinate values in order to get a right-handed system.
We could omit this new interfaces in GeoAPI, and instead:
Move the Handed code list to the org.opengis.referencing.cs package
* Move the getOrientation() method to the org.opengis.referencing.cs.CoordinateSystem interface.
* Define EuclideanSpace and CompoundCoordinateSystem as sub-interfaces of org.opengis.referencing.cs.CoordinateSystem in the org.opengis.referencing.cs package. Note that CompoundCS exists in Geotoolkit.org, so it look like that implementors have a practical need for this interface.
* Decide whatever we keep Permutation or require implementors to always use the natural CS order. In the later case, implementors can use view that permute the ordinate values under the hood before to delegates to the underlying mathematical libraries.