Index: trunk/ab5.0/abdev/ab_common/include/Lexical/NamespaceSupporter.h
===================================================================
--- trunk/ab5.0/abdev/ab_common/include/Lexical/NamespaceSupporter.h	(revision 669)
+++ trunk/ab5.0/abdev/ab_common/include/Lexical/NamespaceSupporter.h	(revision 670)
@@ -25,5 +25,5 @@
 	}
 
-	const NamespaceScopesCollection &GetImportedNamespaces()
+	const NamespaceScopesCollection &GetImportedNamespaces() const
 	{
 		return importedNamespaces;
@@ -60,31 +60,5 @@
 	// entryName =   "ActiveBasic"
 	// この場合、living は entryName を包括している。
-	bool IsCoverd( const NamespaceScopes &namespaceScopes, const std::string &entryName ) const
-	{
-		if( namespaceScopes.IsEqual( entryName ) )
-		{
-			return true;
-		}
-
-		std::string thisStr = namespaceScopes.ToString();
-
-		NamespaceScopes tempLivingNamespaceScopes = livingNamespaceScopes;
-
-		while( tempLivingNamespaceScopes.size() )
-		{
-			std::string tempStr = tempLivingNamespaceScopes.ToString() + "." + entryName;
-			if( thisStr == tempStr )
-			{
-				return true;
-			}
-
-			tempLivingNamespaceScopes.pop_back();
-		}
-		return false;
-	}
-	bool IsCoverd( const NamespaceScopes &baseNamespaceScopes, const NamespaceScopes &entryNamespaceScopes ) const
-	{
-		return IsCoverd( baseNamespaceScopes, entryNamespaceScopes.ToString() );
-	}
+	bool IsCoverd( const NamespaceScopes &base, const NamespaceScopes &entry ) const;
 
 
Index: trunk/ab5.0/abdev/ab_common/src/Lexical/NamespaceSupporter.cpp
===================================================================
--- trunk/ab5.0/abdev/ab_common/src/Lexical/NamespaceSupporter.cpp	(revision 669)
+++ trunk/ab5.0/abdev/ab_common/src/Lexical/NamespaceSupporter.cpp	(revision 670)
@@ -20,4 +20,36 @@
 
 	return ImportsNamespace( namespaceScopes );
+}
+
+bool NamespaceSupporter::IsCoverd( const NamespaceScopes &base, const NamespaceScopes &entry ) const
+{
+	// まずはそのままでマッチングを試みる
+	if( base.IsEqual( entry ) )
+	{
+		return true;
+	}
+
+	// 現在の名前空間とのマッチングを試みる
+	NamespaceScopes tempCurrent = this->livingNamespaceScopes;
+	while( !tempCurrent.empty() )
+	{
+		if( base.IsEqual( tempCurrent + entry ) )
+		{
+			return true;
+		}
+
+		tempCurrent.pop_back();
+	}
+
+	// Importsされている名前空間とのマッチングを試みる
+	BOOST_FOREACH( const NamespaceScopes &importedNamespaceScopes, GetImportedNamespaces() )
+	{
+		if( base.IsEqual( importedNamespaceScopes + entry ) )
+		{
+			return true;
+		}
+	}
+
+	return false;
 }
 
