// @flow /* eslint no-unused-vars: off */ type TraverseCallback = (type: string, path: NodePath) => void; type NodePathContext = { node: T, inList: boolean, shouldStop: boolean, parentPath?: NodePath, parentKey?: string }; type NodePathMatcher = (a: NodePath) => boolean; type NodeLocator = (NodePathMatcher) => Node | null; type NodePathOperations = { findParent: NodeLocator, replaceWith: (a: Node) => void, remove: () => void, insertBefore: (a: Node) => void, insertAfter: (a: Node) => void, stop: () => void }; type NodePath = NodePathContext & NodePathOperations;