private Value put(int sym, Value value) {
        if (used == capacity) {
            rehash();
        }
        int prev = (capacity + (sym % hashSize()));
        int entry = hash[prev];
        while (entry != 0) {
            final int idx = hash[entry];
            if (hash[idx] == sym) { // found entry
                return NixValue.invalid();
            }
            prev = entry + 1;
            entry = hash[prev];
        }
        final int insertIdx = (capacity + hashSize() + (used << 1));
        hash[prev] = insertIdx;
        hash[insertIdx] = used;
        hash[used] = sym;
        values[used++] = value;
        return value;
    }
A Value holding a slime "Object", a dynamic collection of named
value fields.  Fields can be inspected or traversed using the
{@link Inspector} interface, and you can add new fields by using the
various "set" methods in the @ref Cursor interface.

@author havardpe
vespajlib/src/main/java/com/yahoo/slime/ObjectValue.java