package layoutgraph

import (
	

	
)

func ( *Graph) () []*Node { return .fixedNodes() }
func ( Nodes) () []*Node  { return .fixedNodes() }
func ( Nodes) () bool   { return .hasFixedNode() }

func ( *Graph) () map[*Edge]bool { return .buildIsTreeEdgeMap() }
func ( *Graph) ( map[*Edge]bool) {
	.addIsolatedTreeEdgesToMap()
}

func ( *Graph) ( []*EdgeAbduction) {
	.applyEdgeAbductions()
}

func ( *Graph) () { .syncNested() }
func ( *Graph) () float64   { return .turnCostValue() }
func ( *Graph) () {
	.costMu.Lock()
	.turnCost /= 2
	.costMu.Unlock()
}
func ( *Graph) () { .resetTurnCost() }

func ( *Graph) ( *Node) *geo.Point {
	return .containerFixedOrigin()
}
func ( *Edge) (,  *Node) (geo.Point, geo.Point, bool, bool, geo.Orientation) {
	 := .facingTablePorts(, )
	return .from, .to, .hasFrom, .hasTo, .orientation
}
func ( *Edge) () bool                      { return .hasTableColumn() }
func ( *Edge) () bool                       { return .isAxisAligned() }
func ( *Edge) () int                          { return .segmentCount() }
func ( *Edge) () (*geo.Point, *geo.Point)     { return .bounds() }
func ( *Edge) () (geo.Point, geo.Point) { return .boundingBoxValues() }

func ( *Node) () bool      { return  != nil && .shapeType == classType }
func ( *Node) () []geo.Point { return .ports() }

func ( *Node) ( *Node) (float64, float64) {
	return .orthogonalDistanceTo()
}
func ( *Node) ( []*Node,  *Graph) []*Node {
	return .connectedNodes(, )
}
func ( *Node) (,  float64,  bool) bool {
	return .isPointPastFixedOrigin(, , )
}
func ( *Node) ( *Node,  *geo.Point) bool {
	return .doesOverlapAt(, )
}
func ( *Node) ( *Node) bool { return .doesOverlap() }
func ( *Node) ( *Node, ,  bool) bool {
	return .overlapsAlongDimension(, , )
}
func ( *Node) (, ,  bool,  *Node,  float64) bool {
	return .isVisibilityGraphCandidate(, , , , )
}
func ( *Node) (,  float64) { .moveNodeAbsWithChildren(, ) }
func ( *Node) (,  float64)  { .moveNodeWithChildren(, ) }
func ( *Node) ( bool) {
	.positionContainerChildren()
}
func ( *Node) ( *Node) *Node {
	return .nearestSharedAncestor()
}
func ( *Node) () int                { return .containerLevel() }
func ( *Node) ( *Node) bool { return .isDescendantOf() }
func ( *Node) () EntityID                  { return .entityID() }
func ( *Node) ( *Node,  bool) bool {
	return .isAdjacentTo(, )
}
func ( *Node) (,  *geo.Point) bool {
	return .passesThrough(, )
}
func ( *Node) ( *Node) bool { return .spillsOutOf() }
func ( *Node) ( *Node,  *geo.Point) int {
	return .deltaTo(, )
}
func ( *Node) () bool                   { return .isMajorityTarget() }
func ( *Node) ( *Graph,  Spacing) { .fitNodeToGraph(, ) }

func ( Nodes) () int { return .adjacentCount() }
func ( Nodes) () (*geo.Point, *geo.Point) {
	return .fixedBounds()
}

func ( *Cluster) () bool { return .isActive() }

func ( *Sequence) ( *Edge) *Node {
	return .findAbductedNodeByEdge()
}

func ( *Tree) () *Node { return .sentinelNode() }

func ( *Transaction) ( *Node) (,  float64) {
	 := .PriorGraphState.nodeGeometry[]
	return .width, .height
}

// ValidateSubgraphCombination validates node-owned topology across a set of
// aliased graph views after each distinct graph-owned map identity has passed
// Validate.
func ( context.Context,  []*Graph) error {
	return validateCombineNodeTopology(, )
}