public final Object pop()
    {
        if (sealed) throw onSeledMutation();
        int N = size;
        --N;
        Object top;
        switch (N) {
            case -1: throw onEmptyStackTopRead();
            case 0: top = f0; f0 = null; break;
            case 1: top = f1; f1 = null; break;
            case 2: top = f2; f2 = null; break;
            case 3: top = f3; f3 = null; break;
            case 4: top = f4; f4 = null; break;
            default:
                top = data[N - FIELDS_STORE_SIZE];
                data[N - FIELDS_STORE_SIZE] = null;
        }
        size = N;
        return top;
    }