public Object getActive(final String name) {
    final String internalName = ACTIVE_VARIABLE + name;
    if (containsKey(internalName, false)) {
      trackAccess(internalName);
      return internalGet(this, internalName, false);
    }

    final EclipseContext originatingContext = this;

    runAndTrack(
        new RunAndTrack() {
          public boolean changed(IEclipseContext context) {
            IEclipseContext activeContext = getActiveLeaf();
            Object result = activeContext.get(name);
            originatingContext.set(internalName, result);
            return true;
          }
        });
    trackAccess(internalName);
    return internalGet(this, internalName, true);
  }