title: Determine where Moose attributes and methods were inherited from?
body: <p>I often work on a huge, not-very-well-documented, object-oriented Perl repo at my place of employment.  While maintaining the code, I frequently need to trace things that are inherited from other classes so that I can understand what they're doing.  For example, I need to figure out what <code>$self-&gt;mystery</code> is and what it's doing:</p>
  
  <pre><code>package Foo::Bar;
  use Moose;
  use Method::Signatures;
  use Foo::Bar::Element;
  use Foo::Bar::Function;
  use base qw (Baz::Foo::Bar);
  
  method do_stuff ($some_arg) {
      # mystery is not defined in Foo::Bar
      my $mystery = $self-&gt;mystery;
      $mystery-&gt;another_mystery($some_arg);
  }
  </code></pre>
  
  <p>I usually find myself spending way too much time tracing through parent classes.  So my question is, is there an easy way for me to figure out where <code>$self-&gt;mystery</code> comes from? Or in other words, I need to find where mystery is declared. </p>
  
  <p>And by "easy way", I don't mean using <code>ack</code> or <code>grep</code> to string search through files.  I'm hoping there's some sort of debugging module I can install and use which could help give me some insight.</p>
  
  <p>Thank you.</p>