@Override
    public String strip(String s) throws Exception {
        final int length = s.length();
        char[] chars = null;
        int off = 0;
        try {
            chars = (char[]) value.get(s);
            off = offset.getInt(s);
        } catch (IllegalArgumentException e) {
            throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        }
        int newLen = off;
        for (int j = off; j < off + length; j++) {
            final char ch = chars[j];
            if (ch >= ' ') {
                chars[newLen] = ch;
                newLen++;
            }
        }
        if (newLen - off != length) {
            // We changed the internal state of the string, so at least
            // be friendly enough to correct it.
            try {
                count.setInt(s, newLen - off);
                // Have to recompute hash later on
                hash.setInt(s, 0);
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        // Well we have to return something
        return s;
    }