diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/types/AUnionType.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/types/AUnionType.java
index 4ba5a4c..1e70f15 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/types/AUnionType.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/types/AUnionType.java
@@ -27,7 +27,7 @@
     }
 
     public boolean isNullableType() {
-    	return unionList.size() == 2 && unionList.get(0).getTypeTag().equals(BuiltinType.ANULL.getTypeTag());
+    	return unionList.size() == 2 && unionList.get(0).equals(BuiltinType.ANULL);
     }
 
     @Override
diff --git a/asterix-om/src/main/java/edu/uci/ics/asterix/om/types/BuiltinType.java b/asterix-om/src/main/java/edu/uci/ics/asterix/om/types/BuiltinType.java
index 3af6e6f..0ec3b21 100644
--- a/asterix-om/src/main/java/edu/uci/ics/asterix/om/types/BuiltinType.java
+++ b/asterix-om/src/main/java/edu/uci/ics/asterix/om/types/BuiltinType.java
@@ -515,15 +515,26 @@
         return getTypeTag().toString();
     }
 
-    @Override
-    public boolean deepEqual(IAObject obj) {
-        return obj == this;
-    }
+	@Override
+	public boolean deepEqual(IAObject obj) {
+		if (obj == this) {
+			return true;
+		}
+		if (!(obj instanceof BuiltinType)) {
+			return false;
+		}
+		return ((BuiltinType) obj).getTypeTag().equals(getTypeTag());
+	}
 
     @Override
     public boolean equals(Object object) {
         return this.deepEqual((IAObject) object);
     }
+    
+    @Override
+    public int hashCode() {
+    	return getTypeTag().hashCode();
+    }
 
     @Override
     public int hash() {
