Clazz.load (null, "java.util.Date", null, function () {
java.util.Date = Date;
Clazz.decorateAsType (java.util.Date, "java.util.Date", null, [java.io.Serializable, Cloneable, Comparable]);

Clazz.defineMethod (java.util.Date, "clone", 
function () {
return new Date (this.getTime ());
});

Clazz.defineMethod (java.util.Date, "before", 
function (when) {
return this.getTime () < when.getTime ();
}, "java.util.Date");
Clazz.defineMethod (java.util.Date, "after", 
function (when) {
return this.getTime () > when.getTime ();
}, "java.util.Date");
Clazz.defineMethod (java.util.Date, "equals", 
function (obj) {
return Clazz.instanceOf (obj, java.util.Date) && this.getTime () == (obj).getTime ();
}, "Object");
Clazz.defineMethod (java.util.Date, "compareTo", 
function (anotherDate) {
var thisTime = this.getTime ();
var anotherTime = anotherDate.getTime ();
return (thisTime < anotherTime ? -1 : (thisTime == anotherTime ? 0 : 1));
}, "java.util.Date");
Clazz.defineMethod (java.util.Date, "compareTo", 
function (o) {
return this.compareTo (o);
}, "Object");
Clazz.defineMethod (java.util.Date, "hashCode", 
function () {
var ht = this.getTime ();
return parseInt (ht) ^ parseInt ((ht >> 32));
});
});