public K findKey(Object value, boolean identity) {
        V[] valueTable = this.valueTable;
        if (value == null) {
            K[] keyTable = this.keyTable;
            for (int i = capacity + stashSize; i-- > 0;) {
                if (keyTable[i] != null && valueTable[i] == null) {
                    return keyTable[i];
                }
            }
        } else if (identity) {
            for (int i = capacity + stashSize; i-- > 0;) {
                if (valueTable[i] == value) {
                    return keyTable[i];
                }
            }
        } else {
            for (int i = capacity + stashSize; i-- > 0;) {
                if (value.equals(valueTable[i])) {
                    return keyTable[i];
                }
            }
        }
        return null;
    }