package guangyin.internal.types;

import clojure.lang.IDeref;

public class ObjectWrapper implements IDeref {
    private Object wrapped;

    public ObjectWrapper(Object wrapped) {
        if (wrapped == null) {
            throw new IllegalArgumentException("Wrapped object cannot be null");
        }
        this.wrapped = wrapped;
    }

    public boolean equals(Object obj) {
        return this.wrapped.equals(obj);
    }

    public int hashCode() {
        return this.wrapped.hashCode();
    }

    public String toString() {
        return this.wrapped.toString();
    }

    public Object deref() {
        return this.wrapped;
    }
}

@@ -93,16 +93,28 @@
 plements
+ Comparable,
  IDeref 
@@ -581,32 +581,327 @@
 tring();%0A    %7D%0A%0A
+    @SuppressWarnings(%22unchecked%22)%0A    public int compareTo(Object o) %7B%0A        // Unwrap the wrapped object for comparison if needed%0A        if (o instanceof ObjectWrapper) %7B%0A            o = ((ObjectWrapper) o).deref();%0A        %7D%0A        return ((Comparable) this.wrapped).compareTo(o);%0A    %7D%0A%0A
     public Objec

Make ObjectWrapper implement Comparable interface.