public static extern int ucol_previous(CollationElementIterator.Handle handle, out ErrorCode status);
 public static extern void ucol_reset(CollationElementIterator.Handle handle);
 public static extern int ucol_getOffset(CollationElementIterator.Handle handle);
 public static extern int ucol_getMaxExpansion(CollationElementIterator.Handle elems, int order);
 public static extern void ucol_setText(CollationElementIterator.Handle handle,
                                        [MarshalAs(UnmanagedType.LPWStr)] string text,
                                        int textLength,
                                        out ErrorCode status);
 public static extern void ucol_setOffset(CollationElementIterator.Handle handle,
                                          int offset,
                                          out ErrorCode status);
        internal static CollationElementIterator Create(RuleBasedCollator.Handle elems, string str)
        {
            ErrorCode status;
            var cei = new CollationElementIterator
            {
                _handle =
                    NativeMethods.ucol_openElements(elems,
                                                    str,
                                                    str.Length,
                                                    out status)
            };
            status.ThrowIfError();

            return cei;
        }