code: @SuppressWarnings("unchecked")
      @Override
      public <T> T adapt(Class<T> adaptTarget) throws UnableToAdaptException {
          //intercept the adapt to parent entry, to return interpreted entry
          if (adaptTarget == Entry.class) {
              return (T) getInterpretedEntryInEnclosingContainer();
          } else if (adaptTarget == Notifier.class && structureHelper != null) {
              // We only adapt roots so if we aren't root then grab the root
              if (isRoot()) {
                  // Lazily create the notifier
                  if (this.notifier == null) {
                      final ArtifactContainer rootArtifactContainer;
                      if (structureHelperLocalRootDelegate == null) {
                          // We are a real root so we know that the delegate is the root
                          rootArtifactContainer = delegate;
                      } else {
                          //we are creating a notifier and are a fake root so use the fake delegate root
                          rootArtifactContainer = structureHelperLocalRootDelegate;
                      }
                      this.notifier = new InterpretedNotifier(this, rootArtifactContainer, structureHelper);
                  }
                  return (T) this.notifier;
              } else {
                  return (T) getRoot().adapt(Notifier.class);
              }
          } else if (adaptTarget != InterpretedContainer.class)
              //safety feature.. the above if prevents adapting interpreted into another interpreted.
              return super.adapt(adaptTarget);
          else {
              //adaptTarget was Interpreted, so we prevent the adapt.
              return null;
          }
      }
docs: {@inheritDoc}