In this paper, we formalize design patterns, commonly used in the self-stabilizing area, to obtain general statements regarding both correctness and time complexity guarantees. Precisely, we study a general class of algorithms designed for networks endowed with a sense of direction describing a spanning forest (e.g., a directed tree or a network where a directed spanning tree is available) whose characterization is a simple (i.e., quasi-syntactic) condition. We show that any algorithm of this class is (1) silent and self-stabilizing under the distributed unfair daemon, and (2) has a stabilization time which is polynomial in moves and asymptotically optimal in rounds. To illustrate the versatility of our method, we review several existing works where our results apply.After the seminal work of Dijkstra, many self-stabilizing algorithms have been proposed to solve various tasks such as spanning tree constructions [2], token circulations [3], clock synchronization [4], propagation of information with feedbacks [5]. Those works consider a large taxonomy of topologies: rings [6,7], (directed) trees [5,8,9], planar graphs [10,11], arbitrary connected graphs [12,13], etc. Among those topologies, the class of directed (in-) trees (i.e., trees where one process is distinguished as the root and edges are oriented toward the root) is of particular interest. Indeed, such topologies often appear, at an intermediate level, in self-stabilizing composite algorithms. Composition is a popular way to design selfstabilizing algorithms [14] since it allows to simplify both the design and proofs. Numerous self-stabilizing algorithms, e.g., [15,2,16], are actually made as a composition of a spanning directed treelike (e.g. tree or forest) construction and some other algorithms specifically designed for directed tree/forest topologies. Notice that, even though not mandatory, most of these constructions achieve an additional property called silence [17]: a silent self-stabilizing algorithm converges within finite time to a configuration from which the values of the communication registers used by the algorithm remain fixed. Silence is a desirable property. Indeed, as noted in [17], the silent property usually implies more simplicity in the algorithm design, and so allows to write simpler proofs; moreover, a silent algorithm may utilize less communication operations and communication bandwidth.In this paper, we consider the locally shared memory model with composite atomicity introduced by Dijkstra [1], which is the most commonly used model in self-stabilization. In this model, executions proceed in (atomic) steps and the asynchrony of the system is captured by the notion of daemon. The weakest (i.e., the most general) daemon is the distributed unfair daemon. Hence, solutions stabilizing under such an assumption are highly desirable, because they work under any other daemon assumption.The daemon assumption and time complexity are closely related. The stabilization time, i.e., the maximum time to reach a legitimate configuration starting f...