diff --git a/Interface.cpp b/Interface.cpp
index 1adf92d..805d81c 100644
--- a/Interface.cpp
+++ b/Interface.cpp
@@ -68,8 +68,10 @@
 };
 
 Interface::Interface(const char* localName, const Location& location, Scope* parent,
-                     Interface* super)
-    : Scope(localName, location, parent), mSuperType(super), mIsJavaCompatibleInProgress(false) {}
+                     const Reference<Interface>& superType)
+    : Scope(localName, location, parent),
+      mSuperType(superType),
+      mIsJavaCompatibleInProgress(false) {}
 
 std::string Interface::typeName() const {
     return "interface " + localName();
@@ -461,7 +463,7 @@
 
     serial += userDefinedMethods().size();
 
-    const Interface *ancestor = mSuperType;
+    const Interface* ancestor = superType();
     while (ancestor != nullptr) {
         serial += ancestor->userDefinedMethods().size();
         ancestor = ancestor->superType();
@@ -510,8 +512,8 @@
     return true;
 }
 
-const Interface *Interface::superType() const {
-    return mSuperType;
+const Interface* Interface::superType() const {
+    return isIBase() ? nullptr : mSuperType;
 }
 
 std::vector<const Interface *> Interface::typeChain() const {
@@ -519,13 +521,13 @@
     const Interface *iface = this;
     while (iface != nullptr) {
         v.push_back(iface);
-        iface = iface->mSuperType;
+        iface = iface->superType();
     }
     return v;
 }
 
 std::vector<const Interface *> Interface::superTypeChain() const {
-    return superType()->typeChain(); // should work even if superType is nullptr
+    return isIBase() ? std::vector<const Interface*>() : superType()->typeChain();
 }
 
 bool Interface::isElidableType() const {
@@ -890,7 +892,7 @@
         return true;
     }
 
-    if (mSuperType != nullptr && !mSuperType->isJavaCompatible()) {
+    if (superType() != nullptr && !superType()->isJavaCompatible()) {
         mIsJavaCompatibleInProgress = false;
         return false;
     }
