void TestAstConsumer::HandleTranslationUnit(clang::ASTContext &context) {

	clang::DeclContext::decl_iterator declIte =
	  context.getTranslationUnitDecl()->decls_begin(),
	  dEnd = context.getTranslationUnitDecl()->decls_end();

	for (; declIte != dEnd; ++declIte) {
		if (const clang::CXXRecordDecl* rD = dyn_cast<clang::CXXRecordDecl>(*declIte)) {

			for (clang::CXXRecordDecl::method_iterator mIte = rD->method_begin(),
			  mEnd = rD->method_end(); mIte != mEnd; ++mIte) {

				llvm::errs() << "method '" << (*mIte)->getNameAsString() << ":\n";
				llvm::errs() << "=> static: " << (*mIte)->isStatic() << "\n";
				llvm::errs() << "=> inline: " << (*mIte)->isInlineSpecified() << "\n";
				llvm::errs() << "=> virtual: " << (*mIte)->isVirtualAsWritten() << "\n";
				if ((*mIte)->isStatic()) continue;
				llvm::errs() << "=> const: " << (*mIte)->getThisType(context).isLocalConstQualified() << "\n";
				llvm::errs() << "=> volatile: " << (*mIte)->getThisType(context).isLocalVolatileQualified() << "\n";
			}
		}
	}
}
