diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp
index c696a27..4ec2bf4 100644
--- a/tools/libclang/CIndex.cpp
+++ b/tools/libclang/CIndex.cpp
@@ -14,6 +14,7 @@
 
 #include "CIndexer.h"
 #include "CXCursor.h"
+#include "CXType.h"
 #include "CXSourceLocation.h"
 #include "CIndexDiagnostic.h"
 
@@ -3056,6 +3057,22 @@
 } // end: extern "C"
 
 //===----------------------------------------------------------------------===//
+// Attribute introspection.
+//===----------------------------------------------------------------------===//
+
+extern "C" {
+CXType clang_getIBOutletCollectionType(CXCursor C) {
+  if (C.kind != CXCursor_IBOutletCollectionAttr)
+    return cxtype::MakeCXType(QualType(), cxcursor::getCursorASTUnit(C));
+  
+  IBOutletCollectionAttr *A =
+    cast<IBOutletCollectionAttr>(cxcursor::getCursorAttr(C));
+  
+  return cxtype::MakeCXType(A->getInterface(), cxcursor::getCursorASTUnit(C));  
+}
+} // end: extern "C"
+
+//===----------------------------------------------------------------------===//
 // CXString Operations.
 //===----------------------------------------------------------------------===//
 
diff --git a/tools/libclang/CMakeLists.txt b/tools/libclang/CMakeLists.txt
index e06eecf..dbb28ec 100644
--- a/tools/libclang/CMakeLists.txt
+++ b/tools/libclang/CMakeLists.txt
@@ -27,7 +27,7 @@
   CIndexUSRs.cpp
   CIndexer.cpp
   CXCursor.cpp
-  CXTypes.cpp
+  CXType.cpp
   ../../include/clang-c/Index.h
 )
 
diff --git a/tools/libclang/CXCursor.cpp b/tools/libclang/CXCursor.cpp
index be3623f..318fd51 100644
--- a/tools/libclang/CXCursor.cpp
+++ b/tools/libclang/CXCursor.cpp
@@ -358,6 +358,10 @@
   return (Stmt *)Cursor.data[1];
 }
 
+Attr *cxcursor::getCursorAttr(CXCursor Cursor) {
+  return (Attr *)Cursor.data[1];
+}
+
 ASTContext &cxcursor::getCursorContext(CXCursor Cursor) {
   return getCursorASTUnit(Cursor)->getASTContext();
 }
diff --git a/tools/libclang/CXCursor.h b/tools/libclang/CXCursor.h
index 1664f5a..5a8428a 100644
--- a/tools/libclang/CXCursor.h
+++ b/tools/libclang/CXCursor.h
@@ -98,6 +98,8 @@
 Decl *getCursorDecl(CXCursor Cursor);
 Expr *getCursorExpr(CXCursor Cursor);
 Stmt *getCursorStmt(CXCursor Cursor);
+Attr *getCursorAttr(CXCursor Cursor);
+
 ASTContext &getCursorContext(CXCursor Cursor);
 ASTUnit *getCursorASTUnit(CXCursor Cursor);
   
diff --git a/tools/libclang/CXTypes.cpp b/tools/libclang/CXType.cpp
similarity index 98%
rename from tools/libclang/CXTypes.cpp
rename to tools/libclang/CXType.cpp
index b49ef19..aa173ca 100644
--- a/tools/libclang/CXTypes.cpp
+++ b/tools/libclang/CXType.cpp
@@ -13,6 +13,7 @@
 
 #include "CIndexer.h"
 #include "CXCursor.h"
+#include "CXType.h"
 #include "clang/AST/Expr.h"
 #include "clang/AST/Type.h"
 #include "clang/AST/Decl.h"
@@ -85,12 +86,15 @@
 #undef TKCASE
 }
 
-static CXType MakeCXType(QualType T, ASTUnit *TU) {
+
+CXType cxtype::MakeCXType(QualType T, ASTUnit *TU) {
   CXTypeKind TK = GetTypeKind(T);
   CXType CT = { TK, { TK == CXType_Invalid ? 0 : T.getAsOpaquePtr(), TU }};
   return CT;
 }
 
+using cxtype::MakeCXType;
+
 static inline QualType GetQualType(CXType CT) {
   return QualType::getFromOpaquePtr(CT.data[0]);
 }
diff --git a/tools/libclang/CXType.h b/tools/libclang/CXType.h
new file mode 100644
index 0000000..94151ed
--- /dev/null
+++ b/tools/libclang/CXType.h
@@ -0,0 +1,29 @@
+//===- CXTypes.h - Routines for manipulating CXTypes ----------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines routines for manipulating CXCursors.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_CXTYPES_H
+#define LLVM_CLANG_CXTYPES_H
+
+#include "clang-c/Index.h"
+#include "clang/AST/Type.h"
+
+namespace clang {
+  
+class ASTUnit;
+  
+namespace cxtype {
+  
+CXType MakeCXType(QualType T, ASTUnit *TU);
+  
+}} // end namespace clang::cxtype
+#endif
diff --git a/tools/libclang/libclang.darwin.exports b/tools/libclang/libclang.darwin.exports
index f2087b7..6a36966 100644
--- a/tools/libclang/libclang.darwin.exports
+++ b/tools/libclang/libclang.darwin.exports
@@ -30,6 +30,7 @@
 _clang_equalTypes
 _clang_formatDiagnostic
 _clang_getCString
+_clang_getIBOutletCollectionType
 _clang_getCanonicalType
 _clang_getClangVersion
 _clang_getCompletionAvailability
diff --git a/tools/libclang/libclang.exports b/tools/libclang/libclang.exports
index c1658f6..8f1d626 100644
--- a/tools/libclang/libclang.exports
+++ b/tools/libclang/libclang.exports
@@ -14,8 +14,8 @@
 clang_createTranslationUnit
 clang_createTranslationUnitFromSourceFile
 clang_defaultCodeCompleteOptions
-clang_defaultEditingTranslationUnitOptions
 clang_defaultDiagnosticDisplayOptions
+clang_defaultEditingTranslationUnitOptions
 clang_defaultReparseOptions
 clang_defaultSaveOptions
 clang_disposeCodeCompleteResults
@@ -47,8 +47,8 @@
 clang_getCursorLinkage
 clang_getCursorLocation
 clang_getCursorReferenced
-clang_getCursorSpelling
 clang_getCursorResultType
+clang_getCursorSpelling
 clang_getCursorType
 clang_getCursorUSR
 clang_getDefinitionSpellingAndExtent
@@ -63,6 +63,7 @@
 clang_getFile
 clang_getFileName
 clang_getFileTime
+clang_getIBOutletCollectionType
 clang_getInclusions
 clang_getInstantiationLocation
 clang_getLocation
@@ -88,8 +89,8 @@
 clang_isDeclaration
 clang_isExpression
 clang_isInvalid
-clang_isPreprocessing
 clang_isPODType
+clang_isPreprocessing
 clang_isReference
 clang_isStatement
 clang_isTranslationUnit
