docs: private static AbstractConfigValue peekPath(AbstractConfigObject self, Path path,
              ResolveContext context) throws NotPossibleToResolve {
          try {
              if (context != null) {
                  // walk down through the path resolving only things along that
                  // path, and then recursively call ourselves with no resolve
                  // context.
                  AbstractConfigValue partiallyResolved = context.restrict(path).resolve(self);
                  if (partiallyResolved instanceof AbstractConfigObject) {
                      return peekPath((AbstractConfigObject) partiallyResolved, path, null);
                  } else {
                      throw new BugOrBroken("resolved object to non-object " + self
                              + " to " + partiallyResolved);
                  }
              } else {
                  // with no resolver, we'll fail if anything along the path can't
                  // be looked at without resolving.
                  Path next = path.remainder();
                  AbstractConfigValue v = self.attemptPeekWithPartialResolve(path.first());
  
                  if (next == null) {
                      return v;
                  } else {
                      if (v instanceof AbstractConfigObject) {
                          return peekPath((AbstractConfigObject) v, next, null);
                      } else {
                          return null;
                      }
                  }
              }
          } catch (NotResolved e) {
              throw ConfigImpl.improveNotResolved(path, e);
          }
      }