Array *Array::SortArrayElementsByKey() {
    Array *newARRAY = new(AllocArray(PIF))Array(PIF);

#ifdef STDMAP_KEYS
    if (Keys) {
        KeyMap::iterator end = Keys->end();
        AnsiString key;
        ARRAY_COUNT_TYPE i = 0;
        for (KeyMap::iterator iter = Keys->begin(); iter != end; ++iter) {
            newARRAY->Add(Get(iter->second));
            key = (char *)iter->first;
            newARRAY->AddKey(&key, i++);
        }
    }
#else
    CleanIndex(true);
    for (ARRAY_COUNT_TYPE i = 0; i < KeysCount; i++) {
        AnsiString key = Keys [i].KEY;
        newARRAY->Add(Get(Keys [i].index));
        newARRAY->AddKey(&key, i);
    }
#endif

    return newARRAY;
}