From e58c0f0e9ce01d1853cd06e3f7b1c5cb2376a554 Mon Sep 17 00:00:00 2001
From: Gem Lamont <106068376+gem-neo4j@users.noreply.github.com>
Date: Mon, 22 Aug 2022 12:03:01 +0200
Subject: [PATCH] Undeprecate Traversal API ()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Gemma Lamont<gemma.lamont@neotechnology.com>
Co-authored-by: Nadja M眉ller <nadja.muller@neotechnology.com>
---
 community/graphdb-api/PublicApi.txt           | 184 ++++++++++++++++++
 .../neo4j/graphdb/PathExpanderBuilder.java    |   2 +
 .../java/org/neo4j/graphdb/PathExpanders.java |   2 +
 .../java/org/neo4j/graphdb/Transaction.java   |   4 -
 .../BidirectionalTraversalDescription.java    |   2 +
 .../traversal/BranchCollisionDetector.java    |   2 +
 .../traversal/BranchCollisionPolicies.java    |  14 +-
 .../traversal/BranchCollisionPolicy.java      |   7 +-
 .../traversal/BranchOrderingPolicies.java     |  24 ++-
 .../traversal/BranchOrderingPolicy.java       |   2 +
 .../graphdb/traversal/BranchSelector.java     |   3 +
 .../neo4j/graphdb/traversal/Evaluation.java   |   3 +
 .../neo4j/graphdb/traversal/Evaluator.java    |   2 +
 .../neo4j/graphdb/traversal/Evaluators.java   |   2 +
 .../graphdb/traversal/InitialBranchState.java |   2 +
 .../graphdb/traversal/PathEvaluator.java      |   2 +
 .../org/neo4j/graphdb/traversal/Paths.java    |   2 +
 .../neo4j/graphdb/traversal/SideSelector.java |   2 +
 .../traversal/SideSelectorPolicies.java       |  17 +-
 .../graphdb/traversal/SideSelectorPolicy.java |   3 +
 .../graphdb/traversal/TraversalBranch.java    |   2 +
 .../graphdb/traversal/TraversalContext.java   |   3 +
 .../traversal/TraversalDescription.java       |   2 +
 .../neo4j/graphdb/traversal/Traverser.java    |   2 +
 .../neo4j/graphdb/traversal/Uniqueness.java   |   3 +
 .../graphdb/traversal/UniquenessFactory.java  |   3 +
 .../graphdb/traversal/UniquenessFilter.java   |   3 +
 27 files changed, 287 insertions(+), 12 deletions(-)

diff --git a/community/graphdb-api/PublicApi.txt b/community/graphdb-api/PublicApi.txt
index 77dd6f9f8fc..6066e8d69a1 100644
--- a/community/graphdb-api/PublicApi.txt
+++ b/community/graphdb-api/PublicApi.txt
@@ -149,6 +149,29 @@ org.neo4j.graphdb.Path::toString() java.lang.String public abstract
 org.neo4j.graphdb.PathExpander<STATE extends java.lang.Object> public abstract interface
 org.neo4j.graphdb.PathExpander<STATE>::expand(org.neo4j.graphdb.Path, org.neo4j.graphdb.traversal.BranchState<STATE>) java.lang.Iterable<org.neo4j.graphdb.Relationship> public abstract
 org.neo4j.graphdb.PathExpander<STATE>::reverse() org.neo4j.graphdb.PathExpander<STATE> public abstract
+org.neo4j.graphdb.PathExpanderBuilder public class extends java.lang.Object
+org.neo4j.graphdb.PathExpanderBuilder::<STATE extends java.lang.Object>build() org.neo4j.graphdb.PathExpander<STATE> public
+org.neo4j.graphdb.PathExpanderBuilder::add(org.neo4j.graphdb.RelationshipType) org.neo4j.graphdb.PathExpanderBuilder public
+org.neo4j.graphdb.PathExpanderBuilder::add(org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.Direction) org.neo4j.graphdb.PathExpanderBuilder public
+org.neo4j.graphdb.PathExpanderBuilder::addNodeFilter(java.util.function.Predicate<? super org.neo4j.graphdb.Node>) org.neo4j.graphdb.PathExpanderBuilder public
+org.neo4j.graphdb.PathExpanderBuilder::addRelationshipFilter(java.util.function.Predicate<? super org.neo4j.graphdb.Relationship>) org.neo4j.graphdb.PathExpanderBuilder public
+org.neo4j.graphdb.PathExpanderBuilder::allTypes(org.neo4j.graphdb.Direction) org.neo4j.graphdb.PathExpanderBuilder public static
+org.neo4j.graphdb.PathExpanderBuilder::allTypesAndDirections() org.neo4j.graphdb.PathExpanderBuilder public static
+org.neo4j.graphdb.PathExpanderBuilder::empty() org.neo4j.graphdb.PathExpanderBuilder public static
+org.neo4j.graphdb.PathExpanderBuilder::emptyOrderedByType() org.neo4j.graphdb.PathExpanderBuilder public static
+org.neo4j.graphdb.PathExpanderBuilder::remove(org.neo4j.graphdb.RelationshipType) org.neo4j.graphdb.PathExpanderBuilder public
+org.neo4j.graphdb.PathExpanders public abstract class extends java.lang.Object
+org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>allTypesAndDirections() org.neo4j.graphdb.PathExpander<STATE> public static
+org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>forConstantDirectionWithTypes(org.neo4j.graphdb.RelationshipType...) org.neo4j.graphdb.PathExpander<STATE> public static
+org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>forDirection(org.neo4j.graphdb.Direction) org.neo4j.graphdb.PathExpander<STATE> public static
+org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>forType(org.neo4j.graphdb.RelationshipType) org.neo4j.graphdb.PathExpander<STATE> public static
+org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>forTypeAndDirection(org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.Direction) org.neo4j.graphdb.PathExpander<STATE> public static
+org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>forTypesAndDirections(org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.Direction, org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.Direction, java.lang.Object...) org.neo4j.graphdb.PathExpander<STATE> public static
+org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>printingWrapper(org.neo4j.graphdb.PathExpander<STATE>) org.neo4j.graphdb.PathExpander<STATE> public static
+org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>printingWrapper(org.neo4j.graphdb.PathExpander<STATE>, java.util.function.BiFunction<org.neo4j.graphdb.Path,org.neo4j.graphdb.traversal.BranchState,java.lang.Boolean>) org.neo4j.graphdb.PathExpander<STATE> public static
+org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>printingWrapper(org.neo4j.graphdb.PathExpander<STATE>, java.util.function.BiFunction<org.neo4j.graphdb.Path,org.neo4j.graphdb.traversal.BranchState,java.lang.Boolean>, org.neo4j.graphdb.traversal.Paths.PathDescriptor) org.neo4j.graphdb.PathExpander<STATE> public static
+org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>printingWrapper(org.neo4j.graphdb.PathExpander<STATE>, java.util.function.BiFunction<org.neo4j.graphdb.Path,org.neo4j.graphdb.traversal.BranchState,java.lang.Boolean>, org.neo4j.graphdb.traversal.Paths.PathDescriptor, java.io.PrintStream) org.neo4j.graphdb.PathExpander<STATE> public static
+org.neo4j.graphdb.PathExpanders::<STATE extends java.lang.Object>printingWrapper(org.neo4j.graphdb.PathExpander<STATE>, org.neo4j.graphdb.traversal.Paths.PathDescriptor) org.neo4j.graphdb.PathExpander<STATE> public static
 org.neo4j.graphdb.QueryExecutionException public class extends java.lang.RuntimeException
 org.neo4j.graphdb.QueryExecutionException::QueryExecutionException(java.lang.String, java.lang.Throwable, java.lang.String) void public
 org.neo4j.graphdb.QueryExecutionException::getStatusCode() java.lang.String public
@@ -439,3 +462,164 @@ org.neo4j.graphdb.spatial.Geometry::getGeometryType() java.lang.String public ab
 org.neo4j.graphdb.spatial.Point public abstract interface implements org.neo4j.graphdb.spatial.Geometry
 org.neo4j.graphdb.spatial.Point::getCoordinate() org.neo4j.graphdb.spatial.Coordinate public default
 org.neo4j.graphdb.spatial.Point::getGeometryType() java.lang.String public default
+org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract interface
+org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::collisionEvaluator(org.neo4j.graphdb.traversal.Evaluator) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract
+org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::collisionEvaluator(org.neo4j.graphdb.traversal.PathEvaluator) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract
+org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::collisionPolicy(org.neo4j.graphdb.traversal.BranchCollisionPolicy) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract
+org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::endSide(org.neo4j.graphdb.traversal.TraversalDescription) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract
+org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::mirroredSides(org.neo4j.graphdb.traversal.TraversalDescription) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract
+org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::sideSelector(org.neo4j.graphdb.traversal.SideSelectorPolicy, int) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract
+org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::startSide(org.neo4j.graphdb.traversal.TraversalDescription) org.neo4j.graphdb.traversal.BidirectionalTraversalDescription public abstract
+org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::traverse(java.lang.Iterable<org.neo4j.graphdb.Node>, java.lang.Iterable<org.neo4j.graphdb.Node>) org.neo4j.graphdb.traversal.Traverser public abstract
+org.neo4j.graphdb.traversal.BidirectionalTraversalDescription::traverse(org.neo4j.graphdb.Node, org.neo4j.graphdb.Node) org.neo4j.graphdb.traversal.Traverser public abstract
+org.neo4j.graphdb.traversal.BranchCollisionDetector public abstract interface
+org.neo4j.graphdb.traversal.BranchCollisionDetector::evaluate(org.neo4j.graphdb.traversal.TraversalBranch, org.neo4j.graphdb.Direction) java.lang.Iterable<org.neo4j.graphdb.Path> public abstract
+org.neo4j.graphdb.traversal.BranchCollisionPolicies public enum extends java.lang.Enum<org.neo4j.graphdb.traversal.BranchCollisionPolicies> implements org.neo4j.graphdb.traversal.BranchCollisionPolicy
+org.neo4j.graphdb.traversal.BranchCollisionPolicies::SHORTEST_PATH org.neo4j.graphdb.traversal.BranchCollisionPolicies public static final
+org.neo4j.graphdb.traversal.BranchCollisionPolicies::STANDARD org.neo4j.graphdb.traversal.BranchCollisionPolicies public static final
+org.neo4j.graphdb.traversal.BranchCollisionPolicies::valueOf(java.lang.String) org.neo4j.graphdb.traversal.BranchCollisionPolicies public static
+org.neo4j.graphdb.traversal.BranchCollisionPolicies::values() org.neo4j.graphdb.traversal.BranchCollisionPolicies[] public static
+org.neo4j.graphdb.traversal.BranchCollisionPolicy public abstract interface
+org.neo4j.graphdb.traversal.BranchCollisionPolicy::create(org.neo4j.graphdb.traversal.Evaluator, java.util.function.Predicate<org.neo4j.graphdb.Path>) org.neo4j.graphdb.traversal.BranchCollisionDetector public abstract
+org.neo4j.graphdb.traversal.BranchOrderingPolicies public enum extends java.lang.Enum<org.neo4j.graphdb.traversal.BranchOrderingPolicies> implements org.neo4j.graphdb.traversal.BranchOrderingPolicy
+org.neo4j.graphdb.traversal.BranchOrderingPolicies::POSTORDER_BREADTH_FIRST org.neo4j.graphdb.traversal.BranchOrderingPolicies public static final
+org.neo4j.graphdb.traversal.BranchOrderingPolicies::POSTORDER_DEPTH_FIRST org.neo4j.graphdb.traversal.BranchOrderingPolicies public static final
+org.neo4j.graphdb.traversal.BranchOrderingPolicies::PREORDER_BREADTH_FIRST org.neo4j.graphdb.traversal.BranchOrderingPolicies public static final
+org.neo4j.graphdb.traversal.BranchOrderingPolicies::PREORDER_DEPTH_FIRST org.neo4j.graphdb.traversal.BranchOrderingPolicies public static final
+org.neo4j.graphdb.traversal.BranchOrderingPolicies::valueOf(java.lang.String) org.neo4j.graphdb.traversal.BranchOrderingPolicies public static
+org.neo4j.graphdb.traversal.BranchOrderingPolicies::values() org.neo4j.graphdb.traversal.BranchOrderingPolicies[] public static
+org.neo4j.graphdb.traversal.BranchOrderingPolicy public abstract interface
+org.neo4j.graphdb.traversal.BranchOrderingPolicy::create(org.neo4j.graphdb.traversal.TraversalBranch, org.neo4j.graphdb.PathExpander) org.neo4j.graphdb.traversal.BranchSelector public abstract
+org.neo4j.graphdb.traversal.BranchSelector public abstract interface
+org.neo4j.graphdb.traversal.BranchSelector::next(org.neo4j.graphdb.traversal.TraversalContext) org.neo4j.graphdb.traversal.TraversalBranch public abstract
+org.neo4j.graphdb.traversal.Evaluation public final enum extends java.lang.Enum<org.neo4j.graphdb.traversal.Evaluation>
+org.neo4j.graphdb.traversal.Evaluation::EXCLUDE_AND_CONTINUE org.neo4j.graphdb.traversal.Evaluation public static final
+org.neo4j.graphdb.traversal.Evaluation::EXCLUDE_AND_PRUNE org.neo4j.graphdb.traversal.Evaluation public static final
+org.neo4j.graphdb.traversal.Evaluation::INCLUDE_AND_CONTINUE org.neo4j.graphdb.traversal.Evaluation public static final
+org.neo4j.graphdb.traversal.Evaluation::INCLUDE_AND_PRUNE org.neo4j.graphdb.traversal.Evaluation public static final
+org.neo4j.graphdb.traversal.Evaluation::continues() boolean public
+org.neo4j.graphdb.traversal.Evaluation::includes() boolean public
+org.neo4j.graphdb.traversal.Evaluation::of(boolean, boolean) org.neo4j.graphdb.traversal.Evaluation public static
+org.neo4j.graphdb.traversal.Evaluation::ofContinues(boolean) org.neo4j.graphdb.traversal.Evaluation public static
+org.neo4j.graphdb.traversal.Evaluation::ofIncludes(boolean) org.neo4j.graphdb.traversal.Evaluation public static
+org.neo4j.graphdb.traversal.Evaluation::valueOf(java.lang.String) org.neo4j.graphdb.traversal.Evaluation public static
+org.neo4j.graphdb.traversal.Evaluation::values() org.neo4j.graphdb.traversal.Evaluation[] public static
+org.neo4j.graphdb.traversal.Evaluator public abstract interface
+org.neo4j.graphdb.traversal.Evaluator.AsPathEvaluator<STATE extends java.lang.Object> public static class extends java.lang.Object implements org.neo4j.graphdb.traversal.PathEvaluator<STATE>
+org.neo4j.graphdb.traversal.Evaluator.AsPathEvaluator<STATE>::AsPathEvaluator(org.neo4j.graphdb.traversal.Evaluator) void public
+org.neo4j.graphdb.traversal.Evaluator.AsPathEvaluator<STATE>::evaluate(org.neo4j.graphdb.Path) org.neo4j.graphdb.traversal.Evaluation public
+org.neo4j.graphdb.traversal.Evaluator.AsPathEvaluator<STATE>::evaluate(org.neo4j.graphdb.Path, org.neo4j.graphdb.traversal.BranchState<STATE>) org.neo4j.graphdb.traversal.Evaluation public
+org.neo4j.graphdb.traversal.Evaluator::evaluate(org.neo4j.graphdb.Path) org.neo4j.graphdb.traversal.Evaluation public abstract
+org.neo4j.graphdb.traversal.Evaluators public abstract class extends java.lang.Object
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>all() org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>atDepth(int) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>endNodeIs(org.neo4j.graphdb.traversal.Evaluation, org.neo4j.graphdb.traversal.Evaluation, org.neo4j.graphdb.Node...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>endNodeIsAtDepth(int, org.neo4j.graphdb.Node...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>fromDepth(int) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>includeIfAcceptedByAny(org.neo4j.graphdb.traversal.Evaluator...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>includeIfAcceptedByAny(org.neo4j.graphdb.traversal.PathEvaluator...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>includeIfContainsAll(org.neo4j.graphdb.Node...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>includeWhereEndNodeIs(org.neo4j.graphdb.Node...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>includeWhereLastRelationshipTypeIs(org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.RelationshipType...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>includingDepths(int, int) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>lastRelationshipTypeIs(org.neo4j.graphdb.traversal.Evaluation, org.neo4j.graphdb.traversal.Evaluation, org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.RelationshipType...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>pruneWhereEndNodeIs(org.neo4j.graphdb.Node...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>pruneWhereLastRelationshipTypeIs(org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.RelationshipType...) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::<STATE extends java.lang.Object>toDepth(int) org.neo4j.graphdb.traversal.PathEvaluator<STATE> public static
+org.neo4j.graphdb.traversal.Evaluators::Evaluators() void public
+org.neo4j.graphdb.traversal.Evaluators::excludeStartPosition() org.neo4j.graphdb.traversal.PathEvaluator public static
+org.neo4j.graphdb.traversal.InitialBranchState.State<STATE extends java.lang.Object> public static class extends java.lang.Object implements org.neo4j.graphdb.traversal.InitialBranchState<STATE>
+org.neo4j.graphdb.traversal.InitialBranchState.State<STATE>::State(#STATE, #STATE) void public
+org.neo4j.graphdb.traversal.InitialBranchState.State<STATE>::initialState(org.neo4j.graphdb.Path) #STATE public
+org.neo4j.graphdb.traversal.InitialBranchState.State<STATE>::reverse() org.neo4j.graphdb.traversal.InitialBranchState<STATE> public
+org.neo4j.graphdb.traversal.InitialBranchState<STATE extends java.lang.Object> public abstract interface
+org.neo4j.graphdb.traversal.InitialBranchState<STATE>::DOUBLE_ZERO org.neo4j.graphdb.traversal.InitialBranchState<java.lang.Double> public static final
+org.neo4j.graphdb.traversal.InitialBranchState<STATE>::NO_STATE org.neo4j.graphdb.traversal.InitialBranchState<java.lang.Object> public static final
+org.neo4j.graphdb.traversal.InitialBranchState<STATE>::initialState(org.neo4j.graphdb.Path) #STATE public abstract
+org.neo4j.graphdb.traversal.InitialBranchState<STATE>::reverse() org.neo4j.graphdb.traversal.InitialBranchState<STATE> public default
+org.neo4j.graphdb.traversal.PathEvaluator.Adapter<STATE extends java.lang.Object> public abstract static class extends java.lang.Object implements org.neo4j.graphdb.traversal.PathEvaluator<STATE>
+org.neo4j.graphdb.traversal.PathEvaluator.Adapter<STATE>::Adapter() void public
+org.neo4j.graphdb.traversal.PathEvaluator.Adapter<STATE>::evaluate(org.neo4j.graphdb.Path) org.neo4j.graphdb.traversal.Evaluation public
+org.neo4j.graphdb.traversal.PathEvaluator<STATE extends java.lang.Object> public abstract interface implements org.neo4j.graphdb.traversal.Evaluator
+org.neo4j.graphdb.traversal.PathEvaluator<STATE>::evaluate(org.neo4j.graphdb.Path, org.neo4j.graphdb.traversal.BranchState<STATE>) org.neo4j.graphdb.traversal.Evaluation public abstract
+org.neo4j.graphdb.traversal.Paths public class extends java.lang.Object
+org.neo4j.graphdb.traversal.Paths.DefaultPathDescriptor<T extends org.neo4j.graphdb.Path> public static class extends java.lang.Object implements org.neo4j.graphdb.traversal.Paths.PathDescriptor<T>
+org.neo4j.graphdb.traversal.Paths.DefaultPathDescriptor<T>::DefaultPathDescriptor() void public
+org.neo4j.graphdb.traversal.Paths.DefaultPathDescriptor<T>::nodeRepresentation(org.neo4j.graphdb.Path, org.neo4j.graphdb.Node) java.lang.String public
+org.neo4j.graphdb.traversal.Paths.DefaultPathDescriptor<T>::relationshipRepresentation(org.neo4j.graphdb.Path, org.neo4j.graphdb.Node, org.neo4j.graphdb.Relationship) java.lang.String public
+org.neo4j.graphdb.traversal.Paths.PathDescriptor<T extends org.neo4j.graphdb.Path> public abstract static interface
+org.neo4j.graphdb.traversal.Paths.PathDescriptor<T>::nodeRepresentation(#T, org.neo4j.graphdb.Node) java.lang.String public abstract
+org.neo4j.graphdb.traversal.Paths.PathDescriptor<T>::relationshipRepresentation(#T, org.neo4j.graphdb.Node, org.neo4j.graphdb.Relationship) java.lang.String public abstract
+org.neo4j.graphdb.traversal.Paths::<T extends org.neo4j.graphdb.Path>descriptorForIdAndProperties(boolean, boolean, java.lang.String...) org.neo4j.graphdb.traversal.Paths.PathDescriptor<T> public static
+org.neo4j.graphdb.traversal.Paths::<T extends org.neo4j.graphdb.Path>pathToString(#T, org.neo4j.graphdb.traversal.Paths.PathDescriptor<T>) java.lang.String public static
+org.neo4j.graphdb.traversal.Paths::defaultPathToString(org.neo4j.graphdb.Path) java.lang.String public static
+org.neo4j.graphdb.traversal.Paths::defaultPathToStringWithNotInTransactionFallback(org.neo4j.graphdb.Path) java.lang.String public static
+org.neo4j.graphdb.traversal.Paths::simplePathToString(org.neo4j.graphdb.Path) java.lang.String public static
+org.neo4j.graphdb.traversal.Paths::simplePathToString(org.neo4j.graphdb.Path, java.lang.String) java.lang.String public static
+org.neo4j.graphdb.traversal.Paths::singleNodePath(org.neo4j.graphdb.Node) org.neo4j.graphdb.Path public static
+org.neo4j.graphdb.traversal.SideSelector public abstract interface implements org.neo4j.graphdb.traversal.BranchSelector
+org.neo4j.graphdb.traversal.SideSelector::currentSide() org.neo4j.graphdb.Direction public abstract
+org.neo4j.graphdb.traversal.SideSelectorPolicies public enum extends java.lang.Enum<org.neo4j.graphdb.traversal.SideSelectorPolicies> implements org.neo4j.graphdb.traversal.SideSelectorPolicy
+org.neo4j.graphdb.traversal.SideSelectorPolicies::ALTERNATING org.neo4j.graphdb.traversal.SideSelectorPolicies public static final
+org.neo4j.graphdb.traversal.SideSelectorPolicies::LEVEL org.neo4j.graphdb.traversal.SideSelectorPolicies public static final
+org.neo4j.graphdb.traversal.SideSelectorPolicies::LEVEL_STOP_DESCENT_ON_RESULT org.neo4j.graphdb.traversal.SideSelectorPolicies public static final
+org.neo4j.graphdb.traversal.SideSelectorPolicies::valueOf(java.lang.String) org.neo4j.graphdb.traversal.SideSelectorPolicies public static
+org.neo4j.graphdb.traversal.SideSelectorPolicies::values() org.neo4j.graphdb.traversal.SideSelectorPolicies[] public static
+org.neo4j.graphdb.traversal.SideSelectorPolicy public abstract interface
+org.neo4j.graphdb.traversal.SideSelectorPolicy::create(org.neo4j.graphdb.traversal.BranchSelector, org.neo4j.graphdb.traversal.BranchSelector, int) org.neo4j.graphdb.traversal.SideSelector public abstract
+org.neo4j.graphdb.traversal.TraversalBranch public abstract interface implements org.neo4j.graphdb.Path
+org.neo4j.graphdb.traversal.TraversalBranch::continues() boolean public abstract
+org.neo4j.graphdb.traversal.TraversalBranch::evaluation(org.neo4j.graphdb.traversal.Evaluation) void public abstract
+org.neo4j.graphdb.traversal.TraversalBranch::expanded() int public abstract
+org.neo4j.graphdb.traversal.TraversalBranch::includes() boolean public abstract
+org.neo4j.graphdb.traversal.TraversalBranch::initialize(org.neo4j.graphdb.PathExpander, org.neo4j.graphdb.traversal.TraversalContext) void public abstract
+org.neo4j.graphdb.traversal.TraversalBranch::next(org.neo4j.graphdb.PathExpander, org.neo4j.graphdb.traversal.TraversalContext) org.neo4j.graphdb.traversal.TraversalBranch public abstract
+org.neo4j.graphdb.traversal.TraversalBranch::parent() org.neo4j.graphdb.traversal.TraversalBranch public abstract
+org.neo4j.graphdb.traversal.TraversalBranch::prune() void public abstract
+org.neo4j.graphdb.traversal.TraversalBranch::state() java.lang.Object public abstract
+org.neo4j.graphdb.traversal.TraversalContext public abstract interface implements org.neo4j.graphdb.traversal.TraversalMetadata
+org.neo4j.graphdb.traversal.TraversalContext::<STATE extends java.lang.Object>evaluate(org.neo4j.graphdb.traversal.TraversalBranch, org.neo4j.graphdb.traversal.BranchState<STATE>) org.neo4j.graphdb.traversal.Evaluation public abstract
+org.neo4j.graphdb.traversal.TraversalContext::isUnique(org.neo4j.graphdb.traversal.TraversalBranch) boolean public abstract
+org.neo4j.graphdb.traversal.TraversalContext::isUniqueFirst(org.neo4j.graphdb.traversal.TraversalBranch) boolean public abstract
+org.neo4j.graphdb.traversal.TraversalContext::relationshipTraversed() void public abstract
+org.neo4j.graphdb.traversal.TraversalContext::unnecessaryRelationshipTraversed() void public abstract
+org.neo4j.graphdb.traversal.TraversalDescription public abstract interface
+org.neo4j.graphdb.traversal.TraversalDescription::<STATE extends java.lang.Object>expand(org.neo4j.graphdb.PathExpander<STATE>, org.neo4j.graphdb.traversal.InitialBranchState<STATE>) org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::breadthFirst() org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::depthFirst() org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::evaluator(org.neo4j.graphdb.traversal.Evaluator) org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::evaluator(org.neo4j.graphdb.traversal.PathEvaluator) org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::expand(org.neo4j.graphdb.PathExpander<?>) org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::order(org.neo4j.graphdb.traversal.BranchOrderingPolicy) org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::relationships(org.neo4j.graphdb.RelationshipType) org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::relationships(org.neo4j.graphdb.RelationshipType, org.neo4j.graphdb.Direction) org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::reverse() org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::sort(java.util.Comparator<? super org.neo4j.graphdb.Path>) org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::traverse(java.lang.Iterable<org.neo4j.graphdb.Node>) org.neo4j.graphdb.traversal.Traverser public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::traverse(org.neo4j.graphdb.Node) org.neo4j.graphdb.traversal.Traverser public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::traverse(org.neo4j.graphdb.Node...) org.neo4j.graphdb.traversal.Traverser public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::uniqueness(org.neo4j.graphdb.traversal.UniquenessFactory) org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.TraversalDescription::uniqueness(org.neo4j.graphdb.traversal.UniquenessFactory, java.lang.Object) org.neo4j.graphdb.traversal.TraversalDescription public abstract
+org.neo4j.graphdb.traversal.Traverser public abstract interface implements java.lang.Iterable<org.neo4j.graphdb.Path>
+org.neo4j.graphdb.traversal.Traverser::iterator() java.util.Iterator<org.neo4j.graphdb.Path> public abstract
+org.neo4j.graphdb.traversal.Traverser::metadata() org.neo4j.graphdb.traversal.TraversalMetadata public abstract
+org.neo4j.graphdb.traversal.Traverser::nodes() java.lang.Iterable<org.neo4j.graphdb.Node> public abstract
+org.neo4j.graphdb.traversal.Traverser::relationships() java.lang.Iterable<org.neo4j.graphdb.Relationship> public abstract
+org.neo4j.graphdb.traversal.Uniqueness public enum extends java.lang.Enum<org.neo4j.graphdb.traversal.Uniqueness> implements org.neo4j.graphdb.traversal.UniquenessFactory
+org.neo4j.graphdb.traversal.Uniqueness::NODE_GLOBAL org.neo4j.graphdb.traversal.Uniqueness public static final
+org.neo4j.graphdb.traversal.Uniqueness::NODE_LEVEL org.neo4j.graphdb.traversal.Uniqueness public static final
+org.neo4j.graphdb.traversal.Uniqueness::NODE_PATH org.neo4j.graphdb.traversal.Uniqueness public static final
+org.neo4j.graphdb.traversal.Uniqueness::NODE_RECENT org.neo4j.graphdb.traversal.Uniqueness public static final
+org.neo4j.graphdb.traversal.Uniqueness::NONE org.neo4j.graphdb.traversal.Uniqueness public static final
+org.neo4j.graphdb.traversal.Uniqueness::RELATIONSHIP_GLOBAL org.neo4j.graphdb.traversal.Uniqueness public static final
+org.neo4j.graphdb.traversal.Uniqueness::RELATIONSHIP_LEVEL org.neo4j.graphdb.traversal.Uniqueness public static final
+org.neo4j.graphdb.traversal.Uniqueness::RELATIONSHIP_PATH org.neo4j.graphdb.traversal.Uniqueness public static final
+org.neo4j.graphdb.traversal.Uniqueness::RELATIONSHIP_RECENT org.neo4j.graphdb.traversal.Uniqueness public static final
+org.neo4j.graphdb.traversal.Uniqueness::valueOf(java.lang.String) org.neo4j.graphdb.traversal.Uniqueness public static
+org.neo4j.graphdb.traversal.Uniqueness::values() org.neo4j.graphdb.traversal.Uniqueness[] public static
+org.neo4j.graphdb.traversal.UniquenessFactory public abstract interface
+org.neo4j.graphdb.traversal.UniquenessFactory::create(java.lang.Object) org.neo4j.graphdb.traversal.UniquenessFilter public abstract
+org.neo4j.graphdb.traversal.UniquenessFactory::eagerStartBranches() boolean public abstract
+org.neo4j.graphdb.traversal.UniquenessFilter public abstract interface
+org.neo4j.graphdb.traversal.UniquenessFilter::check(org.neo4j.graphdb.traversal.TraversalBranch) boolean public abstract
+org.neo4j.graphdb.traversal.UniquenessFilter::checkFirst(org.neo4j.graphdb.traversal.TraversalBranch) boolean public abstract
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanderBuilder.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanderBuilder.java
index c9ba391c0ed..14b5b2732ca 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanderBuilder.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanderBuilder.java
@@ -21,6 +21,7 @@ package org.neo4j.graphdb;
 
 import java.util.function.Predicate;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.impl.OrderedByTypeExpander;
 import org.neo4j.graphdb.impl.StandardExpander;
 
@@ -31,6 +32,7 @@ import static org.neo4j.graphdb.Direction.BOTH;
  * <p>
  * See {@link PathExpanders} for a catalog of common expanders.
  */
+@PublicApi
 public class PathExpanderBuilder
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanders.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanders.java
index c1bde8f2a1c..90d3c4e2b90 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanders.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/PathExpanders.java
@@ -22,6 +22,7 @@ package org.neo4j.graphdb;
 import java.io.PrintStream;
 import java.util.function.BiFunction;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.impl.StandardExpander;
 import org.neo4j.graphdb.traversal.BranchState;
 import org.neo4j.graphdb.traversal.Paths;
@@ -31,6 +32,7 @@ import org.neo4j.graphdb.traversal.Paths;
  * <p>
  * Use {@link PathExpanderBuilder} to build specialized {@link PathExpander}s.
  */
+@PublicApi
 public abstract class PathExpanders
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/Transaction.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/Transaction.java
index 27d17ca85c3..08a860153ae 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/Transaction.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/Transaction.java
@@ -121,18 +121,14 @@ public interface Transaction extends AutoCloseable
      * Factory method for bidirectional traversal descriptions.
      *
      * @return a new {@link BidirectionalTraversalDescription}
-     * @deprecated Not part of public API, can be removed at any moment
      */
-    @Deprecated
     BidirectionalTraversalDescription bidirectionalTraversalDescription();
 
     /**
      * Factory method for unidirectional traversal descriptions.
      *
-     * @deprecated Not part of public API, can be removed at any moment
      * @return a new {@link TraversalDescription}
      */
-    @Deprecated
     TraversalDescription traversalDescription();
 
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BidirectionalTraversalDescription.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BidirectionalTraversalDescription.java
index 7397d4fcbf1..9ee285db844 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BidirectionalTraversalDescription.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BidirectionalTraversalDescription.java
@@ -19,6 +19,7 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.Node;
 import org.neo4j.graphdb.Path;
 
@@ -37,6 +38,7 @@ import org.neo4j.graphdb.Path;
  *
  * @see TraversalDescription
  */
+@PublicApi
 public interface BidirectionalTraversalDescription
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionDetector.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionDetector.java
index 3d10cbc7d69..04d90003652 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionDetector.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionDetector.java
@@ -19,6 +19,7 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.Direction;
 import org.neo4j.graphdb.Path;
 
@@ -27,6 +28,7 @@ import org.neo4j.graphdb.Path;
  * they will probably meet somewhere in the middle and the full paths are formed.
  * This is where that detection and path generation takes place.
  */
+@PublicApi
 public interface BranchCollisionDetector
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicies.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicies.java
index 259c68aa09f..6e79ac00125 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicies.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicies.java
@@ -21,17 +21,21 @@ package org.neo4j.graphdb.traversal;
 
 import java.util.function.Predicate;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.Path;
 import org.neo4j.graphdb.impl.traversal.ShortestPathsBranchCollisionDetector;
 import org.neo4j.graphdb.impl.traversal.StandardBranchCollisionDetector;
 
 /**
- * A catalogue of convenient branch collision policies
- *
- * Copied from kernel package so that we can hide kernel from the public API.
+ * A catalogue of convenient branch collision policies, see {@link BranchCollisionPolicy}
  */
+@PublicApi
 public enum BranchCollisionPolicies implements BranchCollisionPolicy
 {
+    /**
+     * This branch collision policy includes all combined paths where the traversers collide, which means that the end node of the startSide and endSide
+     * traverser paths is identical and filters the resulting paths by applying the evaluator and path predicate.
+     */
     STANDARD
     {
         @Override
@@ -40,6 +44,10 @@ public enum BranchCollisionPolicies implements BranchCollisionPolicy
             return new StandardBranchCollisionDetector( evaluator, pathPredicate );
         }
     },
+    /**
+     * This branch collision policy includes only the shortest paths where the traversers collide, which means that the end node of the
+     * startSide and endSide traverser paths is identical and filters the resulting paths by applying the evaluator and path predicate.
+     */
     SHORTEST_PATH
     {
         @Override
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicy.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicy.java
index 77ae14d630b..9f36d35bc9a 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicy.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchCollisionPolicy.java
@@ -20,12 +20,17 @@
 package org.neo4j.graphdb.traversal;
 
 import java.util.function.Predicate;
+import org.neo4j.annotations.api.PublicApi;
 
 import org.neo4j.graphdb.Path;
 
 /**
- * Copied from kernel package so that we can hide kernel from the public API.
+ * A `BranchCollisionPolicy` defines when a collision is detected and accepted in a bidirectional traversal, see {@link BidirectionalTraversalDescription}.
+ *
+ * Given an evaluator and a path predicate, a `BranchCollisionPolicy` will create a `BranchCollisionDetector`, which will detect collisions between two
+ * traversers and use the `Evaluator` and `Path` predicate to decide whether the resulting path will be included in the result.
  */
+@PublicApi
 public interface BranchCollisionPolicy
 {
     BranchCollisionDetector create( Evaluator evaluator, Predicate<Path> pathPredicate );
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicies.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicies.java
index 461a171dead..ccaeb70f0f3 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicies.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicies.java
@@ -19,15 +19,20 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.PathExpander;
 
 /**
  * A catalog of convenient branch ordering policies.
- *
- * Copied from kernel package so that we can hide kernel from the public API.
  */
+@PublicApi
 public enum BranchOrderingPolicies implements BranchOrderingPolicy
 {
+    /**
+     * This `BranchOrderingPolicy` traverses depth first, visiting the current node, then recursively traversing
+     * depth first the current nodes left subtree, before the right subtree. The pre-order traversal is topologically sorted
+     * as parent nodes are processed before any of its child nodes are done.
+     */
     PREORDER_DEPTH_FIRST
     {
         @Override
@@ -36,6 +41,11 @@ public enum BranchOrderingPolicies implements BranchOrderingPolicy
             return new PreorderDepthFirstSelector( startSource, expander );
         }
     },
+
+    /**
+     * This `BranchOrderingPolicy` traverses depth first, recursively traversing down the current nodes left subtree,
+     * then the right subtree before visiting the current node.
+     */
     POSTORDER_DEPTH_FIRST
     {
         @Override
@@ -44,6 +54,11 @@ public enum BranchOrderingPolicies implements BranchOrderingPolicy
             return new PostorderDepthFirstSelector( startSource, expander );
         }
     },
+
+    /**
+     * This `BranchOrderingPolicy` traverses breadth first, visiting first the current node, then each of its children,
+     * before continuing to their children and so forth. Providing a level order search.
+     */
     PREORDER_BREADTH_FIRST
     {
         @Override
@@ -52,6 +67,11 @@ public enum BranchOrderingPolicies implements BranchOrderingPolicy
             return new PreorderBreadthFirstSelector( startSource, expander );
         }
     },
+
+    /**
+     * This `BranchOrderingPolicy` traverses breadth first, visiting all the leaf nodes of the current node before
+     * visiting their parents. Effectively searching nodes in a reversed level order search to {@link PREORDER_BREADTH_FIRST}
+     */
     POSTORDER_BREADTH_FIRST
     {
         @Override
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicy.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicy.java
index c317e7ce8fe..91ffa0c130a 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicy.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchOrderingPolicy.java
@@ -19,12 +19,14 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.PathExpander;
 
 /**
  * Creator of {@link BranchSelector} instances with a starting point to base
  * the first decision on.
  */
+@PublicApi
 public interface BranchOrderingPolicy
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchSelector.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchSelector.java
index 85cc39bd18e..454a3b34c99 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchSelector.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/BranchSelector.java
@@ -19,12 +19,15 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
+
 /**
  * Decides "where to go next" in a traversal. It keeps state itself, f.ex. its
  * own current position. Examples of implementations are "depth first" and
  * "breadth first". This is an interface to implement if you'd like to implement
  * f.ex. a "best first" selector based on your own criteria.
  */
+@PublicApi
 public interface BranchSelector
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluation.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluation.java
index 4d483fd290c..99bc1f001ff 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluation.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluation.java
@@ -19,6 +19,8 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
+
 /**
  * Outcome of {@link Evaluator#evaluate(org.neo4j.graphdb.Path)}. An evaluation
  * can tell the traversal whether or not to continue down that
@@ -27,6 +29,7 @@ package org.neo4j.graphdb.traversal;
  *
  * @see Evaluator
  */
+@PublicApi
 public enum Evaluation
 {
     INCLUDE_AND_CONTINUE( true, true ),
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluator.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluator.java
index 66ce064cb14..a9f6984e3a6 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluator.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluator.java
@@ -19,6 +19,7 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.Path;
 
 /**
@@ -32,6 +33,7 @@ import org.neo4j.graphdb.Path;
  * @see Evaluators
  * @see TraversalDescription#evaluator(Evaluator)
  */
+@PublicApi
 public interface Evaluator
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluators.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluators.java
index 7b498ae6e8d..b49ebb8b61d 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluators.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Evaluators.java
@@ -22,6 +22,7 @@ package org.neo4j.graphdb.traversal;
 import java.util.HashSet;
 import java.util.Set;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.Node;
 import org.neo4j.graphdb.Path;
 import org.neo4j.graphdb.Relationship;
@@ -36,6 +37,7 @@ import static org.neo4j.graphdb.traversal.Evaluation.INCLUDE_AND_CONTINUE;
  * @see Evaluator
  * @see TraversalDescription
  */
+@PublicApi
 public abstract class Evaluators
 {
     @SuppressWarnings( "rawtypes" )
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/InitialBranchState.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/InitialBranchState.java
index 21316794f54..ded2082961a 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/InitialBranchState.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/InitialBranchState.java
@@ -19,6 +19,7 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.Path;
 import org.neo4j.graphdb.PathExpander;
 
@@ -27,6 +28,7 @@ import org.neo4j.graphdb.PathExpander;
  *
  * @param <STATE> type of initial state to produce.
  */
+@PublicApi
 public interface InitialBranchState<STATE>
 {
     InitialBranchState<Object> NO_STATE = path -> null;
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/PathEvaluator.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/PathEvaluator.java
index a2b40e84e72..5c177dc96b1 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/PathEvaluator.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/PathEvaluator.java
@@ -19,6 +19,7 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.Path;
 
 /**
@@ -33,6 +34,7 @@ import org.neo4j.graphdb.Path;
  * @see Evaluators
  * @see TraversalDescription#evaluator(PathEvaluator)
  */
+@PublicApi
 public interface PathEvaluator<STATE> extends Evaluator
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Paths.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Paths.java
index 6ebc2eace30..b2c0bc64d52 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Paths.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Paths.java
@@ -23,6 +23,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.DatabaseShutdownException;
 import org.neo4j.graphdb.Direction;
 import org.neo4j.graphdb.Entity;
@@ -34,6 +35,7 @@ import org.neo4j.graphdb.Relationship;
 /**
  * Utilities for {@link org.neo4j.graphdb.Path} objects.
  */
+@PublicApi
 public class Paths
 {
 
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelector.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelector.java
index c7f3b5b974f..c8af10c1b60 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelector.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelector.java
@@ -19,6 +19,7 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.Direction;
 
 /**
@@ -26,6 +27,7 @@ import org.neo4j.graphdb.Direction;
  * the next step for. For example an alternating side selector will return alternating
  * start side and end side as long as each side hasn't reached it's end.
  */
+@PublicApi
 public interface SideSelector extends BranchSelector
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicies.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicies.java
index 0ad5b50332e..62a0d8d285f 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicies.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicies.java
@@ -19,13 +19,19 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
+
 /**
  * A catalogue of convenient side selector policies for use in bidirectional traversals.
- *
- * Copied from kernel package so that we can hide kernel from the public API.
  */
+@PublicApi
 public enum SideSelectorPolicies implements SideSelectorPolicy
 {
+    /**
+     * This `SideSelectorPolicy` stops traversal if the combined depth is larger than the given maximum depth. It
+     * will select branches for expansion that are on the same depth as the current branch before moving on to the
+     * next depth.
+     */
     LEVEL
     {
         @Override
@@ -34,6 +40,10 @@ public enum SideSelectorPolicies implements SideSelectorPolicy
             return new LevelSelectorOrderer( start, end, false, maxDepth );
         }
     },
+    /**
+     * This `SideSelectorPolicy` stops as soon as a result is found. It will select branches for expansion that are on
+     * the same depth as the current branch before moving on to the next depth.
+     */
     LEVEL_STOP_DESCENT_ON_RESULT
     {
         @Override
@@ -42,6 +52,9 @@ public enum SideSelectorPolicies implements SideSelectorPolicy
             return new LevelSelectorOrderer( start, end, true, maxDepth );
         }
     },
+    /**
+     * This `SideSelectorPolicy` alternates which branch continues the traversal.
+     */
     ALTERNATING
     {
         @Override
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicy.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicy.java
index 17ace0cd47b..596ad3dfc02 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicy.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/SideSelectorPolicy.java
@@ -19,9 +19,12 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
+
 /**
  * A factory for {@link SideSelector}s. Used during bidirectional traversals.
  */
+@PublicApi
 public interface SideSelectorPolicy
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalBranch.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalBranch.java
index 6cf6ba6e2b1..a47418f94fe 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalBranch.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalBranch.java
@@ -19,6 +19,7 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.Path;
 import org.neo4j.graphdb.PathExpander;
 
@@ -27,6 +28,7 @@ import org.neo4j.graphdb.PathExpander;
  * traversal context, for example parent and an iterator of relationships to go
  * next. It's a base to write a {@link BranchSelector} on top of.
  */
+@PublicApi
 public interface TraversalBranch extends Path
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalContext.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalContext.java
index fcdf6414c6a..227366ef4b7 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalContext.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalContext.java
@@ -19,10 +19,13 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
+
 /**
  * Provides a context for {@link TraversalBranch}es which they need to
  * move further and report their progress.
  */
+@PublicApi
 public interface TraversalContext extends TraversalMetadata
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalDescription.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalDescription.java
index fc8b49249ad..cfa036cd657 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalDescription.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/TraversalDescription.java
@@ -21,6 +21,7 @@ package org.neo4j.graphdb.traversal;
 
 import java.util.Comparator;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.Direction;
 import org.neo4j.graphdb.Node;
 import org.neo4j.graphdb.Path;
@@ -50,6 +51,7 @@ import org.neo4j.graphdb.RelationshipType;
  * {@link Traverser} that is returned is then used to step through the graph,
  * and return the positions that matches the rules.
  */
+@PublicApi
 public interface TraversalDescription
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Traverser.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Traverser.java
index 1a90be33447..604d7fccb1f 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Traverser.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Traverser.java
@@ -21,6 +21,7 @@ package org.neo4j.graphdb.traversal;
 
 import java.util.Iterator;
 
+import org.neo4j.annotations.api.PublicApi;
 import org.neo4j.graphdb.Node;
 import org.neo4j.graphdb.Path;
 import org.neo4j.graphdb.Relationship;
@@ -33,6 +34,7 @@ import org.neo4j.graphdb.ResourceIterator;
  * derived from, i.e {@link Node} or {@link Relationship}. Each step
  * can also be represented in one of those representations directly.
  */
+@PublicApi
 public interface Traverser extends Iterable<Path>
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Uniqueness.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Uniqueness.java
index 6cc59b14636..616bbd96d09 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Uniqueness.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/Uniqueness.java
@@ -19,9 +19,12 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
+
 /**
  * A catalog of convenient uniqueness factories.
  */
+@PublicApi
 public enum Uniqueness implements UniquenessFactory
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFactory.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFactory.java
index 347ee299d3b..ff6c2d2468c 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFactory.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFactory.java
@@ -19,11 +19,14 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
+
 /**
  * Factory for {@link UniquenessFilter} filters, it can supply the
  * created {@link UniquenessFilter} with an optional parameter which is
  * up to the filter itself to validate and make sense of.
  */
+@PublicApi
 public interface UniquenessFactory
 {
     /**
diff --git a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFilter.java b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFilter.java
index c5a3cd8d880..c4961a421e9 100644
--- a/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFilter.java
+++ b/community/graphdb-api/src/main/java/org/neo4j/graphdb/traversal/UniquenessFilter.java
@@ -19,10 +19,13 @@
  */
 package org.neo4j.graphdb.traversal;
 
+import org.neo4j.annotations.api.PublicApi;
+
 /**
  * Interface for filters preventing the traversal from visiting already seen parts of the graph. Implementations can
  * allow for different heuristics to use to determine what may be re-visited.
  */
+@PublicApi
 public interface UniquenessFilter
 {
     /**
-- 
GitLab