Recursively parse imported .hal files and perform global type lookup.
diff --git a/Coordinator.h b/Coordinator.h
new file mode 100644
index 0000000..54eaa7e
--- /dev/null
+++ b/Coordinator.h
@@ -0,0 +1,33 @@
+#ifndef COORDINATOR_H_
+
+#define COORDINATOR_H_
+
+#include <android-base/macros.h>
+#include <string>
+#include <utils/KeyedVector.h>
+
+namespace android {
+
+struct AST;
+struct FQName;
+struct Type;
+
+struct Coordinator {
+    Coordinator();
+    ~Coordinator();
+
+    AST *parse(const char *path);
+
+    Type *lookupType(const FQName &fqName) const;
+
+    static std::string GetPackagePath(const FQName &fqName);
+
+private:
+    KeyedVector<std::string, AST *> mCache;
+
+    DISALLOW_COPY_AND_ASSIGN(Coordinator);
+};
+
+}  // namespace android
+
+#endif  // COORDINATOR_H_