| ☞ |   Program
    Repair Shop ![]()  | 
    48 | 
        sub get_observers {
          my ( $item ) = @_;
          my $class = ref($item) || $item;
          my @observers = ($class->_obs_get_observers_scoped,
                           $class->_obs_get_parent_observers);
          push @observers, $item->_obs_get_observers_scoped
            if ref $item;
          return @observers;
        }
This is one of many examples that's simplified by ->direct_observers
The idea here: One call for direct observers, one for class observers
        sub get_observers {
          my $self = shift;
          my @o = $self->_class_observers;
          push @o, @{$self->direct_observers} if ref $self;
          return _uniq(@o);
        }
I think this is simpler
10 lines became 5
| ☞ | ![]()  | 
    ☞ |