This is an automated email from the ASF dual-hosted git repository.

He-Pin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pekko.git


The following commit(s) were added to refs/heads/main by this push:
     new 6bddca4f9c docs: fix broken links, anchors and snippet labels (#3587)
6bddca4f9c is described below

commit 6bddca4f9cf6ef1c014f8ab930b2de695474fc32
Author: PJ Fanning <[email protected]>
AuthorDate: Fri Oct 9 05:58:08 2026 +0100

    docs: fix broken links, anchors and snippet labels (#3587)
    
    * docs: fix broken links, anchors and snippet labels
    
    Motivation:
    A review of the docs found links that point to the wrong class, file or
    anchor, API doc anchors that do not match the actual signatures,
    snippet labels that name the wrong file, and invalid directives
    (@api, @apiref, @apiDoc).
    
    Modification:
    - actors.md: classic ReceiveBuilder target, actor-hotswap and
      actor-reply anchors, fully qualified Future anchors, Timer snippet
      labels
    - cluster-client.md: AbstractActor#getSender() target, sample link text
    - event-bus.md: EventBus.scala github path, javadoc for LookupEventBus
    - futures.md: scala.concurrent.Future; io-tcp.md: jdocs/io/japi path
    - coordination.md, general/jmm.md: snippet labels
    - serialization.md: stray quote in URL
    - additional/rolling-updates.md: released pekko-management extref,
      @ref to the SBR strategies section
    - typed/: Receptionist.Listing target, supervise anchor, snippet and
      tab labels, thenRun and StatusReply.ack anchors, @apidoc instead of
      @api/@apiref/@apiDoc
    - stream/: async, pull and SourceRef targets; operator page anchors and
      labels for Sink.never/source, flattenOptional, PubSub.sink/source,
      fromOutputStream, alsoToAll, interleaveAll, concatLazy, dropRepeated,
      groupedAdjacentByWeighted, mapAsyncPartitioned(Unordered),
      mapWithResource, materializeIntoSource, monitor, onErrorContinue,
      prepend/prependLazy, preMaterialize, takeUntil, watchTermination,
      mapConcat/statefulMapConcat, ActorSink.actorRef
    
    Result:
    Links and API doc anchors point to existing targets and labels match
    the referenced files.
    
    Tests:
    - Not run - docs only
    
    References:
    None - found during a review of the docs
    
    * docs: remove duplicated note on the prepend operator page
    
    Motivation:
    prepend.md has the same note twice; the first copy is indented, so it
    renders as a code block. #3588 skipped it because this PR changes a
    line inside it.
    
    Modification:
    Remove the indented copy and keep the second note.
    
    Result:
    The note appears once and renders as a note.
    
    Tests:
    - Not run - docs only
    
    References:
    Refs #3588
---
 docs/src/main/paradox/actors.md                            | 14 +++++++-------
 docs/src/main/paradox/additional/rolling-updates.md        |  4 ++--
 docs/src/main/paradox/cluster-client.md                    |  8 ++++----
 docs/src/main/paradox/coordination.md                      |  2 +-
 docs/src/main/paradox/event-bus.md                         |  4 ++--
 docs/src/main/paradox/futures.md                           |  2 +-
 docs/src/main/paradox/general/jmm.md                       |  2 +-
 docs/src/main/paradox/io-tcp.md                            |  2 +-
 docs/src/main/paradox/serialization.md                     |  2 +-
 .../stream/operators/ActorSink/actorRefWithBackpressure.md |  2 +-
 .../main/paradox/stream/operators/Flow/flattenOptional.md  |  2 +-
 docs/src/main/paradox/stream/operators/PubSub/sink.md      |  2 +-
 docs/src/main/paradox/stream/operators/PubSub/source.md    |  2 +-
 docs/src/main/paradox/stream/operators/Sink/never.md       |  2 +-
 docs/src/main/paradox/stream/operators/Sink/source.md      |  2 +-
 .../paradox/stream/operators/Source-or-Flow/alsoToAll.md   |  4 ++--
 .../paradox/stream/operators/Source-or-Flow/concatLazy.md  |  4 ++--
 .../stream/operators/Source-or-Flow/dropRepeated.md        |  4 ++--
 .../operators/Source-or-Flow/groupedAdjacentByWeighted.md  |  4 ++--
 .../stream/operators/Source-or-Flow/interleaveAll.md       |  4 ++--
 .../stream/operators/Source-or-Flow/mapAsyncPartitioned.md |  4 ++--
 .../Source-or-Flow/mapAsyncPartitionedUnordered.md         |  4 ++--
 .../paradox/stream/operators/Source-or-Flow/mapConcat.md   |  4 ++--
 .../stream/operators/Source-or-Flow/mapWithResource.md     |  4 ++--
 .../operators/Source-or-Flow/materializeIntoSource.md      |  2 +-
 .../paradox/stream/operators/Source-or-Flow/monitor.md     |  6 ++++--
 .../stream/operators/Source-or-Flow/onErrorContinue.md     |  4 ++--
 .../stream/operators/Source-or-Flow/preMaterialize.md      |  2 +-
 .../paradox/stream/operators/Source-or-Flow/prepend.md     | 11 +----------
 .../paradox/stream/operators/Source-or-Flow/prependLazy.md |  6 +++---
 .../stream/operators/Source-or-Flow/statefulMapConcat.md   |  2 +-
 .../paradox/stream/operators/Source-or-Flow/takeUntil.md   |  6 ++----
 .../stream/operators/Source-or-Flow/watchTermination.md    |  4 ++--
 .../stream/operators/StreamConverters/fromOutputStream.md  |  2 +-
 docs/src/main/paradox/stream/stream-customize.md           |  2 +-
 docs/src/main/paradox/stream/stream-rate.md                |  2 +-
 docs/src/main/paradox/stream/stream-refs.md                |  2 +-
 docs/src/main/paradox/typed/actor-discovery.md             |  2 +-
 docs/src/main/paradox/typed/durable-state/persistence.md   |  4 ++--
 docs/src/main/paradox/typed/guide/tutorial_3.md            |  8 ++++----
 docs/src/main/paradox/typed/interaction-patterns.md        |  2 +-
 docs/src/main/paradox/typed/persistence.md                 |  4 ++--
 docs/src/main/paradox/typed/replicated-eventsourcing.md    |  6 +++---
 docs/src/main/paradox/typed/style-guide.md                 |  2 +-
 44 files changed, 79 insertions(+), 88 deletions(-)

diff --git a/docs/src/main/paradox/actors.md b/docs/src/main/paradox/actors.md
index eecbe208a1..c349900752 100644
--- a/docs/src/main/paradox/actors.md
+++ b/docs/src/main/paradox/actors.md
@@ -64,7 +64,7 @@ Actor classes are implemented by extending the 
@javadoc[AbstractActor](pekko.act
 the “initial behavior” in the 
@javadoc[createReceive](pekko.actor.AbstractActor#createReceive()) method.
 
 The `createReceive` method has no arguments and returns 
@javadoc[AbstractActor.Receive](pekko.actor.AbstractActor.Receive). It defines 
which messages your Actor can handle, along with the implementation of how the 
messages should be processed. You can build such behavior with a builder named
-@javadoc[ReceiveBuilder](pekko.actor.typed.javadsl.ReceiveBuilder). This build 
has a convenient factory in `AbstractActor` called 
@javadoc[receiveBuilder](pekko.actor.AbstractActor#receiveBuilder()).
+@javadoc[ReceiveBuilder](pekko.japi.pf.ReceiveBuilder). This builder has a 
convenient factory in `AbstractActor` called 
@javadoc[receiveBuilder](pekko.actor.AbstractActor#receiveBuilder()).
 
 @@@
 
@@ -89,7 +89,7 @@ as explained below.
 The result of the 
@scala[@scaladoc[receive](pekko.actor.Actor#receive:org.apache.pekko.actor.Actor.Receive)
 method is a partial function object, which is]
 @java[@javadoc[createReceive](pekko.actor.AbstractActor#createReceive()) 
method is @javadoc[AbstractActor.Receive](pekko.actor.AbstractActor.Receive) 
which is a wrapper around partial
 scala function object. It is] stored within the actor as its “initial 
behavior”,
-see @ref:[Become/Unbecome](#become-unbecome) for
+see @ref:[Become/Unbecome](#actor-hotswap) for
 further information on changing the behavior of an actor after its
 construction.
 
@@ -314,7 +314,7 @@ In addition, it offers:
 * 
@scala[@scaladoc[self](pekko.actor.Actor#self:org.apache.pekko.actor.ActorRef)] 
@java[@javadoc[getSelf()](pekko.actor.AbstractActor#getSelf())] reference to 
the @apidoc[actor.ActorRef] of the actor
 * 
@scala[@scaladoc[sender](pekko.actor.Actor#sender():org.apache.pekko.actor.ActorRef)]
 @java[@javadoc[getSender()](pekko.actor.AbstractActor#getSender())] reference 
sender Actor of the last received message, typically used as described in
   @scala[[Actor.Reply](#actor-reply)]
-  @java[[LambdaActor.Reply](#lambdaactor-reply)]
+  @java[[Reply to messages](#actor-reply)]
 * 
@scala[@scaladoc[supervisorStrategy](pekko.actor.Actor#supervisorStrategy:org.apache.pekko.actor.SupervisorStrategy)]
 
@java[@javadoc[supervisorStrategy()](pekko.actor.AbstractActor#supervisorStrategy())]
 user overridable definition the strategy to use for supervising child actors
 
   This strategy is typically declared inside the actor to have access
@@ -405,7 +405,7 @@ occupying it. `ActorSelection` cannot be watched for this 
reason. It is
 possible to resolve the current incarnation's `ActorRef` living under the
 path by sending an @apidoc[actor.Identify] message to the `ActorSelection` 
which
 will be replied to with an @apidoc[actor.ActorIdentity] containing the correct 
reference
-(see @ref:[ActorSelection](#actorselection)). This can also be done with the 
@apidoc[resolveOne](actor.ActorSelection) 
{scala="#resolveOne(timeout:scala.concurrent.duration.FiniteDuration):scala.concurrent.Future[actor.ActorRef]"
 java="#resolveOne(java.time.Duration)"}
+(see @ref:[ActorSelection](#actorselection)). This can also be done with the 
@apidoc[resolveOne](actor.ActorSelection) 
{scala="#resolveOne(timeout:scala.concurrent.duration.FiniteDuration):scala.concurrent.Future[org.apache.pekko.actor.ActorRef]"
 java="#resolveOne(java.time.Duration)"}
 method of the `ActorSelection`, which returns a 
@scala[@scaladoc[Future](scala.concurrent.Future)]@java[@javadoc[CompletionStage](java.util.concurrent.CompletionStage)]
 of the matching
 `ActorRef`.
 
@@ -582,7 +582,7 @@ Java
 :  @@snip 
[ActorDocTest.java](/docs/src/test/java/jdocs/actor/ActorDocTest.java) { 
#import-identify #identify }
 
 You can also acquire an `ActorRef` for an `ActorSelection` with
-the @apidoc[resolveOne](actor.ActorSelection) 
{scala="#resolveOne(timeout:scala.concurrent.duration.FiniteDuration):scala.concurrent.Future[actor.ActorRef]"
 java="#resolveOne(java.time.Duration)"} method of the `ActorSelection`. It 
returns a 
@scala[@scaladoc[Future](scala.concurrent.Future)]@java[@javadoc[CompletionStage](java.util.concurrent.CompletionStage)]
+the @apidoc[resolveOne](actor.ActorSelection) 
{scala="#resolveOne(timeout:scala.concurrent.duration.FiniteDuration):scala.concurrent.Future[org.apache.pekko.actor.ActorRef]"
 java="#resolveOne(java.time.Duration)"} method of the `ActorSelection`. It 
returns a 
@scala[@scaladoc[Future](scala.concurrent.Future)]@java[@javadoc[CompletionStage](java.util.concurrent.CompletionStage)]
 of the matching `ActorRef` if such an actor exists. It is completed with
 failure @apidoc[actor.ActorNotFound] if no such actor exists or the 
identification
 didn't complete within the supplied `timeout`.
@@ -902,10 +902,10 @@ to use the support for named timers. The lifecycle of 
scheduled messages can be
 when the actor is restarted and that is taken care of by the timers.
 
 Scala
-:  @@snip 
[ActorDocSpec.scala](/docs/src/test/scala/docs/actor/TimerDocSpec.scala) { 
#timers }
+:  @@snip 
[TimerDocSpec.scala](/docs/src/test/scala/docs/actor/TimerDocSpec.scala) { 
#timers }
 
 Java
-:  @@snip 
[ActorDocTest.java](/docs/src/test/java/jdocs/actor/TimerDocTest.java) { 
#timers }
+:  @@snip 
[TimerDocTest.java](/docs/src/test/java/jdocs/actor/TimerDocTest.java) { 
#timers }
 
 The @ref:[Scheduler](scheduler.md#schedule-periodically) documentation 
describes the difference between
 `fixed-delay` and `fixed-rate` scheduling. If you are uncertain of which one 
to use you should pick
diff --git a/docs/src/main/paradox/additional/rolling-updates.md 
b/docs/src/main/paradox/additional/rolling-updates.md
index 77df7ebd68..a545d25918 100644
--- a/docs/src/main/paradox/additional/rolling-updates.md
+++ b/docs/src/main/paradox/additional/rolling-updates.md
@@ -59,7 +59,7 @@ To understand which is old and new it compares the version 
numbers using normal
 see @apidoc[util.Version] for more details.
 
 When using [Kubernetes 
Deployments](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/)
 with `RollingUpdate`
-strategy you should enable the @extref:[app-version from Deployment feature 
from Pekko 
Management](pekko-management-snapshot:rolling-updates.html#app-version-from-deployment)
+strategy you should enable the @extref:[app-version from Deployment feature 
from Pekko 
Management](pekko-management:rolling-updates.html#app-version-from-deployment)
 to automatically define the `app-version` from the Kubernetes 
`deployment.kubernetes.io/revision` annotation.
 
 Rebalance is also disabled during rolling updates, since shards from stopped 
nodes are anyway supposed to be
@@ -130,7 +130,7 @@ If you need to change any of the following aspects of 
sharding it will require a
  
 ### Cluster configuration change
 
-* A full restart is required if you change the [SBR 
strategy]($pekko.doc.dns$/docs/pekko/current/split-brain-resolver.html#strategies)
+* A full restart is required if you change the @ref:[SBR 
strategy](../split-brain-resolver.md#strategies)
 
 ### Migrating from PersistentFSM to EventSourcedBehavior
 
diff --git a/docs/src/main/paradox/cluster-client.md 
b/docs/src/main/paradox/cluster-client.md
index 0a28f86b76..c2db7bf0c2 100644
--- a/docs/src/main/paradox/cluster-client.md
+++ b/docs/src/main/paradox/cluster-client.md
@@ -93,9 +93,9 @@ what clients are connected to.
 Response messages from the destination actor are tunneled via the receptionist
 to avoid inbound connections from other cluster nodes to the client:
 
-* 
@scala[@scaladoc[`sender()`](pekko.actor.Actor)]@java[@javadoc[`getSender()`](pekko.actor.Actor)],
 as seen by the destination actor, is not the client itself,
+* 
@scala[@scaladoc[`sender()`](pekko.actor.Actor)]@java[@javadoc[`getSender()`](pekko.actor.AbstractActor#getSender())],
 as seen by the destination actor, is not the client itself,
   but the receptionist
-* @scala[@scaladoc[`sender()`](pekko.actor.Actor)] 
@java[@javadoc[`getSender()`](pekko.actor.Actor)] of the response messages, 
sent back from the destination and seen by the client,
+* @scala[@scaladoc[`sender()`](pekko.actor.Actor)] 
@java[@javadoc[`getSender()`](pekko.actor.AbstractActor#getSender())] of the 
response messages, sent back from the destination and seen by the client,
   is `deadLetters`
 
 since the client should normally send subsequent messages via the 
@apidoc[ClusterClient].
@@ -253,8 +253,8 @@ An example is provided to illustrate an approach to migrate 
from the deprecated
 with minimal changes to your existing code. The example is intended to be 
copied and adjusted to your needs.
 It will not be provided as a published artifact.
 
-* 
[pekko-samples/pekko-sample-cluster-cluster-client-grpc-scala](https://github.com/apache/pekko-samples/tree/main/pekko-sample-cluster-client-grpc-scala)
 implemented in Scala
-* 
[pekko-samples/pekko-sample-cluster-cluster-client-grpc-java](https://github.com/apache/pekko-samples/tree/main/pekko-sample-cluster-client-grpc-java)
 implemented in Java
+* 
[pekko-samples/pekko-sample-cluster-client-grpc-scala](https://github.com/apache/pekko-samples/tree/main/pekko-sample-cluster-client-grpc-scala)
 implemented in Scala
+* 
[pekko-samples/pekko-sample-cluster-client-grpc-java](https://github.com/apache/pekko-samples/tree/main/pekko-sample-cluster-client-grpc-java)
 implemented in Java
 
 The example is still using an actor on the client-side to have an API that is 
very close
 to the original Cluster Client. The messages this actor can handle correspond 
to the
diff --git a/docs/src/main/paradox/coordination.md 
b/docs/src/main/paradox/coordination.md
index 1a3b4c88b3..974acf6c8b 100644
--- a/docs/src/main/paradox/coordination.md
+++ b/docs/src/main/paradox/coordination.md
@@ -59,7 +59,7 @@ Scala
 :  @@snip 
[LeaseDocSpec.scala](/docs/src/test/scala/docs/coordination/LeaseDocSpec.scala) 
{ #cluster-owner }
 
 Java
-:  @@snip 
[LeaseDocTest.scala](/docs/src/test/java/jdocs/coordination/LeaseDocTest.java) 
{ #cluster-owner }
+:  @@snip 
[LeaseDocTest.java](/docs/src/test/java/jdocs/coordination/LeaseDocTest.java) { 
#cluster-owner }
 
 For use cases where multiple different leases on the same node then something 
unique must be added to the name. For example
 a lease can be used with Cluster Sharding and in this case the shard Id is 
included in the lease name for each shard.
diff --git a/docs/src/main/paradox/event-bus.md 
b/docs/src/main/paradox/event-bus.md
index e174f20f66..fa3ff00b64 100644
--- a/docs/src/main/paradox/event-bus.md
+++ b/docs/src/main/paradox/event-bus.md
@@ -35,14 +35,14 @@ for any concrete implementation.
 
 The classifiers presented here are part of the Pekko distribution, but rolling
 your own in case you do not find a perfect match is not difficult, check the
-implementation of the existing ones on 
@extref[github](github:pekko-actor/src/main/scala/org/apache/pekko/event/EventBus.scala)
 
+implementation of the existing ones on 
@extref[github](github:actor/src/main/scala/org/apache/pekko/event/EventBus.scala)
 
 
 ### Lookup Classification
 
 The simplest classification is just to extract an arbitrary classifier from
 each event and maintaining a set of subscribers for each possible classifier.
 This can be compared to tuning in on a radio station. The @scala[trait
-@scaladoc[LookupClassification](pekko.event.LookupClassification)]@java[abstract
 class @scaladoc[LookupEventBus](org.apache.pekko.event.japi.LookupEventBus)] 
is still generic in that it abstracts over how to
+@scaladoc[LookupClassification](pekko.event.LookupClassification)]@java[abstract
 class @javadoc[LookupEventBus](pekko.event.japi.LookupEventBus)] is still 
generic in that it abstracts over how to
 compare subscribers and how exactly to classify them.
 
 The necessary methods to be implemented are illustrated with the following 
example:
diff --git a/docs/src/main/paradox/futures.md b/docs/src/main/paradox/futures.md
index 1f8a069fd3..ef282a2377 100644
--- a/docs/src/main/paradox/futures.md
+++ b/docs/src/main/paradox/futures.md
@@ -15,7 +15,7 @@ Pekko offers tiny helpers for use with 
@scala[@scaladoc[Future](scala.concurrent
 
 ## After
 
-@scala[`org.apache.pekko.pattern.after`]@java[@javadoc[org.apache.pekko.pattern.Patterns.after](pekko.pattern.Patterns#after)]
 makes it easy to complete a 
@scala[@scaladoc[Future](pekko.concurrent.Future)]@java[@javadoc[CompletionStage](java.util.concurrent.CompletionStage)]
 with a value or exception after a timeout.
+@scala[`org.apache.pekko.pattern.after`]@java[@javadoc[org.apache.pekko.pattern.Patterns.after](pekko.pattern.Patterns#after)]
 makes it easy to complete a 
@scala[@scaladoc[Future](scala.concurrent.Future)]@java[@javadoc[CompletionStage](java.util.concurrent.CompletionStage)]
 with a value or exception after a timeout.
 
 Scala
 :  @@snip 
[FutureDocSpec.scala](/docs/src/test/scala/docs/future/FutureDocSpec.scala) { 
#after }
diff --git a/docs/src/main/paradox/general/jmm.md 
b/docs/src/main/paradox/general/jmm.md
index 35ddcc7fa6..fe9243733f 100644
--- a/docs/src/main/paradox/general/jmm.md
+++ b/docs/src/main/paradox/general/jmm.md
@@ -74,7 +74,7 @@ Scala
 : @@snip 
[SharedMutableStateDocSpec.scala](/docs/src/test/scala/docs/actor/typed/SharedMutableStateDocSpec.scala)
 { #mutable-state }
 
 Java
-: @@snip 
[DistributedDataDocTest.java](/docs/src/test/java/jdocs/actor/typed/SharedMutableStateDocTest.java)
 { #mutable-state }
+: @@snip 
[SharedMutableStateDocTest.java](/docs/src/test/java/jdocs/actor/typed/SharedMutableStateDocTest.java)
 { #mutable-state }
 
 
  * Messages **should** be immutable, this is to avoid the shared mutable state 
trap.
diff --git a/docs/src/main/paradox/io-tcp.md b/docs/src/main/paradox/io-tcp.md
index de5104a777..0116d86980 100644
--- a/docs/src/main/paradox/io-tcp.md
+++ b/docs/src/main/paradox/io-tcp.md
@@ -219,7 +219,7 @@ to the network socket.
 
 These write back-pressure models (with the exception of the second which is 
rather specialised) are
 demonstrated in complete examples below. The full and contiguous source is
-available @scala[@extref[on 
GitHub](github:docs/src/test/scala/docs/io/EchoServer.scala)]@java[@extref[on 
GitHub](github:docs/rst/java/code/jdocs/io/japi)].
+available @scala[@extref[on 
GitHub](github:docs/src/test/scala/docs/io/EchoServer.scala)]@java[@extref[on 
GitHub](github:docs/src/test/java/jdocs/io/japi)].
 
 For back-pressuring reads there are two modes of operation
 
diff --git a/docs/src/main/paradox/serialization.md 
b/docs/src/main/paradox/serialization.md
index 31000e306d..4fefffbb36 100644
--- a/docs/src/main/paradox/serialization.md
+++ b/docs/src/main/paradox/serialization.md
@@ -218,7 +218,7 @@ Applications should use standard Protobuf dependency and 
not `pekko-protobuf-v3`
 
 ## Java serialization
 
-Java serialization is known to be slow and [prone to 
attacks](https://docs.oracle.com/en/java/javase/25/core/addressing-serialization-vulnerabilities.html";)
+Java serialization is known to be slow and [prone to 
attacks](https://docs.oracle.com/en/java/javase/25/core/addressing-serialization-vulnerabilities.html)
 of various kinds - it never was designed for high throughput messaging after 
all.
 One may think that network bandwidth and latency limit the performance of 
remote messaging, but serialization is a more typical bottleneck.
 
diff --git 
a/docs/src/main/paradox/stream/operators/ActorSink/actorRefWithBackpressure.md 
b/docs/src/main/paradox/stream/operators/ActorSink/actorRefWithBackpressure.md
index ad8203b47a..421e5b3686 100644
--- 
a/docs/src/main/paradox/stream/operators/ActorSink/actorRefWithBackpressure.md
+++ 
b/docs/src/main/paradox/stream/operators/ActorSink/actorRefWithBackpressure.md
@@ -28,7 +28,7 @@ There is also a variant without a concrete acknowledge 
message accepting any mes
 
 See also:
 
-* @ref[`ActorSink.actorRef`](../ActorSink/actorRefWithBackpressure.md) Send 
elements to an actor of the new actors API, without considering backpressure
+* @ref[`ActorSink.actorRef`](../ActorSink/actorRef.md) Send elements to an 
actor of the new actors API, without considering backpressure
 * @ref[`Sink.actorRef`](../Sink/actorRef.md) Send elements to an actor of the 
classic actors API, without considering backpressure
 * @ref[`Sink.actorRefWithBackpressue`](../Sink/actorRefWithBackpressure.md) 
The corresponding operator for the classic actors API
 
diff --git a/docs/src/main/paradox/stream/operators/Flow/flattenOptional.md 
b/docs/src/main/paradox/stream/operators/Flow/flattenOptional.md
index 72b79d52c7..1ad5d8a983 100644
--- a/docs/src/main/paradox/stream/operators/Flow/flattenOptional.md
+++ b/docs/src/main/paradox/stream/operators/Flow/flattenOptional.md
@@ -6,7 +6,7 @@ Collect the value of `Optional` from all the elements passing 
through this flow
 
 ## Signature
 
-@apidoc[Flow.flattenOptional](Flow$) { 
java="#flattenOptional(org.apache.pekko.stream.javadsl.Flow)" }
+@apidoc[Flow.flattenOptional](Flow$) { java="#flattenOptional()" }
 
 
 ## Description
diff --git a/docs/src/main/paradox/stream/operators/PubSub/sink.md 
b/docs/src/main/paradox/stream/operators/PubSub/sink.md
index 9612700ffd..715c439181 100644
--- a/docs/src/main/paradox/stream/operators/PubSub/sink.md
+++ b/docs/src/main/paradox/stream/operators/PubSub/sink.md
@@ -24,7 +24,7 @@ version=PekkoVersion
 
 ## Signature
 
-@apidoc[PubSub.sink](stream.typed.*.PubSub$) { 
scala="#sink[T](topic:org.apache.pekko.actor.typed.Toppic[T]):org.apache.pekko.stream.scaladsl.Sink[T,org.apache.pekko.NotUsed]"
 java="#sink(org.apache.pekko.actor.typed.Topic)" }
+@apidoc[PubSub.sink](stream.typed.*.PubSub$) { 
scala="#sink[T](topicActor:org.apache.pekko.actor.typed.ActorRef[org.apache.pekko.actor.typed.pubsub.Topic.Command[T]]):org.apache.pekko.stream.scaladsl.Sink[T,org.apache.pekko.NotUsed]"
 java="#sink(org.apache.pekko.actor.typed.ActorRef)" }
 
 ## Reactive Streams semantics
 
diff --git a/docs/src/main/paradox/stream/operators/PubSub/source.md 
b/docs/src/main/paradox/stream/operators/PubSub/source.md
index 1e73dbea49..33c2027f34 100644
--- a/docs/src/main/paradox/stream/operators/PubSub/source.md
+++ b/docs/src/main/paradox/stream/operators/PubSub/source.md
@@ -27,7 +27,7 @@ version=PekkoVersion
 
 ## Signature
 
-@apidoc[PubSub.source](stream.typed.*.PubSub$) { 
scala="#source[T](topic:org.apache.pekko.actor.typed.Topic[T]):org.apache.pekko.stream.scaladsl.Source[T,org.apache.pekko.NotUsed]"
 java="#source(org.apache.pekko.actor.typed.Topic)" }
+@apidoc[PubSub.source](stream.typed.*.PubSub$) { 
scala="#source[T](topicActor:org.apache.pekko.actor.typed.ActorRef[org.apache.pekko.actor.typed.pubsub.Topic.Command[T]],bufferSize:Int,overflowStrategy:org.apache.pekko.stream.OverflowStrategy):org.apache.pekko.stream.scaladsl.Source[T,org.apache.pekko.NotUsed]"
 
java="#source(org.apache.pekko.actor.typed.ActorRef,int,org.apache.pekko.stream.OverflowStrategy)"
 }
 
 ## Reactive Streams semantics
 
diff --git a/docs/src/main/paradox/stream/operators/Sink/never.md 
b/docs/src/main/paradox/stream/operators/Sink/never.md
index efaaf47ddc..ae1859134b 100644
--- a/docs/src/main/paradox/stream/operators/Sink/never.md
+++ b/docs/src/main/paradox/stream/operators/Sink/never.md
@@ -7,7 +7,7 @@ Always backpressure never cancel and never consume any elements 
from the stream.
 ## Signature
 
 @apidoc[Sink.never](Sink$) { java="#never()" }
-@apidoc[Sink.never](Sink$) { scala="#never()" }
+@apidoc[Sink.never](Sink$) { 
scala="#never:org.apache.pekko.stream.scaladsl.Sink[Any,scala.concurrent.Future[org.apache.pekko.Done]]"
 }
 
 
 ## Description
diff --git a/docs/src/main/paradox/stream/operators/Sink/source.md 
b/docs/src/main/paradox/stream/operators/Sink/source.md
index 6dc6f751e9..f1b78044a5 100644
--- a/docs/src/main/paradox/stream/operators/Sink/source.md
+++ b/docs/src/main/paradox/stream/operators/Sink/source.md
@@ -7,7 +7,7 @@ A `Sink` that materializes this `Sink` itself as a `Source`, 
the returning `Sour
 ## Signature
 
 @apidoc[Sink.source](Sink$) { java="#source()" }
-@apidoc[Sink.source](Sink$) { scala="#source()" }
+@apidoc[Sink.source](Sink$) { 
scala="#source[T]:org.apache.pekko.stream.scaladsl.Sink[T,org.apache.pekko.stream.scaladsl.Source[T,org.apache.pekko.NotUsed]]"
 }
 
 
 ## Description
diff --git a/docs/src/main/paradox/stream/operators/Source-or-Flow/alsoToAll.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/alsoToAll.md
index b2650a8c6c..8a75a87a2f 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/alsoToAll.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/alsoToAll.md
@@ -6,8 +6,8 @@ Attaches the given @apidoc[Source]s to this @apidoc[Flow], 
meaning that elements
 
 ## Signature
 
-@apidoc[Source.alsoToAll](Source) { 
scala="#alsoToAll(that:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SinkShape[Out],_]*):FlowOps.this.Repr[Out]"
 java="#alsoToAll(org.apache.pekko.stream.Graph*)" }
-@apidoc[Flow.alsoToAll](Flow) { 
scala="#alsoToAll(that:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SinkShape[Out],_]*):FlowOps.this.Repr[Out]"
 java="#alsoToAll(org.apache.pekko.stream.Graph*)" }
+@apidoc[Source.alsoToAll](Source) { 
scala="#alsoToAll(those:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SinkShape[Out],_]*):FlowOps.this.Repr[Out]"
 java="#alsoToAll(org.apache.pekko.stream.Graph*)" }
+@apidoc[Flow.alsoToAll](Flow) { 
scala="#alsoToAll(those:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SinkShape[Out],_]*):FlowOps.this.Repr[Out]"
 java="#alsoToAll(org.apache.pekko.stream.Graph*)" }
 
 ## Description
 
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/concatLazy.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/concatLazy.md
index cae00a14bf..796d6830bc 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/concatLazy.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/concatLazy.md
@@ -6,8 +6,8 @@ After completion of the original upstream the elements of the 
given source will
 
 ## Signature
 
-@apidoc[Source.concat](Source) { 
scala="#concatLazy[U&gt;:Out,Mat2](that:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[U],Mat2]):FlowOps.this.Repr[U]"
 java="#concatLazy(org.apache.pekko.stream.Graph)" }
-@apidoc[Flow.concat](Flow) { 
scala="#concatLazy[U&gt;:Out,Mat2](that:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[U],Mat2]):FlowOps.this.Repr[U]"
 java="#concatLazy(org.apache.pekko.stream.Graph)" }
+@apidoc[Source.concatLazy](Source) { 
scala="#concatLazy[U&gt;:Out,Mat2](that:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[U],Mat2]):FlowOps.this.Repr[U]"
 java="#concatLazy(org.apache.pekko.stream.Graph)" }
+@apidoc[Flow.concatLazy](Flow) { 
scala="#concatLazy[U&gt;:Out,Mat2](that:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[U],Mat2]):FlowOps.this.Repr[U]"
 java="#concatLazy(org.apache.pekko.stream.Graph)" }
 
 
 ## Description
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/dropRepeated.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/dropRepeated.md
index 4bce0ea089..7299419b24 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/dropRepeated.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/dropRepeated.md
@@ -6,7 +6,7 @@ Only pass on those elements that are distinct from the previous 
element.
 
 ## Signature
 
-@apidoc[Source.dropRepeated](Source) { 
scala="#dropRepeated):FlowOps.this.Repr[Out]" java="#dropRepeated()" }
+@apidoc[Source.dropRepeated](Source) { 
scala="#dropRepeated():FlowOps.this.Repr[Out]" java="#dropRepeated()" }
 @apidoc[Flow.dropRepeated](Flow) { 
scala="#dropRepeated():FlowOps.this.Repr[Out]" java="#dropRepeated()" }
 
 
@@ -38,4 +38,4 @@ Java
 
 ## API docs
 
-@apidoc[Flow.filter](Flow) { scala="#dropRepeated():FlowOps.this.Repr[Out]" 
java="#dropRepeated()" }
+@apidoc[Flow.dropRepeated](Flow) { 
scala="#dropRepeated():FlowOps.this.Repr[Out]" java="#dropRepeated()" }
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/groupedAdjacentByWeighted.md
 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/groupedAdjacentByWeighted.md
index 9eb034a69f..1ffc8e7f6c 100644
--- 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/groupedAdjacentByWeighted.md
+++ 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/groupedAdjacentByWeighted.md
@@ -6,8 +6,8 @@ Partitions this stream into chunks by a delimiter function and 
a weight limit.
 
 ## Signature
 
-@apidoc[Source.groupedAdjacentByWeighted](Source) { 
scala="#groupedAdjacentByWeighted[T](f:Out=&gt;T,maxWeight:Long)(costFn:Out=&gt;Long):FlowOps.this.Repr[Seq[Out]]"
 
java="#groupedAdjacentBy(org.apache.pekko.japi.function.Function,long,org.apache.pekko.japi.function.Function)"
 }
-@apidoc[Flow.groupedAdjacentByWeighted](Flow) { 
scala="#groupedAdjacentByWeighted[T](f:Out=&gt;T,maxWeight:Long)(costFn:Out=&gt;Long):FlowOps.this.Repr[Seq[Out]]"
 
java="#groupedAdjacentBy(org.apache.pekko.japi.function.Function,long,org.apache.pekko.japi.function.Function)"
 }
+@apidoc[Source.groupedAdjacentByWeighted](Source) { 
scala="#groupedAdjacentByWeighted[T](f:Out=&gt;T,maxWeight:Long)(costFn:Out=&gt;Long):FlowOps.this.Repr[Seq[Out]]"
 
java="#groupedAdjacentByWeighted(org.apache.pekko.japi.function.Function,long,org.apache.pekko.japi.function.Function)"
 }
+@apidoc[Flow.groupedAdjacentByWeighted](Flow) { 
scala="#groupedAdjacentByWeighted[T](f:Out=&gt;T,maxWeight:Long)(costFn:Out=&gt;Long):FlowOps.this.Repr[Seq[Out]]"
 
java="#groupedAdjacentByWeighted(org.apache.pekko.japi.function.Function,long,org.apache.pekko.japi.function.Function)"
 }
 
 ## Description
 
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/interleaveAll.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/interleaveAll.md
index 4b84073a8e..ced164f3fd 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/interleaveAll.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/interleaveAll.md
@@ -6,8 +6,8 @@ Emits a specifiable number of elements from the original 
source, then from the p
 
 ## Signature
 
-@apidoc[Source.interleaveAll](Source) { 
scala="#interleaveAll[U&gt;:Out](that:List[org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[U],_]],segmentSize:Int,eagerClose:Boolean):FlowOps.this.Repr[U]"
 
java="#interleaveAll(java.util.List[org.apache.pekko.stream.Graph],int,boolean)"
 }
-@apidoc[Flow.interleaveAll](Flow) { 
scala="#interleaveAll[U&gt;:Out](that:List[org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[U],_]],segmentSize:Int,eagerClose:Boolean):FlowOps.this.Repr[U]"
 
java="#interleaveAll(java.util.List[org.apache.pekko.stream.Graph],int,boolean)"
 }
+@apidoc[Source.interleaveAll](Source) { 
scala="#interleaveAll[U&gt;:Out](those:Seq[org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[U],_]],segmentSize:Int,eagerClose:Boolean):FlowOps.this.Repr[U]"
 java="#interleaveAll(java.util.List,int,boolean)" }
+@apidoc[Flow.interleaveAll](Flow) { 
scala="#interleaveAll[U&gt;:Out](those:Seq[org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[U],_]],segmentSize:Int,eagerClose:Boolean):FlowOps.this.Repr[U]"
 java="#interleaveAll(java.util.List,int,boolean)" }
 
 
 ## Description
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncPartitioned.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncPartitioned.md
index 69df57e400..df51db75a0 100644
--- 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncPartitioned.md
+++ 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncPartitioned.md
@@ -6,8 +6,8 @@ Pass incoming elements to a partitioning function that returns 
a partition resul
 
 ## Signature
 
-@apidoc[Source.mapAsyncPartitioned](Source) { 
scala="#mapAsyncPartitioned[T,P](parallelism:Int)(partitioner:Out=%3EP)(f:(Out,P)=%3Escala.concurrent.Future[T]):FlowOps.this.Repr[T]"
 
java="#mapAsyncPartitioned(int,org.apache.pekko.japi.function.Function,org.apache.pekko.japi.function.Function2"
 }
-@apidoc[Flow.mapAsyncPartitioned](Source) { 
scala="#mapAsyncPartitioned[T,P](parallelism:Int)(partitioner:Out=%3EP)(f:(Out,P)=%3Escala.concurrent.Future[T]):FlowOps.this.Repr[T]"
 
java="#mapAsyncPartitioned(int,org.apache.pekko.japi.function.Function,org.apache.pekko.japi.function.Function2"
 }
+@apidoc[Source.mapAsyncPartitioned](Source) { 
scala="#mapAsyncPartitioned[T,P](parallelism:Int)(partitioner:Out=%3EP)(f:(Out,P)=%3Escala.concurrent.Future[T]):FlowOps.this.Repr[T]"
 
java="#mapAsyncPartitioned(int,org.apache.pekko.japi.function.Function,org.apache.pekko.japi.function.Function2)"
 }
+@apidoc[Flow.mapAsyncPartitioned](Flow) { 
scala="#mapAsyncPartitioned[T,P](parallelism:Int)(partitioner:Out=%3EP)(f:(Out,P)=%3Escala.concurrent.Future[T]):FlowOps.this.Repr[T]"
 
java="#mapAsyncPartitioned(int,org.apache.pekko.japi.function.Function,org.apache.pekko.japi.function.Function2)"
 }
 
 ## Description
 
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncPartitionedUnordered.md
 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncPartitionedUnordered.md
index 8db4d67f28..609537e0e3 100644
--- 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncPartitionedUnordered.md
+++ 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapAsyncPartitionedUnordered.md
@@ -6,8 +6,8 @@ Pass incoming elements to a partitioning function that returns 
a partition resul
 
 ## Signature
 
-@apidoc[Source.mapAsyncPartitionedUnordered](Source) { 
scala="#mapAsyncPartitioned[T,P](parallelism:Int)(partitioner:Out=%3EP)(f:(Out,P)=%3Escala.concurrent.Future[T]):FlowOps.this.Repr[T]"
 
java="#mapAsyncPartitioned(int,org.apache.pekko.japi.function.Function,org.apache.pekko.japi.function.Function2"
 }
-@apidoc[Flow.mapAsyncPartitionedUnordered](Source) { 
scala="#mapAsyncPartitioned[T,P](parallelism:Int)(partitioner:Out=%3EP)(f:(Out,P)=%3Escala.concurrent.Future[T]):FlowOps.this.Repr[T]"
 
java="#mapAsyncPartitioned(int,org.apache.pekko.japi.function.Function,org.apache.pekko.japi.function.Function2"
 }
+@apidoc[Source.mapAsyncPartitionedUnordered](Source) { 
scala="#mapAsyncPartitionedUnordered[T,P](parallelism:Int)(partitioner:Out=%3EP)(f:(Out,P)=%3Escala.concurrent.Future[T]):FlowOps.this.Repr[T]"
 
java="#mapAsyncPartitionedUnordered(int,org.apache.pekko.japi.function.Function,org.apache.pekko.japi.function.Function2)"
 }
+@apidoc[Flow.mapAsyncPartitionedUnordered](Flow) { 
scala="#mapAsyncPartitionedUnordered[T,P](parallelism:Int)(partitioner:Out=%3EP)(f:(Out,P)=%3Escala.concurrent.Future[T]):FlowOps.this.Repr[T]"
 
java="#mapAsyncPartitionedUnordered(int,org.apache.pekko.japi.function.Function,org.apache.pekko.japi.function.Function2)"
 }
 
 ## Description
 
diff --git a/docs/src/main/paradox/stream/operators/Source-or-Flow/mapConcat.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapConcat.md
index 232edee962..e58e47b19e 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/mapConcat.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapConcat.md
@@ -6,8 +6,8 @@ Transform each element into zero or more elements that are 
individually passed d
 
 ## Signature
 
-@apidoc[Source.mapConcat](Source) { 
scala="#mapConcat[T](f:Out=&gt;scala.collection.immutable.Iterable[T]):FlowOps.this.Repr[T]"
 java="#mapConcat(org.apache.pekko.japi.function.Function)" }
-@apidoc[Flow.mapConcat](Flow) { 
scala="#mapConcat[T](f:Out=&gt;scala.collection.immutable.Iterable[T]):FlowOps.this.Repr[T]"
 java="#mapConcat(org.apache.pekko.japi.function.Function)" }
+@apidoc[Source.mapConcat](Source) { 
scala="#mapConcat[T](f:Out=&gt;IterableOnce[T]):FlowOps.this.Repr[T]" 
java="#mapConcat(org.apache.pekko.japi.function.Function)" }
+@apidoc[Flow.mapConcat](Flow) { 
scala="#mapConcat[T](f:Out=&gt;IterableOnce[T]):FlowOps.this.Repr[T]" 
java="#mapConcat(org.apache.pekko.japi.function.Function)" }
 
 
 ## Description
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/mapWithResource.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapWithResource.md
index d18bb0b593..baafe16f31 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/mapWithResource.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/mapWithResource.md
@@ -6,12 +6,12 @@ Map elements with the help of a resource that can be opened, 
transform each elem
 
 ## Signature
 
-@apidoc[Flow.mapWithResource](Flow) { 
scala="#mapWithResource[S,T](create:()=%3ES)(f:(S,Out)=%3ET,close:S=%3EOption[T]):Repr[T]"
 
java="#mapWithResource(org.apache.pekko.japi.function.Creator,org.apache.pekko.japi.function.Function2,org.apache.pekko.japi.function.Function)"
 }
+@apidoc[Flow.mapWithResource](Flow) { 
scala="#mapWithResource[R,T](create:()=%3ER)(f:(R,Out)=%3ET,close:R=%3EOption[T]):Repr[T]"
 
java="#mapWithResource(org.apache.pekko.japi.function.Creator,org.apache.pekko.japi.function.Function2,org.apache.pekko.japi.function.Function)"
 }
 1. `create`: Open or Create the resource.
 2. `f`: Transform each element inputs with the help of resource.
 3. `close`: Close the resource, invoked on end of stream or if the stream 
fails, optionally outputting a last element.
 
-@apidoc[Flow.mapWithResource](Flow) { 
scala="#mapWithResource[S%3C:AutoCloseable,T](create:()=%3ES,f:(S,Out)=%3ET):Repr[T]"
 
java="#mapWithResource(org.apache.pekko.japi.function.Creator,org.apache.pekko.japi.function.Function2)"
 }
+@apidoc[Flow.mapWithResource](Flow) { 
scala="#mapWithResource[R%3C:AutoCloseable,T](create:()=%3ER,f:(R,Out)=%3ET):Repr[T]"
 
java="#mapWithResource(org.apache.pekko.japi.function.Creator,org.apache.pekko.japi.function.Function2)"
 }
 1. `create`: Open or Create the autocloseable resource.
 2. `f`: Transform each element inputs with the help of resource.
 
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/materializeIntoSource.md
 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/materializeIntoSource.md
index 7c43e4d3fb..97933b22bc 100644
--- 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/materializeIntoSource.md
+++ 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/materializeIntoSource.md
@@ -7,7 +7,7 @@ Materializes this Graph, immediately returning its materialized 
values into a ne
 ## Signature
 
 @apidoc[Source.materializeIntoSource](Source) { 
scala="#materializeIntoSource[Mat2](sink:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SinkShape[Out],scala.concurrent.Future[Mat2]]):org.apache.pekko.stream.scaladsl.Source[Mat2,scala.concurrent.Future[org.apache.pekko.NotUsed]]"
 java="#materializeIntoSource(org.apache.pekko.stream.Graph)" }
-@apidoc[Flow.materializeIntoSource](Flow) { 
scala="#materializeIntoSource[Mat1,Mat2](source:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[In],Mat1],sink:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SinkShape[Out],scala.concurrent.Future[Mat2]]):org.apache.pekko.stream.scaladsl.Source[Mat2,scala.concurrent.Future[org.apache.pekko.NotUsed]]"
 java="#materialize(org.apache.pekko.actor.ClassicActorSystemProvider)" 
java="#materializeIntoSource(org.apache.pekko.stre [...]
+@apidoc[Flow.materializeIntoSource](Flow) { 
scala="#materializeIntoSource[Mat1,Mat2](source:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[In],Mat1],sink:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SinkShape[Out],scala.concurrent.Future[Mat2]]):org.apache.pekko.stream.scaladsl.Source[Mat2,scala.concurrent.Future[org.apache.pekko.NotUsed]]"
 
java="#materializeIntoSource(org.apache.pekko.stream.Graph,org.apache.pekko.stream.Graph)"
 }
 
 
 ## Description
diff --git a/docs/src/main/paradox/stream/operators/Source-or-Flow/monitor.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/monitor.md
index 3a133af925..1ac5047035 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/monitor.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/monitor.md
@@ -6,8 +6,10 @@ Materializes to a `FlowMonitor` that monitors messages flowing 
through or comple
 
 ## Signature
 
-@apidoc[Source.monitor](Source) { 
scala="#monitor[Mat2]()(combine:(Mat,org.apache.pekko.stream.FlowMonitor[Out])=&gt;Mat2):FlowOpsMat.this.ReprMat[Out,Mat2]"
 java="#monitor()" }
-@apidoc[Flow.monitor](Flow) { 
scala="#monitor[Mat2]()(combine:(Mat,org.apache.pekko.stream.FlowMonitor[Out])=&gt;Mat2):FlowOpsMat.this.ReprMat[Out,Mat2]"
 java="#monitor()" }
+@apidoc[Source.monitor](Source) { 
scala="#monitor:FlowOpsMat.this.ReprMat[Out,(Mat,org.apache.pekko.stream.FlowMonitor[Out])]"
 java="#monitor()" }
+@apidoc[Flow.monitor](Flow) { 
scala="#monitor:FlowOpsMat.this.ReprMat[Out,(Mat,org.apache.pekko.stream.FlowMonitor[Out])]"
 java="#monitor()" }
+@apidoc[Source.monitorMat](Source) { 
scala="#monitorMat[Mat2](combine:(Mat,org.apache.pekko.stream.FlowMonitor[Out])=&gt;Mat2):FlowOpsMat.this.ReprMat[Out,Mat2]"
 java="#monitorMat(org.apache.pekko.japi.function.Function2)" }
+@apidoc[Flow.monitorMat](Flow) { 
scala="#monitorMat[Mat2](combine:(Mat,org.apache.pekko.stream.FlowMonitor[Out])=&gt;Mat2):FlowOpsMat.this.ReprMat[Out,Mat2]"
 java="#monitorMat(org.apache.pekko.japi.function.Function2)" }
 
 
 ## Description
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/onErrorContinue.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/onErrorContinue.md
index 66b7e3cfd9..8fb257e534 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/onErrorContinue.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/onErrorContinue.md
@@ -6,8 +6,8 @@ Continues the stream when an upstream error occurs.
 
 ## Signature
 
-@apidoc[Source.onErrorContinue](Source) { 
scala="#onErrorContinue(errorConsumer%3A%20Function%5BThrowable%2C%20Unit%5D)%3AFlowOps.this.Repr%5BT%5D"
 java="#onErrorContinue(org.apache.pekko.japi.function.Procedure)" }
-@apidoc[Flow.onErrorContinue](Flow) { 
scala="#onErrorContinue%5BT%20%3C%3A%20Throwable%5D(errorConsumer%3A%20Function%5BThrowable%2C%20Unit%5D)(implicit%20tag%3A%20ClassTag%5BT%5D)%3AFlowOps.this.Repr%5BT%5D"
 
java="#onErrorContinue(java.lang.Class,org.apache.pekko.japi.function.Procedure)"
 }
+@apidoc[Source.onErrorContinue](Source) { 
scala="#onErrorContinue[T%3C:Throwable](errorConsumer:Throwable=%3EUnit)(implicittag:scala.reflect.ClassTag[T]):FlowOps.this.Repr[Out]"
 java="#onErrorContinue(org.apache.pekko.japi.function.Procedure)" }
+@apidoc[Flow.onErrorContinue](Flow) { 
scala="#onErrorContinue[T%3C:Throwable](errorConsumer:Throwable=%3EUnit)(implicittag:scala.reflect.ClassTag[T]):FlowOps.this.Repr[Out]"
 
java="#onErrorContinue(java.lang.Class,org.apache.pekko.japi.function.Procedure)"
 }
 
 ## Description
 
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/preMaterialize.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/preMaterialize.md
index 9ba70713f9..44f39f80a4 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/preMaterialize.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/preMaterialize.md
@@ -7,7 +7,7 @@ Materializes this Graph, immediately returning (1) its 
materialized value, and (
 ## Signature
 
 @apidoc[Source.preMaterialize](Source) { 
scala="#preMaterialize()(implicitmaterializer:org.apache.pekko.stream.Materializer):(Mat,org.apache.pekko.stream.scaladsl.Source[Out,org.apache.pekko.NotUsed])"
 java="#preMaterialize(org.apache.pekko.actor.ClassicActorSystemProvider)" 
java="#preMaterialize(org.apache.pekko.stream.Materializer)" }
-@apidoc[Flow.preMaterialize](Flow) { 
scala="#preMaterialize()(implicitmaterializer:org.apache.pekko.stream.Materializer):(Mat,org.apache.pekko.stream.scaladsl.Flow[Int,Out,org.apache.pekko.NotUsed])"
 java="#preMaterialize(org.apache.pekko.actor.ClassicActorSystemProvider)" 
java="#preMaterialize(org.apache.pekko.stream.Materializer)" }
+@apidoc[Flow.preMaterialize](Flow) { 
scala="#preMaterialize()(implicitmaterializer:org.apache.pekko.stream.Materializer):(Mat,org.apache.pekko.stream.scaladsl.Flow[In,Out,org.apache.pekko.NotUsed])"
 java="#preMaterialize(org.apache.pekko.actor.ClassicActorSystemProvider)" 
java="#preMaterialize(org.apache.pekko.stream.Materializer)" }
 
 
 ## Description
diff --git a/docs/src/main/paradox/stream/operators/Source-or-Flow/prepend.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/prepend.md
index 8e79912a4f..a5f66679df 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/prepend.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/prepend.md
@@ -14,15 +14,6 @@ Prepends the given source to the flow, consuming it until 
completion before the
 
 Prepends the given source to the flow, consuming it until completion before 
the original source is consumed.
 
-@@@ note
-
-    The `prepend` operator is for backwards compatibility reasons "detached" 
and will eagerly
-    demand an element from both upstreams when the stream is materialized and 
will then have a
-    one element buffer for each of the upstreams, this is most often not what 
you want, instead
-    use @ref(prependLazy)[prependLazy.md]
-
-@@@
-
 If materialized values needs to be collected `prependMat` is available.
 
 @@@ note
@@ -30,7 +21,7 @@ If materialized values needs to be collected `prependMat` is 
available.
 The `prepend` operator is for backwards compatibility reasons "detached" and 
will eagerly
 demand an element from both upstreams when the stream is materialized and will 
then have a
 one element buffer for each of the upstreams, this is not always what you 
want, if not,
-use @ref(prependLazy)[prependLazy.md]
+use @ref[prependLazy](prependLazy.md)
 
 @@@
 
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/prependLazy.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/prependLazy.md
index 0e3bb86575..d08f1e759e 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/prependLazy.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/prependLazy.md
@@ -6,15 +6,15 @@ Prepends the given source to the flow, consuming it until 
completion before the
 
 ## Signature
 
-@apidoc[Source.prepend](Source) { 
scala="#prepend[U&gt;:Out,Mat2](that:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[U],Mat2]):FlowOps.this.Repr[U]"
 java="#prepend(org.apache.pekko.stream.Graph)" }
-@apidoc[Flow.prepend](Flow) { 
scala="#prepend[U&gt;:Out,Mat2](that:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[U],Mat2]):FlowOps.this.Repr[U]"
 java="#prepend(org.apache.pekko.stream.Graph)" }
+@apidoc[Source.prependLazy](Source) { 
scala="#prependLazy[U&gt;:Out,Mat2](that:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[U],Mat2]):FlowOps.this.Repr[U]"
 java="#prependLazy(org.apache.pekko.stream.Graph)" }
+@apidoc[Flow.prependLazy](Flow) { 
scala="#prependLazy[U&gt;:Out,Mat2](that:org.apache.pekko.stream.Graph[org.apache.pekko.stream.SourceShape[U],Mat2]):FlowOps.this.Repr[U]"
 java="#prependLazy(org.apache.pekko.stream.Graph)" }
 
 
 ## Description
 
 Prepends the given source to the flow, consuming it until completion before 
the original source is consumed.
 
-Both streams will be materialized together, however, the original stream will 
be pulled for the first time only after the prepended upstream was completed. 
(In contrast, @ref(prepend)[prepend.md], introduces single-element buffers 
after both, original and given sources so that the original source is also 
pulled once immediately.)
+Both streams will be materialized together, however, the original stream will 
be pulled for the first time only after the prepended upstream was completed. 
(In contrast, @ref[prepend](prepend.md), introduces single-element buffers 
after both, original and given sources so that the original source is also 
pulled once immediately.)
 
 If materialized values needs to be collected `prependLazyMat` is available.
 
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMapConcat.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMapConcat.md
index 20185d480c..4e5f682b92 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMapConcat.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/statefulMapConcat.md
@@ -15,7 +15,7 @@ The `statefulMapConcat` operator doesn't handle upstream's 
completion signal sin
 
 ## Signature
 
-@apidoc[Flow.statefulMapConcat](Flow) { 
scala="#statefulMapConcat[T](f:()=&gt;Out=&gt;scala.collection.immutable.Iterable[T]):FlowOps.this.Repr[T]"
 java="#statefulMapConcat(org.apache.pekko.japi.function.Creator)" } 
+@apidoc[Flow.statefulMapConcat](Flow) { 
scala="#statefulMapConcat[T](f:()=&gt;Out=&gt;IterableOnce[T]):FlowOps.this.Repr[T]"
 java="#statefulMapConcat(org.apache.pekko.japi.function.Creator)" } 
 
 ## Description
 
diff --git a/docs/src/main/paradox/stream/operators/Source-or-Flow/takeUntil.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/takeUntil.md
index b42d81033f..04597895d0 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/takeUntil.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/takeUntil.md
@@ -6,10 +6,8 @@ Pass elements downstream until the predicate function returns 
true. The first el
 
 ## Signature
 
-@apidoc[Source.takeUntil](Source) { 
scala="#takeUntil(p:Out=&gt;Boolean):FlowOps.this.Repr[Out]" java="#takeUntil(
-org.apache.pekko.japi.function.Predicate)" }
-@apidoc[Flow.takeUntil](Flow) { 
scala="#takeUntil(p:Out=&gt;Boolean):FlowOps.this.Repr[Out]" java="#takeUntil(
-org.apache.pekko.japi.function.Predicate)" }
+@apidoc[Source.takeUntil](Source) { 
scala="#takeUntil(p:Out=&gt;Boolean):FlowOps.this.Repr[Out]" 
java="#takeUntil(org.apache.pekko.japi.function.Predicate)" }
+@apidoc[Flow.takeUntil](Flow) { 
scala="#takeUntil(p:Out=&gt;Boolean):FlowOps.this.Repr[Out]" 
java="#takeUntil(org.apache.pekko.japi.function.Predicate)" }
 
 ## Description
 
diff --git 
a/docs/src/main/paradox/stream/operators/Source-or-Flow/watchTermination.md 
b/docs/src/main/paradox/stream/operators/Source-or-Flow/watchTermination.md
index 18c40422fe..64f89eed70 100644
--- a/docs/src/main/paradox/stream/operators/Source-or-Flow/watchTermination.md
+++ b/docs/src/main/paradox/stream/operators/Source-or-Flow/watchTermination.md
@@ -6,8 +6,8 @@ Materializes to a @scala[`Future`] @java[`CompletionStage`] 
that will be complet
 
 ## Signature
 
-@apidoc[Source.watchTermination](Source) { 
scala="#watchTermination[Mat2]()(matF:(Mat,scala.concurrent.Future[org.apache.pekko.Done])=&gt;Mat2):FlowOpsMat.this.ReprMat[Out,Mat2]"
 java="#watchTermination(org.apache.pekko.japi.function.Function2)" }
-@apidoc[Flow.watchTermination](Flow) { 
scala="#watchTermination[Mat2]()(matF:(Mat,scala.concurrent.Future[org.apache.pekko.Done])=&gt;Mat2):FlowOpsMat.this.ReprMat[Out,Mat2]"
 java="#watchTermination(org.apache.pekko.japi.function.Function2)" }
+@apidoc[Source.watchTermination](Source) { 
scala="#watchTermination[Mat2](matF:(Mat,scala.concurrent.Future[org.apache.pekko.Done])=&gt;Mat2):FlowOpsMat.this.ReprMat[Out,Mat2]"
 java="#watchTermination(org.apache.pekko.japi.function.Function2)" }
+@apidoc[Flow.watchTermination](Flow) { 
scala="#watchTermination[Mat2](matF:(Mat,scala.concurrent.Future[org.apache.pekko.Done])=&gt;Mat2):FlowOpsMat.this.ReprMat[Out,Mat2]"
 java="#watchTermination(org.apache.pekko.japi.function.Function2)" }
 
 
 ## Description
diff --git 
a/docs/src/main/paradox/stream/operators/StreamConverters/fromOutputStream.md 
b/docs/src/main/paradox/stream/operators/StreamConverters/fromOutputStream.md
index 21aec2ec9b..5bcbcc9d7a 100644
--- 
a/docs/src/main/paradox/stream/operators/StreamConverters/fromOutputStream.md
+++ 
b/docs/src/main/paradox/stream/operators/StreamConverters/fromOutputStream.md
@@ -6,7 +6,7 @@ Create a sink that wraps an `OutputStream`.
 
 ## Signature
 
-@apidoc[StreamConverters.fromOutputStream](StreamConverters$) { 
scala="#fromOutputStream(out:()=%3Cjava.io.OutputStream,autoFlush:Boolean):org.apache.pekko.stream.scaladsl.Sink[org.apache.pekko.util.ByteString,scala.concurrent.Future[org.apache.pekko.stream.IOResult]]"
 java="#fromOutputStream(org.apache.pekko.japi.function.Creator)" }
+@apidoc[StreamConverters.fromOutputStream](StreamConverters$) { 
scala="#fromOutputStream(out:()=%3Ejava.io.OutputStream,autoFlush:Boolean):org.apache.pekko.stream.scaladsl.Sink[org.apache.pekko.util.ByteString,scala.concurrent.Future[org.apache.pekko.stream.IOResult]]"
 java="#fromOutputStream(org.apache.pekko.japi.function.Creator)" }
 
 ## Description
 
diff --git a/docs/src/main/paradox/stream/stream-customize.md 
b/docs/src/main/paradox/stream/stream-customize.md
index e24ee42f45..99b7832889 100644
--- a/docs/src/main/paradox/stream/stream-customize.md
+++ b/docs/src/main/paradox/stream/stream-customize.md
@@ -87,7 +87,7 @@ Similarly, to create a custom @apidoc[stream.*.Sink] one can 
register a subclass
 The @apidoc[onPush()](stage.InHandler) {scala="#onPush():Unit" 
java="#onPush()"} callback is used to signal the handler a new element has been 
pushed to the operator,
 and can hence be grabbed and used. `onPush()` can be overridden to provide 
custom behavior.
 Please note, most Sinks would need to request upstream elements as soon as 
they are created: this can be
-done by calling @apidoc[pull(inlet)](stage.OutHandler) {scala="#onPull():Unit" 
java="#onPull()"} in the @apidoc[preStart()](stage.GraphStageLogic) 
{scala="#preStart():Unit" java="#preStart()"} callback.
+done by calling @apidoc[pull(inlet)](stage.GraphStageLogic) 
{scala="#pull[T](in:org.apache.pekko.stream.Inlet[T]):Unit" 
java="#pull(org.apache.pekko.stream.Inlet)"} in the 
@apidoc[preStart()](stage.GraphStageLogic) {scala="#preStart():Unit" 
java="#preStart()"} callback.
 
 Scala
 :   @@snip 
[GraphStageDocSpec.scala](/docs/src/test/scala/docs/stream/GraphStageDocSpec.scala)
 { #custom-sink-example }
diff --git a/docs/src/main/paradox/stream/stream-rate.md 
b/docs/src/main/paradox/stream/stream-rate.md
index 46ea86fa1b..77b681f4a8 100644
--- a/docs/src/main/paradox/stream/stream-rate.md
+++ b/docs/src/main/paradox/stream/stream-rate.md
@@ -23,7 +23,7 @@ buffers in a stream. In this chapter we cover how buffers are 
used in Pekko Stre
 
 In this section we will discuss internal buffers that are introduced as an 
optimization when using asynchronous operators.
 
-To run an operator asynchronously it has to be marked explicitly as such using 
the 
@scala[@scaladoc[`.async`](pekko.stream.Graph#shape:S)]@java[@javadoc[`.async()`](pekko.stream.Graph#async--)]
 method. Being run
+To run an operator asynchronously it has to be marked explicitly as such using 
the 
@scala[@scaladoc[`.async`](pekko.stream.Graph#async:org.apache.pekko.stream.Graph[S,M])]@java[@javadoc[`.async()`](pekko.stream.Graph#async--)]
 method. Being run
 asynchronously means that an operator, after handing out an element to its 
downstream consumer is able to immediately
 process the next message. To demonstrate what we mean by this, let's take a 
look at the following example:
 
diff --git a/docs/src/main/paradox/stream/stream-refs.md 
b/docs/src/main/paradox/stream/stream-refs.md
index 1f3e5d795c..071de31f73 100644
--- a/docs/src/main/paradox/stream/stream-refs.md
+++ b/docs/src/main/paradox/stream/stream-refs.md
@@ -112,7 +112,7 @@ The process of preparing and running a `SourceRef`-powered 
distributed stream is
 
 ### Sink Refs - offering to receive streaming data from a remote system
 
-The dual of 
@scala[@scaladoc[`SourceRef`](pekko.stream.SinkRef)]@java[@javadoc[`SourceRef`](pekko.stream.SinkRef)]s.
+The dual of 
@scala[@scaladoc[`SourceRef`](pekko.stream.SourceRef)]@java[@javadoc[`SourceRef`](pekko.stream.SourceRef)]s.
 
 They can be used to offer the other side the capability to 
 send to the *origin* side data in a streaming, flow-controlled fashion. The 
origin here allocates a `Sink`,
diff --git a/docs/src/main/paradox/typed/actor-discovery.md 
b/docs/src/main/paradox/typed/actor-discovery.md
index 555b2b5b6b..05cac6493a 100644
--- a/docs/src/main/paradox/typed/actor-discovery.md
+++ b/docs/src/main/paradox/typed/actor-discovery.md
@@ -115,7 +115,7 @@ will eventually reach the same set of actors per 
`ServiceKey`.
 
 `Subscription`s and `Find` queries to a clustered receptionist will keep track 
of cluster reachability and only list 
 registered actors that are reachable. The full set of actors, including 
unreachable ones, is available through 
-@scala[@scaladoc[Listing.allServiceInstances](pekko.typed.receptionist.Receptionist.Listing#allServiceInstances[T](key:org.apache.pekko.actor.typed.receptionist.ServiceKey[T]):Set[org.apache.pekko.actor.typed.ActorRef[T]])]@java[@javadoc[Listing.getAllServiceInstances](pekko.actor.typed.receptionist.Receptionist.Listing#getAllServiceInstances(org.apache.pekko.actor.typed.receptionist.ServiceKey))].
+@scala[@scaladoc[Listing.allServiceInstances](pekko.actor.typed.receptionist.Receptionist.Listing#allServiceInstances[T](key:org.apache.pekko.actor.typed.receptionist.ServiceKey[T]):Set[org.apache.pekko.actor.typed.ActorRef[T]])]@java[@javadoc[Listing.getAllServiceInstances](pekko.actor.typed.receptionist.Receptionist.Listing#getAllServiceInstances(org.apache.pekko.actor.typed.receptionist.ServiceKey))].
 
 One important difference from local only receptions are the serialization 
concerns, all messages sent to and back from 
 an actor on another node must be serializable, see 
@ref:[serialization](../serialization.md).
diff --git a/docs/src/main/paradox/typed/durable-state/persistence.md 
b/docs/src/main/paradox/typed/durable-state/persistence.md
index 1ee5813eb3..a61a4a6cb4 100644
--- a/docs/src/main/paradox/typed/durable-state/persistence.md
+++ b/docs/src/main/paradox/typed/durable-state/persistence.md
@@ -238,7 +238,7 @@ Scala
 :  @@snip 
[DurableStatePersistentBehaviorCompileOnly.scala](/persistence-typed/src/test/scala/docs/org/apache/pekko/persistence/typed/DurableStatePersistentBehaviorCompileOnly.scala)
 { #actor-context }
 
 Java
-:  @@snip 
[BasicPersistentBehaviorTest.java](/persistence-typed/src/test/java/jdocs/org/apache/pekko/persistence/typed/DurableStatePersistentBehaviorTest.java)
 { #actor-context }
+:  @@snip 
[DurableStatePersistentBehaviorTest.java](/persistence-typed/src/test/java/jdocs/org/apache/pekko/persistence/typed/DurableStatePersistentBehaviorTest.java)
 { #actor-context }
 
 ## Changing Behavior
 
@@ -397,7 +397,7 @@ other behaviors such as `Behaviors.setup` in order to 
access the `ActorContext`
 to access the logger from within the `ActorContext` to log for debugging the 
`commandHandler`.
 
 Scala
-:  @@snip 
[DurableStatePersistentActorCompileOnly.scala](/persistence-typed/src/test/scala/docs/org/apache/pekko/persistence/typed/DurableStatePersistentBehaviorCompileOnly.scala)
 { #wrapPersistentBehavior }
+:  @@snip 
[DurableStatePersistentBehaviorCompileOnly.scala](/persistence-typed/src/test/scala/docs/org/apache/pekko/persistence/typed/DurableStatePersistentBehaviorCompileOnly.scala)
 { #wrapPersistentBehavior }
 
 Java
 :  @@snip 
[DurableStatePersistentBehaviorTest.java](/persistence-typed/src/test/java/jdocs/org/apache/pekko/persistence/typed/DurableStatePersistentBehaviorTest.java)
 { #wrapPersistentBehavior }
diff --git a/docs/src/main/paradox/typed/guide/tutorial_3.md 
b/docs/src/main/paradox/typed/guide/tutorial_3.md
index becc1a7eea..672e287d81 100644
--- a/docs/src/main/paradox/typed/guide/tutorial_3.md
+++ b/docs/src/main/paradox/typed/guide/tutorial_3.md
@@ -128,7 +128,7 @@ Scala
 :   @@snip 
[DeviceInProgress.scala](/docs/src/test/scala/typed/tutorial_3/DeviceInProgress.scala)
 { #device-with-read }
 
 Java
-:   @@snip 
[DeviceInProgress2.java](/docs/src/test/java/jdocs/typed/tutorial_3/inprogress2/Device.java)
 { #device-with-read }
+:   @@snip 
[Device.java](/docs/src/test/java/jdocs/typed/tutorial_3/inprogress2/Device.java)
 { #device-with-read }
 
 Note in the code that:
 
@@ -165,7 +165,7 @@ However, this approach does not take into account that the 
sender of the record
 Just like in the case of temperature queries and responses, it is also a good 
idea to include an ID field to provide maximum flexibility.
 
 Scala
-:   @@snip 
[DeviceInProgress.scala](/docs/src/test/scala/typed/tutorial_3/Device.scala) { 
#write-protocol }
+:   @@snip [Device.scala](/docs/src/test/scala/typed/tutorial_3/Device.scala) 
{ #write-protocol }
 
 Java
 :   @@snip 
[Device.java](/docs/src/test/java/jdocs/typed/tutorial_3/Device.java) { 
#write-protocol }
@@ -182,10 +182,10 @@ Java
 
 We should also write a new test case now, exercising both the read/query and 
write/record functionality together:
 
-Scala:
+Scala
 :   @@snip 
[DeviceSpec.scala](/docs/src/test/scala/typed/tutorial_3/DeviceSpec.scala) { 
#device-write-read-test }
 
-Java:
+Java
 :   @@snip 
[DeviceTest.java](/docs/src/test/java/jdocs/typed/tutorial_3/DeviceTest.java) { 
#device-write-read-test }
 
 ## What's Next?
diff --git a/docs/src/main/paradox/typed/interaction-patterns.md 
b/docs/src/main/paradox/typed/interaction-patterns.md
index 535031a880..688020ea37 100644
--- a/docs/src/main/paradox/typed/interaction-patterns.md
+++ b/docs/src/main/paradox/typed/interaction-patterns.md
@@ -487,7 +487,7 @@ This can be used with any type of 
@apidoc[actor.typed.Behavior], including @apid
 * Both periodic and single message timers are supported. 
 * The `TimerScheduler` is mutable in itself, because it performs and manages 
the side effects of registering the scheduled tasks.
 * The `TimerScheduler` is bound to the lifecycle of the actor that owns it and 
is cancelled automatically when the actor is stopped.
-* `Behaviors.withTimers` can also be used inside 
@apidoc[Behaviors.supervise](typed.*.Behaviors$) 
{scala="#supervise[T](wrapped:actor.typed.Behavior[T]):org.apache.pekko.actor.typed.scaladsl.Behaviors.Supervise[T]"
 java="#supervise(org.apache.pekko.actor.typed.Behavior)"} and it will 
automatically cancel the started timers correctly when the actor is restarted, 
so that the new incarnation will not receive scheduled messages from a previous 
incarnation.
+* `Behaviors.withTimers` can also be used inside 
@apidoc[Behaviors.supervise](typed.*.Behaviors$) 
{scala="#supervise[T](wrapped:org.apache.pekko.actor.typed.Behavior[T]):org.apache.pekko.actor.typed.scaladsl.Behaviors.Supervise[T]"
 java="#supervise(org.apache.pekko.actor.typed.Behavior)"} and it will 
automatically cancel the started timers correctly when the actor is restarted, 
so that the new incarnation will not receive scheduled messages from a previous 
incarnation.
 
 ### Schedule periodically
 
diff --git a/docs/src/main/paradox/typed/persistence.md 
b/docs/src/main/paradox/typed/persistence.md
index 172067f0bb..aca4d80e56 100644
--- a/docs/src/main/paradox/typed/persistence.md
+++ b/docs/src/main/paradox/typed/persistence.md
@@ -244,7 +244,7 @@ Scala
 Java
 :  @@snip 
[BasicPersistentBehaviorTest.java](/persistence-typed/src/test/java/jdocs/org/apache/pekko/persistence/typed/BasicPersistentBehaviorTest.java)
 { #effects }
 
-Most of the time this will be done with the 
@apidoc[thenRun](typed.(scaladsl|javadsl).EffectBuilder) 
{scala="#thenRun(callback:State=%3EUnit):org.apache.pekko.persistence.typed.scaladsl.EffectBuilder[Event,State]"
 java="#thenRun(function.Effect)"} method on the `Effect` above. You can factor 
out
+Most of the time this will be done with the 
@apidoc[thenRun](typed.(scaladsl|javadsl).EffectBuilder) 
{scala="#thenRun(callback:State=%3EUnit):org.apache.pekko.persistence.typed.scaladsl.EffectBuilder[Event,State]"
 java="#thenRun(org.apache.pekko.japi.function.Effect)"} method on the `Effect` 
above. You can factor out
 common side effects into functions and reuse for several commands. For example:
 
 Scala
@@ -384,7 +384,7 @@ when accepted you want a confirmation when the events have 
been successfully sto
 Therefore you typically include a 
@apidoc[typed.ActorRef]@scala[`[ReplyMessageType]`]@java[`<ReplyMessageType>`]. 
If the 
 command can either have a successful response or a validation error returned, 
the generic response type @apidoc[pattern.StatusReply]@scala[`[ReplyType]`]
 @java[`<ReplyType>`] can be used. If the successful reply does not contain a 
value but is more of an acknowledgement
-a pre defined 
@scala[@scaladoc[StatusReply.Ack](pekko.pattern.StatusReply$#Ack:org.apache.pekko.pattern.StatusReply[org.apache.pekko.Done])]@java[@javadoc[StatusReply.ack()](pekko.pattern.StatusReply$#ack():org.apache.pekko.pattern.StatusReply[org.apache.pekko.Done])]
 of type @scala[`StatusReply[Done]`]@java[`StatusReply<Done>`]
+a pre defined 
@scala[@scaladoc[StatusReply.Ack](pekko.pattern.StatusReply$#Ack:org.apache.pekko.pattern.StatusReply[org.apache.pekko.Done])]@java[@javadoc[StatusReply.ack()](pekko.pattern.StatusReply#ack())]
 of type @scala[`StatusReply[Done]`]@java[`StatusReply<Done>`]
 can be used.
 
 After validation errors or after persisting events, using a 
@apidoc[thenRun](typed.(scaladsl|javadsl).EffectBuilder) 
{scala="#thenRun(callback:State=%3EUnit):org.apache.pekko.persistence.typed.scaladsl.EffectBuilder[Event,State]"
 java="#thenRun(org.apache.pekko.japi.function.Effect)"} side effect, the reply 
message can
diff --git a/docs/src/main/paradox/typed/replicated-eventsourcing.md 
b/docs/src/main/paradox/typed/replicated-eventsourcing.md
index a54d3894e3..e4219e70a0 100644
--- a/docs/src/main/paradox/typed/replicated-eventsourcing.md
+++ b/docs/src/main/paradox/typed/replicated-eventsourcing.md
@@ -234,7 +234,7 @@ There is no built in support for knowing an event has been 
replicated to all rep
 For some use cases you may need to trigger side effects after consuming 
replicated events. For example when an auction has been closed in 
 all data centers and all bids have been replicated. 
 
-The @api[ReplicationContext] contains the current replica, the origin replica 
for the event processes, and if a recovery is running. These can be used to 
+The @apidoc[ReplicationContext] contains the current replica, the origin 
replica for the event processes, and if a recovery is running. These can be 
used to 
 implement side effects that take place once events are fully replicated. If 
the side effect should happen only once then a particular replica can be
 designated to do it. The @ref[Auction 
example](replicated-eventsourcing-auction.md) uses these techniques.
 
@@ -402,11 +402,11 @@ More examples can be found in @ref[Replicated Event 
Sourcing Examples](./replica
 
 ## Journal Support
 
-For a journal plugin to support replication it needs to store and read 
metadata for each event if it is defined in the @apiref[PersistentRepr]
+For a journal plugin to support replication it needs to store and read 
metadata for each event if it is defined in the @apidoc[PersistentRepr]
  `metadata` field. To attach the metadata after writing it, 
`PersistentRepr.withMetadata` is used. The @apidoc[JournalSpec] in the 
Persistence TCK provides 
  a capability flag `supportsMetadata` to toggle verification that metadata is 
handled correctly.
  
-For a snapshot plugin to support replication it needs to store and read 
metadata for the snapshot if it is defined in the 
@apiref[org.apache.pekko.persistence.SnapshotMetadata] `metadata` field. 
+For a snapshot plugin to support replication it needs to store and read 
metadata for the snapshot if it is defined in the 
@apidoc[persistence.SnapshotMetadata] `metadata` field. 
 To attach the metadata when reading the snapshot the 
`org.apache.pekko.persistence.SnapshotMetadata.apply` factory overload taking a 
`metadata` parameter is used.
 The @apidoc[SnapshotStoreSpec] in the Persistence TCK provides a capability 
flag `supportsMetadata` to toggle verification that metadata is handled 
correctly.
 
diff --git a/docs/src/main/paradox/typed/style-guide.md 
b/docs/src/main/paradox/typed/style-guide.md
index 1a23d97728..4cc3fa2bea 100644
--- a/docs/src/main/paradox/typed/style-guide.md
+++ b/docs/src/main/paradox/typed/style-guide.md
@@ -271,7 +271,7 @@ Scala
 Java
 :  @@snip 
[StyleGuideDocExamples.java](/actor-typed-tests/src/test/java/jdocs/org/apache/pekko/typed/StyleGuideDocExamples.java)
 { #message-protocol }
 
-Note that the response message hierarchy in this case could be completely 
avoided by using the @apiDoc[StatusReply] API 
+Note that the response message hierarchy in this case could be completely 
avoided by using the @apidoc[StatusReply] API 
 instead (see @ref[Generic Response 
Wrapper](interaction-patterns.md#generic-response-wrapper)).
 
 ## Public versus private messages


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to