def isIDotData(x):
    """Test if the given object is an IDotData.
    We could test if it inherits from IDotDataRoot, but we also want to
    allow unrelated objects to implement the iDotData interface.
    If their class has an isIDotData attribute, we assume the object
    is an IDotData.  If a class inherits from IDotDataRoot then it automatically
    inherits this attribute."""
    return hasattr( type( x ), 'isIDotData' )