code: public static <T> T exploreObject(Object rootObject, ObjectVisitor<T> visitor) {
      return exploreObject(rootObject, visitor, EnumSet.noneOf(Feature.class));
    }
docs: Explores an object graph (defined by a root object and whatever is
  reachable through it, following non-static fields) while using an
  {@link ObjectVisitor} to both control the traversal and return a value.
  
  <p>Equivalent to {@code exploreObject(rootObject, visitor,
  EnumSet.noneOf(Feature.class))}.
  
  @param <T> the type of the value obtained (after the traversal) by the
  ObjectVisitor
  @param rootObject an object to be recursively explored
  @param visitor a visitor that is notified for each explored path and
  decides whether to continue exploration of that path, and constructs a
  return value at the end of the exploration
  @return whatever value is returned by the visitor at the end of the
  traversal
  @see ObjectVisitor