code: private boolean isCompatibleClass(Class checkClass)
      {
          //
          // If the check class is equal to or a super-interface of the map class, then
          // they are compatible.
          //
          if (_mapClass.isAssignableFrom(checkClass))
              return true;
  
          //
          // If the check class is a property set declared by the map class or a super interface
          // of the map class, then they are compatible.
          //
          if (checkClass.isAnnotationPresent(PropertySet.class))
          {
              Class declaringClass = checkClass.getDeclaringClass();
  
              // External property sets are always compatible.
              // TODO: Could do a more extensive check..
              if (declaringClass == null)
                  return true;
  
              if (declaringClass.isAssignableFrom(_mapClass))
                  return true;
          }
  
          //
          // If the map class is a property set declared by the check class or a super interface
          // of the check class, then they are compatible.  This is the inverse of the last check,
          // and happens e.g. when a programatically instantiated control w/ an initial property
          // map needs to delegate to the control interface's property map.
          //
          if (_mapClass.isAnnotationPresent(PropertySet.class))
          {
              Class declaringClass = _mapClass.getDeclaringClass();
              if (declaringClass != null &&
                  declaringClass.isAssignableFrom(checkClass))
                  return true;
  
              // External property sets have no declaring class
              if (declaringClass == null)
              {
                  ExternalPropertySets eps = (ExternalPropertySets) checkClass.getAnnotation(ExternalPropertySets.class);
                  if (eps != null)
                  {
                      Class[] propSets = eps.value();
                      if (propSets != null)
                      {
                          for (Class ps : propSets)
                          {
                              if (_mapClass.equals(ps))
                                  return true;
                          }
                      }
                  }
              }
          }
  
          return false;
      }
docs: Checks to see if the provided class is a control or property set interface that is
  compatible with the local PropertyMap.