code: public @CheckForNull
      Obligation getObligationByType(ObjectType type) throws ClassNotFoundException {
          for (Iterator<Obligation> i = obligationIterator(); i.hasNext();) {
              Obligation obligation = i.next();
              if (Hierarchy.isSubtype(type, obligation.getType())) {
                  return obligation;
              }
          }
          return null;
      }
docs: Look up an Obligation by type. This returns the first Obligation that is
  a supertype of the type given (meaning that the given type could be an
  instance of the returned Obligation).
  
  @param type
  a type
  @return an Obligation that is a supertype of the given type, or null if
  there is no such Obligation
  @throws ClassNotFoundException