diff --git a/Scope.cpp b/Scope.cpp
index 1cee4f8..9223b78 100644
--- a/Scope.cpp
+++ b/Scope.cpp
@@ -16,6 +16,7 @@
 
 #include "Scope.h"
 
+#include "Annotation.h"
 #include "Interface.h"
 
 #include <android-base/logging.h>
@@ -103,6 +104,16 @@
     return false;
 }
 
+const std::vector<Annotation*>& Scope::annotations() const {
+    return mAnnotations;
+}
+
+void Scope::setAnnotations(std::vector<Annotation*>* annotations) {
+    CHECK(mAnnotations.empty());
+    CHECK(annotations != nullptr);
+    mAnnotations = *annotations;
+}
+
 status_t Scope::forEachType(std::function<status_t(Type *)> func) const {
     for (size_t i = 0; i < mTypes.size(); ++i) {
         status_t err = func(mTypes[i]);
diff --git a/Scope.h b/Scope.h
index 6a34a59..14f51f9 100644
--- a/Scope.h
+++ b/Scope.h
@@ -25,6 +25,7 @@
 
 namespace android {
 
+struct Annotation;
 struct ConstantExpression;
 struct Formatter;
 struct Interface;
@@ -49,6 +50,10 @@
 
     bool containsInterfaces() const;
 
+    const std::vector<Annotation*>& annotations() const;
+
+    void setAnnotations(std::vector<Annotation*>* annotations);
+
     status_t emitTypeDeclarations(Formatter &out) const override;
     status_t emitGlobalTypeDeclarations(Formatter &out) const override;
     status_t emitGlobalHwDeclarations(Formatter &out) const override;
@@ -72,6 +77,7 @@
 private:
     std::vector<NamedType *> mTypes;
     std::map<std::string, size_t> mTypeIndexByName;
+    std::vector<Annotation*> mAnnotations;
 
     status_t forEachType(std::function<status_t(Type *)> func) const;
 
diff --git a/Type.cpp b/Type.cpp
index 6512fd7..3d32180 100644
--- a/Type.cpp
+++ b/Type.cpp
@@ -16,7 +16,6 @@
 
 #include "Type.h"
 
-#include "Annotation.h"
 #include "ScalarType.h"
 
 #include <hidl-util/Formatter.h>
@@ -24,20 +23,10 @@
 
 namespace android {
 
-Type::Type()
-    : mAnnotations(nullptr) {
-}
+Type::Type() {}
 
 Type::~Type() {}
 
-void Type::setAnnotations(std::vector<Annotation *> *annotations) {
-    mAnnotations = annotations;
-}
-
-const std::vector<Annotation *> &Type::annotations() const {
-    return *mAnnotations;
-}
-
 bool Type::isScope() const {
     return false;
 }
diff --git a/Type.h b/Type.h
index f4769ba..a489e5c 100644
--- a/Type.h
+++ b/Type.h
@@ -28,7 +28,6 @@
 
 namespace android {
 
-struct Annotation;
 struct Formatter;
 struct ScalarType;
 struct FQName;
@@ -210,9 +209,6 @@
     virtual bool containsPointer() const;
     virtual void getAlignmentAndSize(size_t *align, size_t *size) const;
 
-    void setAnnotations(std::vector<Annotation *> *annotations);
-    const std::vector<Annotation *> &annotations() const;
-
     virtual void appendToExportedTypesVector(
             std::vector<const Type *> *exportedTypes) const;
 
@@ -250,8 +246,6 @@
             const std::string &name) const;
 
 private:
-    std::vector<Annotation *> *mAnnotations;
-
     DISALLOW_COPY_AND_ASSIGN(Type);
 };
 
diff --git a/hidl-gen_y.yy b/hidl-gen_y.yy
index b7b6176..603cddb 100644
--- a/hidl-gen_y.yy
+++ b/hidl-gen_y.yy
@@ -624,7 +624,8 @@
     : opt_annotations type_declaration_body
       {
           if (!$2->isTypeDef()) {
-              $2->setAnnotations($1);
+              CHECK($2->isScope());
+              static_cast<Scope*>($2)->setAnnotations($1);
           } else if (!$1->empty()) {
               // Since typedefs are always resolved to their target it makes
               // little sense to annotate them and have their annotations
@@ -937,7 +938,8 @@
 annotated_compound_declaration
     : opt_annotations compound_declaration
       {
-          $2->setAnnotations($1);
+          CHECK($2->isScope());
+          static_cast<Scope*>($2)->setAnnotations($1);
           $$ = $2;
       }
     ;
