code: def resolve(self, piper, forgive=False):
          
          try:
              if piper in self:
                  resolved = piper
              else:
                  resolved = [p for p in self if id(p) == piper][0]
          except (TypeError, IndexError):
              resolved = False
          if resolved:
              self.log.debug('%s resolved a piper from %s' % (repr(self), piper))
          else:
              self.log.debug('%s could not resolve a piper from %s' % \
                            (repr(self), repr(piper)))
              if not forgive:
                  raise DaggerError('%s could not resolve a Piper from %s' % \
                                    (repr(self), repr(piper)))
              resolved = False
          return resolved
docs: Given a ``Piper`` instance or the ``id`` of the ``Piper``. Returns the
          ``Piper`` instance if it can be resolved else raises a ``DaggerError`` 
          or returns ``False`` depending on the "forgive" argument. 
          
          Arguments:
      
          - piper(``Piper`` or id(``Piper``)) a ``Piper`` instance or its id to be
            found in the ``Dagger``. 
          - forgive(``bool``) [default: ``False``] If "forgive" is ``False`` a 
            ``DaggerError`` is raised whenever a  ``Piper`` cannot be resolved in 
            the ``Dagger``. If "forgive" is ``True`` then ``False`` is returned.