bool PropertyBag::GetNext(
   gubi::IProperty** ppProperty )
{
   bool bReturn = false;

   if (ppProperty != NULL && m_mapIterator != m_mapProperty.end())
   {
      IProperty* pProperty = m_mapIterator->second;

      if (pProperty != NULL)
      {
         pProperty->AddReference();
      }

      *ppProperty = pProperty;
      bReturn     = true;

      m_mapIterator++;
   }

   return bReturn;
}
bool PropertyBag::Find(
   const gubi::Identifier& ePropertyId,
   gubi::IProperty** ppProperty )
{
   bool bReturn              = false;
   property_map::iterator it = m_mapProperty.find(ePropertyId);

   if (ppProperty != NULL && it != m_mapProperty.end())
   {
      IProperty* pProperty = it->second;

      if (pProperty != NULL)
      {
         pProperty->AddReference();
      }

      *ppProperty = pProperty;
      bReturn     = true;
   }

   return bReturn;
}