private Object unwrapValue(Object value) {
        if (value == null)
            return null;
        
        if (value instanceof Wrapper) {
            return ((Wrapper) value).getHandle();
            
        } else if (value instanceof List) {
            throw new IllegalArgumentException("Can only insert a WrappedList.");
        } else if (value instanceof Map) {
            throw new IllegalArgumentException("Can only insert a WrappedCompound.");
            
        } else {
            return createNbtTag(getPrimitiveType(value), value);
        }
    }