Refactoring RT::Principal::HasRight

Jesse and mysterious others,

I designing AssetTracker I have found it necessary to subclass
RT::Principal, RT::User, and RT::Group. Much of this revolves
around the fact that RT::Principal::HasRight has bits of
code such as this:

if ( ( ref( $args{'Object'} ) eq 'RT::Ticket' ) && $args{'Object'}->Id ) {
    push( @{ $args{'EquivObjects'} }, $args{'Object'}->QueueObj );
}

and this:

push( @look_at_objects, "ACL.ObjectType = 'RT::System'" )
  unless $self->can('_IsOverrideGlobalACL')
  and $self->_IsOverrideGlobalACL( $args{Object} );

which does not work well if the Object is part of the RTx::AssetTracker::System.

What I would like to do is update HasRight to query the object
for these values instead of hard-coding them. This should help
simplify the AT design and future RTx modules.

How do you feel about this?

-Todd