diff --git a/aidl_language.cpp b/aidl_language.cpp
index 728eb7f..33f6a2b 100644
--- a/aidl_language.cpp
+++ b/aidl_language.cpp
@@ -458,10 +458,15 @@
   if (result.is_resolved) {
     fully_qualified_name_ = result.canonical_name;
     split_name_ = Split(fully_qualified_name_, ".");
+    defined_type_ = result.defined_type;
   }
   return result.is_resolved;
 }
 
+const AidlDefinedType* AidlTypeSpecifier::GetDefinedType() const {
+  return defined_type_;
+}
+
 std::set<AidlAnnotation::Type> AidlTypeSpecifier::GetSupportedAnnotations() const {
   // kHide and kUnsupportedAppUsage are both method return annotations
   // which we don't distinguish from other type specifiers.
diff --git a/aidl_language.h b/aidl_language.h
index 7bc249b..53616b7 100644
--- a/aidl_language.h
+++ b/aidl_language.h
@@ -314,6 +314,8 @@
   bool LanguageSpecificCheckValid(const AidlTypenames& typenames, Options::Language lang) const;
   const AidlNode& AsAidlNode() const override { return *this; }
 
+  const AidlDefinedType* GetDefinedType() const;
+
  private:
   AidlTypeSpecifier(const AidlTypeSpecifier&) = default;
 
@@ -322,6 +324,7 @@
   bool is_array_;
   string comments_;
   vector<string> split_name_;
+  const AidlDefinedType* defined_type_;  // set when Resolve() for defined types
   mutable shared_ptr<AidlTypeSpecifier> array_base_;
 };
 
diff --git a/aidl_typenames.cpp b/aidl_typenames.cpp
index d431056..cd0a36d 100644
--- a/aidl_typenames.cpp
+++ b/aidl_typenames.cpp
@@ -215,15 +215,15 @@
   if (IsBuiltinTypename(type_name)) {
     auto found = kJavaLikeTypeToAidlType.find(type_name);
     if (found != kJavaLikeTypeToAidlType.end()) {
-      return {found->second, true};
+      return {found->second, true, nullptr};
     }
-    return {type_name, true};
+    return {type_name, true, nullptr};
   }
   const AidlDefinedType* defined_type = TryGetDefinedType(type_name);
   if (defined_type != nullptr) {
-    return {defined_type->GetCanonicalName(), true};
+    return {defined_type->GetCanonicalName(), true, defined_type};
   } else {
-    return {type_name, false};
+    return {type_name, false, nullptr};
   }
 }
 
diff --git a/aidl_typenames.h b/aidl_typenames.h
index 43ac82f..bd85530 100644
--- a/aidl_typenames.h
+++ b/aidl_typenames.h
@@ -69,6 +69,7 @@
   struct ResolvedTypename {
     std::string canonical_name;
     bool is_resolved;
+    const AidlDefinedType* defined_type;
   };
   ResolvedTypename ResolveTypename(const string& type_name) const;
   pair<bool, string> CanBeOutParameter(const AidlTypeSpecifier& type) const;
@@ -97,7 +98,7 @@
     const bool from_preprocessed;
   };
   DefinedImplResult TryGetDefinedTypeImpl(const string& type_name) const;
-  map<string, const AidlDefinedType*> defined_types_;
+  map<string, AidlDefinedType*> defined_types_;
   map<string, unique_ptr<AidlDefinedType>> preprocessed_types_;
   std::vector<std::unique_ptr<AidlDocument>> documents_;
 };
