diff --git a/.ci/api-current.txt b/.ci/api-current.txt
index 54472637a1..0fd2a15fc9 100644
--- a/.ci/api-current.txt
+++ b/.ci/api-current.txt
@@ -14,6 +14,12 @@
   public void setMessage(String)
   public void setOriginalExceptionClassName(String)
 ##
+public final class net.corda.core.CordaOID extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public static final String CORDA_PLATFORM = "1.3.6.1.4.1.50530.1"
+  public static final net.corda.core.CordaOID INSTANCE
+  @org.jetbrains.annotations.NotNull public static final String R3_ROOT = "1.3.6.1.4.1.50530"
+  @org.jetbrains.annotations.NotNull public static final String X509_EXTENSION_CORDA_ROLE = "1.3.6.1.4.1.50530.1.1"
+##
 @net.corda.core.serialization.CordaSerializable public class net.corda.core.CordaRuntimeException extends java.lang.RuntimeException implements net.corda.core.CordaThrowable
   public <init>(String)
   public <init>(String, String, Throwable)
@@ -348,6 +354,8 @@ public final class net.corda.core.contracts.ComponentGroupEnum extends java.lang
 public final class net.corda.core.contracts.ContractsDSL extends java.lang.Object
   @org.jetbrains.annotations.NotNull public static final net.corda.core.contracts.CommandWithParties requireSingleCommand(Collection, Class)
   public static final Object requireThat(kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public static final List select(Collection, Class, java.security.PublicKey, net.corda.core.identity.AbstractParty)
+  @org.jetbrains.annotations.NotNull public static final List select(Collection, Class, Collection, Collection)
 ##
 @net.corda.core.serialization.CordaSerializable public interface net.corda.core.contracts.FungibleAsset extends net.corda.core.contracts.OwnableState
   @org.jetbrains.annotations.NotNull public abstract net.corda.core.contracts.Amount getAmount()
@@ -491,6 +499,7 @@ public final class net.corda.core.contracts.StateAndContract extends java.lang.O
 public final class net.corda.core.contracts.Structures extends java.lang.Object
   @org.jetbrains.annotations.NotNull public static final net.corda.core.crypto.SecureHash hash(net.corda.core.contracts.ContractState)
   @org.jetbrains.annotations.NotNull public static final net.corda.core.contracts.Amount withoutIssuer(net.corda.core.contracts.Amount)
+  public static final int MAX_ISSUER_REF_SIZE = 512
 ##
 @net.corda.core.serialization.CordaSerializable public abstract class net.corda.core.contracts.TimeWindow extends java.lang.Object
   public <init>()
@@ -616,6 +625,7 @@ public static final class net.corda.core.contracts.UniqueIdentifier$Companion ex
   @org.jetbrains.annotations.NotNull public abstract String getName()
   @org.jetbrains.annotations.NotNull public abstract List getRpcFlows()
   @org.jetbrains.annotations.NotNull public abstract List getSchedulableFlows()
+  @org.jetbrains.annotations.NotNull public abstract List getSerializationCustomSerializers()
   @org.jetbrains.annotations.NotNull public abstract List getSerializationWhitelists()
   @org.jetbrains.annotations.NotNull public abstract List getServiceFlows()
   @org.jetbrains.annotations.NotNull public abstract List getServices()
@@ -1229,6 +1239,8 @@ public abstract class net.corda.core.flows.FlowLogic extends java.lang.Object
   @co.paralleluniverse.fibers.Suspendable @kotlin.jvm.JvmStatic public static final void sleep(java.time.Duration)
   @co.paralleluniverse.fibers.Suspendable public Object subFlow(net.corda.core.flows.FlowLogic)
   @org.jetbrains.annotations.Nullable public final net.corda.core.messaging.DataFeed track()
+  @org.jetbrains.annotations.Nullable public final net.corda.core.messaging.DataFeed trackStepsTree()
+  @org.jetbrains.annotations.Nullable public final net.corda.core.messaging.DataFeed trackStepsTreeIndex()
   @co.paralleluniverse.fibers.Suspendable @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.SignedTransaction waitForLedgerCommit(net.corda.core.crypto.SecureHash)
   @co.paralleluniverse.fibers.Suspendable @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.SignedTransaction waitForLedgerCommit(net.corda.core.crypto.SecureHash, boolean)
   public static final net.corda.core.flows.FlowLogic$Companion Companion
@@ -1240,6 +1252,7 @@ public static final class net.corda.core.flows.FlowLogic$Companion extends java.
 @net.corda.core.serialization.CordaSerializable @net.corda.core.DoNotImplement public interface net.corda.core.flows.FlowLogicRef
 ##
 @net.corda.core.DoNotImplement public interface net.corda.core.flows.FlowLogicRefFactory
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.flows.FlowLogic toFlowLogic(net.corda.core.flows.FlowLogicRef)
 ##
 @net.corda.core.DoNotImplement public abstract class net.corda.core.flows.FlowSession extends java.lang.Object
   public <init>()
@@ -1303,9 +1316,30 @@ public @interface net.corda.core.flows.InitiatingFlow
   public int hashCode()
   @org.jetbrains.annotations.NotNull public String toString()
 ##
+@net.corda.core.serialization.CordaSerializable public static final class net.corda.core.flows.NotaryError$General extends net.corda.core.flows.NotaryError
+  public <init>(String)
+  @org.jetbrains.annotations.NotNull public final String component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.flows.NotaryError$General copy(String)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final String getCause()
+  public int hashCode()
+  @org.jetbrains.annotations.NotNull public String toString()
+##
 @net.corda.core.serialization.CordaSerializable public static final class net.corda.core.flows.NotaryError$TimeWindowInvalid extends net.corda.core.flows.NotaryError
+  public <init>(java.time.Instant, net.corda.core.contracts.TimeWindow)
+  @org.jetbrains.annotations.NotNull public final java.time.Instant component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.contracts.TimeWindow component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.flows.NotaryError$TimeWindowInvalid copy(java.time.Instant, net.corda.core.contracts.TimeWindow)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final java.time.Instant getCurrentTime()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.contracts.TimeWindow getTxTimeWindow()
+  public int hashCode()
+  @org.jetbrains.annotations.NotNull public String toString()
+  public static final net.corda.core.flows.NotaryError$TimeWindowInvalid$Companion Companion
   @kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.flows.NotaryError$TimeWindowInvalid INSTANCE
 ##
+public static final class net.corda.core.flows.NotaryError$TimeWindowInvalid$Companion extends java.lang.Object
+##
 @net.corda.core.serialization.CordaSerializable public static final class net.corda.core.flows.NotaryError$TransactionInvalid extends net.corda.core.flows.NotaryError
   public <init>(Throwable)
   @org.jetbrains.annotations.NotNull public final Throwable component1()
@@ -1593,18 +1627,27 @@ public final class net.corda.core.messaging.CordaRPCOpsKt extends java.lang.Obje
 @net.corda.core.DoNotImplement public interface net.corda.core.messaging.FlowProgressHandle extends net.corda.core.messaging.FlowHandle
   public abstract void close()
   @org.jetbrains.annotations.NotNull public abstract rx.Observable getProgress()
+  @org.jetbrains.annotations.Nullable public abstract net.corda.core.messaging.DataFeed getStepsTreeFeed()
+  @org.jetbrains.annotations.Nullable public abstract net.corda.core.messaging.DataFeed getStepsTreeIndexFeed()
 ##
 @net.corda.core.serialization.CordaSerializable @net.corda.core.DoNotImplement public final class net.corda.core.messaging.FlowProgressHandleImpl extends java.lang.Object implements net.corda.core.messaging.FlowProgressHandle
   public <init>(net.corda.core.flows.StateMachineRunId, net.corda.core.concurrent.CordaFuture, rx.Observable)
+  public <init>(net.corda.core.flows.StateMachineRunId, net.corda.core.concurrent.CordaFuture, rx.Observable, net.corda.core.messaging.DataFeed)
+  public <init>(net.corda.core.flows.StateMachineRunId, net.corda.core.concurrent.CordaFuture, rx.Observable, net.corda.core.messaging.DataFeed, net.corda.core.messaging.DataFeed)
   public void close()
   @org.jetbrains.annotations.NotNull public final net.corda.core.flows.StateMachineRunId component1()
   @org.jetbrains.annotations.NotNull public final net.corda.core.concurrent.CordaFuture component2()
   @org.jetbrains.annotations.NotNull public final rx.Observable component3()
+  @org.jetbrains.annotations.Nullable public final net.corda.core.messaging.DataFeed component4()
+  @org.jetbrains.annotations.Nullable public final net.corda.core.messaging.DataFeed component5()
   @org.jetbrains.annotations.NotNull public final net.corda.core.messaging.FlowProgressHandleImpl copy(net.corda.core.flows.StateMachineRunId, net.corda.core.concurrent.CordaFuture, rx.Observable)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.messaging.FlowProgressHandleImpl copy(net.corda.core.flows.StateMachineRunId, net.corda.core.concurrent.CordaFuture, rx.Observable, net.corda.core.messaging.DataFeed, net.corda.core.messaging.DataFeed)
   public boolean equals(Object)
   @org.jetbrains.annotations.NotNull public net.corda.core.flows.StateMachineRunId getId()
   @org.jetbrains.annotations.NotNull public rx.Observable getProgress()
   @org.jetbrains.annotations.NotNull public net.corda.core.concurrent.CordaFuture getReturnValue()
+  @org.jetbrains.annotations.Nullable public net.corda.core.messaging.DataFeed getStepsTreeFeed()
+  @org.jetbrains.annotations.Nullable public net.corda.core.messaging.DataFeed getStepsTreeIndexFeed()
   public int hashCode()
   public String toString()
 ##
@@ -1692,6 +1735,7 @@ public @interface net.corda.core.messaging.RPCReturnsObservables
   public final int getPlatformVersion()
   public final long getSerial()
   public int hashCode()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.PartyAndCertificate identityAndCertFromX500Name(net.corda.core.identity.CordaX500Name)
   @org.jetbrains.annotations.NotNull public final net.corda.core.identity.Party identityFromX500Name(net.corda.core.identity.CordaX500Name)
   public final boolean isLegalIdentity(net.corda.core.identity.Party)
   public String toString()
@@ -1716,6 +1760,7 @@ public @interface net.corda.core.messaging.RPCReturnsObservables
   public abstract void recordTransactions(Iterable)
   public abstract void recordTransactions(net.corda.core.node.StatesToRecord, Iterable)
   public abstract void recordTransactions(boolean, Iterable)
+  public abstract void registerUnloadHandler(kotlin.jvm.functions.Function0)
   @org.jetbrains.annotations.NotNull public abstract net.corda.core.transactions.SignedTransaction signInitialTransaction(net.corda.core.transactions.TransactionBuilder)
   @org.jetbrains.annotations.NotNull public abstract net.corda.core.transactions.SignedTransaction signInitialTransaction(net.corda.core.transactions.TransactionBuilder, Iterable)
   @org.jetbrains.annotations.NotNull public abstract net.corda.core.transactions.SignedTransaction signInitialTransaction(net.corda.core.transactions.TransactionBuilder, java.security.PublicKey)
@@ -1728,6 +1773,7 @@ public @interface net.corda.core.messaging.RPCReturnsObservables
 ##
 @net.corda.core.DoNotImplement public interface net.corda.core.node.StateLoader
   @org.jetbrains.annotations.NotNull public abstract net.corda.core.contracts.TransactionState loadState(net.corda.core.contracts.StateRef)
+  @org.jetbrains.annotations.NotNull public abstract Set loadStates(Set)
 ##
 public final class net.corda.core.node.StatesToRecord extends java.lang.Enum
   protected <init>(String, int)
@@ -1735,8 +1781,10 @@ public final class net.corda.core.node.StatesToRecord extends java.lang.Enum
   public static net.corda.core.node.StatesToRecord[] values()
 ##
 @net.corda.core.DoNotImplement public interface net.corda.core.node.services.AttachmentStorage
+  public abstract boolean hasAttachment(net.corda.core.crypto.SecureHash)
   @org.jetbrains.annotations.NotNull public abstract net.corda.core.crypto.SecureHash importAttachment(java.io.InputStream)
   @org.jetbrains.annotations.NotNull public abstract net.corda.core.crypto.SecureHash importAttachment(java.io.InputStream, String, String)
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.crypto.SecureHash importOrGetAttachment(java.io.InputStream)
   @org.jetbrains.annotations.Nullable public abstract net.corda.core.contracts.Attachment openAttachment(net.corda.core.crypto.SecureHash)
   @org.jetbrains.annotations.NotNull public abstract List queryAttachments(net.corda.core.node.services.vault.AttachmentQueryCriteria, net.corda.core.node.services.vault.AttachmentSort)
 ##
@@ -1832,11 +1880,13 @@ public @interface net.corda.core.node.services.CordaService
   @org.jetbrains.annotations.NotNull public abstract net.corda.core.node.ServiceHub getServices()
   public abstract void start()
   public abstract void stop()
+  @kotlin.jvm.JvmStatic public static final void validateTimeWindow(java.time.Clock, net.corda.core.contracts.TimeWindow)
   public static final net.corda.core.node.services.NotaryService$Companion Companion
   @org.jetbrains.annotations.NotNull public static final String ID_PREFIX = "corda.notary."
 ##
 public static final class net.corda.core.node.services.NotaryService$Companion extends java.lang.Object
   @kotlin.Deprecated @org.jetbrains.annotations.NotNull public final String constructId(boolean, boolean, boolean, boolean)
+  @kotlin.jvm.JvmStatic public final void validateTimeWindow(java.time.Clock, net.corda.core.contracts.TimeWindow)
 ##
 public abstract class net.corda.core.node.services.PartyInfo extends java.lang.Object
   @org.jetbrains.annotations.NotNull public abstract net.corda.core.identity.Party getParty()
@@ -1876,6 +1926,7 @@ public final class net.corda.core.node.services.TimeWindowChecker extends java.l
 @net.corda.core.DoNotImplement public interface net.corda.core.node.services.TransactionStorage extends net.corda.core.node.StateLoader
   @org.jetbrains.annotations.Nullable public abstract net.corda.core.transactions.SignedTransaction getTransaction(net.corda.core.crypto.SecureHash)
   @org.jetbrains.annotations.NotNull public abstract rx.Observable getUpdates()
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.contracts.TransactionState loadState(net.corda.core.contracts.StateRef)
   @org.jetbrains.annotations.NotNull public abstract net.corda.core.messaging.DataFeed track()
 ##
 @net.corda.core.DoNotImplement public interface net.corda.core.node.services.TransactionVerifierService
@@ -1890,6 +1941,9 @@ public final class net.corda.core.node.services.TimeWindowChecker extends java.l
   @org.jetbrains.annotations.NotNull public final net.corda.core.crypto.TransactionSignature sign(net.corda.core.crypto.SecureHash)
   @org.jetbrains.annotations.NotNull public final net.corda.core.crypto.DigitalSignature$WithKey sign(byte[])
   public final void validateTimeWindow(net.corda.core.contracts.TimeWindow)
+  public static final net.corda.core.node.services.TrustedAuthorityNotaryService$Companion Companion
+##
+public static final class net.corda.core.node.services.TrustedAuthorityNotaryService$Companion extends java.lang.Object
 ##
 @net.corda.core.serialization.CordaSerializable public final class net.corda.core.node.services.UniquenessException extends net.corda.core.CordaException
   public <init>(net.corda.core.node.services.UniquenessProvider$Conflict)
@@ -2609,6 +2663,7 @@ public final class net.corda.core.schemas.CommonSchemaV1 extends net.corda.core.
   public static final net.corda.core.schemas.CommonSchemaV1 INSTANCE
 ##
 @javax.persistence.MappedSuperclass @net.corda.core.serialization.CordaSerializable public static class net.corda.core.schemas.CommonSchemaV1$FungibleState extends net.corda.core.schemas.PersistentState
+  public <init>()
   public <init>(Set, net.corda.core.identity.AbstractParty, long, net.corda.core.identity.AbstractParty, byte[])
   @org.jetbrains.annotations.NotNull public final net.corda.core.identity.AbstractParty getIssuer()
   @org.jetbrains.annotations.NotNull public final byte[] getIssuerRef()
@@ -2622,6 +2677,7 @@ public final class net.corda.core.schemas.CommonSchemaV1 extends net.corda.core.
   public final void setQuantity(long)
 ##
 @javax.persistence.MappedSuperclass @net.corda.core.serialization.CordaSerializable public static class net.corda.core.schemas.CommonSchemaV1$LinearState extends net.corda.core.schemas.PersistentState
+  public <init>()
   public <init>(Set, String, UUID)
   public <init>(net.corda.core.contracts.UniqueIdentifier, Set)
   @org.jetbrains.annotations.Nullable public final String getExternalId()
@@ -3145,6 +3201,7 @@ public static final class net.corda.core.utilities.Id$Companion extends java.lan
   @kotlin.jvm.JvmStatic @org.jetbrains.annotations.NotNull public final net.corda.core.utilities.Id newInstance(Object, String, java.time.Instant)
 ##
 public final class net.corda.core.utilities.KotlinUtilsKt extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public static final org.slf4j.Logger contextLogger(Object)
   public static final void debug(org.slf4j.Logger, kotlin.jvm.functions.Function0)
   public static final int exactAdd(int, int)
   public static final long exactAdd(long, long)
@@ -3230,6 +3287,7 @@ public static final class net.corda.core.utilities.OpaqueBytes$Companion extends
 @net.corda.core.serialization.CordaSerializable public final class net.corda.core.utilities.ProgressTracker extends java.lang.Object
   public final void endWithError(Throwable)
   @org.jetbrains.annotations.NotNull public final List getAllSteps()
+  @org.jetbrains.annotations.NotNull public final List getAllStepsLabels()
   @org.jetbrains.annotations.NotNull public final rx.Observable getChanges()
   @org.jetbrains.annotations.Nullable public final net.corda.core.utilities.ProgressTracker getChildProgressTracker(net.corda.core.utilities.ProgressTracker$Step)
   @org.jetbrains.annotations.NotNull public final net.corda.core.utilities.ProgressTracker$Step getCurrentStep()
@@ -3238,12 +3296,16 @@ public static final class net.corda.core.utilities.OpaqueBytes$Companion extends
   @org.jetbrains.annotations.Nullable public final net.corda.core.utilities.ProgressTracker getParent()
   public final int getStepIndex()
   @org.jetbrains.annotations.NotNull public final net.corda.core.utilities.ProgressTracker$Step[] getSteps()
+  @org.jetbrains.annotations.NotNull public final rx.Observable getStepsTreeChanges()
+  public final int getStepsTreeIndex()
+  @org.jetbrains.annotations.NotNull public final rx.Observable getStepsTreeIndexChanges()
   @org.jetbrains.annotations.NotNull public final net.corda.core.utilities.ProgressTracker getTopLevelTracker()
   @org.jetbrains.annotations.NotNull public final net.corda.core.utilities.ProgressTracker$Step nextStep()
   public final void setChildProgressTracker(net.corda.core.utilities.ProgressTracker$Step, net.corda.core.utilities.ProgressTracker)
   public final void setCurrentStep(net.corda.core.utilities.ProgressTracker$Step)
 ##
 @net.corda.core.serialization.CordaSerializable public abstract static class net.corda.core.utilities.ProgressTracker$Change extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public final net.corda.core.utilities.ProgressTracker getProgressTracker()
 ##
 @net.corda.core.serialization.CordaSerializable public static final class net.corda.core.utilities.ProgressTracker$Change$Position extends net.corda.core.utilities.ProgressTracker$Change
   public <init>(net.corda.core.utilities.ProgressTracker, net.corda.core.utilities.ProgressTracker$Step)
@@ -3522,12 +3584,620 @@ public static final class net.corda.client.jackson.StringToMethodCallParser$Unpa
   public <init>(String)
   @org.jetbrains.annotations.NotNull public final String getMethodName()
 ##
+public final class net.corda.testing.driver.Driver extends java.lang.Object
+  public static final Object driver(net.corda.testing.driver.DriverParameters, kotlin.jvm.functions.Function1)
+  public static final Object driver(net.corda.testing.driver.DriverParameters, boolean, java.nio.file.Path, net.corda.testing.driver.PortAllocation, net.corda.testing.driver.PortAllocation, Map, boolean, boolean, boolean, boolean, List, List, net.corda.testing.driver.JmxPolicy, kotlin.jvm.functions.Function1)
+##
+@net.corda.core.DoNotImplement public interface net.corda.testing.driver.DriverDSL
+  @org.jetbrains.annotations.NotNull public abstract java.nio.file.Path baseDirectory(net.corda.core.identity.CordaX500Name)
+  @org.jetbrains.annotations.NotNull public abstract net.corda.testing.driver.NotaryHandle getDefaultNotaryHandle()
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.identity.Party getDefaultNotaryIdentity()
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.concurrent.CordaFuture getDefaultNotaryNode()
+  @org.jetbrains.annotations.NotNull public abstract List getNotaryHandles()
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.concurrent.CordaFuture startNode(net.corda.testing.driver.NodeParameters)
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.concurrent.CordaFuture startNode(net.corda.testing.driver.NodeParameters, net.corda.core.identity.CordaX500Name, List, net.corda.node.services.config.VerifierType, Map, Boolean, String)
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.concurrent.CordaFuture startWebserver(net.corda.testing.driver.NodeHandle)
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.concurrent.CordaFuture startWebserver(net.corda.testing.driver.NodeHandle, String)
+##
+public final class net.corda.testing.driver.DriverParameters extends java.lang.Object
+  public <init>()
+  public <init>(boolean, java.nio.file.Path, net.corda.testing.driver.PortAllocation, net.corda.testing.driver.PortAllocation, Map, boolean, boolean, boolean, boolean, List, List, net.corda.testing.driver.JmxPolicy)
+  public final boolean component1()
+  @org.jetbrains.annotations.NotNull public final List component10()
+  @org.jetbrains.annotations.NotNull public final List component11()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.JmxPolicy component12()
+  @org.jetbrains.annotations.NotNull public final java.nio.file.Path component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.PortAllocation component3()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.PortAllocation component4()
+  @org.jetbrains.annotations.NotNull public final Map component5()
+  public final boolean component6()
+  public final boolean component7()
+  public final boolean component8()
+  public final boolean component9()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters copy(boolean, java.nio.file.Path, net.corda.testing.driver.PortAllocation, net.corda.testing.driver.PortAllocation, Map, boolean, boolean, boolean, boolean, List, List, net.corda.testing.driver.JmxPolicy)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.PortAllocation getDebugPortAllocation()
+  @org.jetbrains.annotations.NotNull public final java.nio.file.Path getDriverDirectory()
+  @org.jetbrains.annotations.NotNull public final List getExtraCordappPackagesToScan()
+  public final boolean getInitialiseSerialization()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.JmxPolicy getJmxPolicy()
+  @org.jetbrains.annotations.NotNull public final List getNotarySpecs()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.PortAllocation getPortAllocation()
+  public final boolean getStartNodesInProcess()
+  @org.jetbrains.annotations.NotNull public final Map getSystemProperties()
+  public final boolean getUseTestClock()
+  public final boolean getWaitForAllNodesToFinish()
+  public int hashCode()
+  public final boolean isDebug()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters setDebugPortAllocation(net.corda.testing.driver.PortAllocation)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters setDriverDirectory(java.nio.file.Path)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters setExtraCordappPackagesToScan(List)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters setInitialiseSerialization(boolean)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters setIsDebug(boolean)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters setJmxPolicy(net.corda.testing.driver.JmxPolicy)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters setNotarySpecs(List)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters setPortAllocation(net.corda.testing.driver.PortAllocation)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters setStartNodesInProcess(boolean)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters setSystemProperties(Map)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters setUseTestClock(boolean)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.DriverParameters setWaitForAllNodesToFinish(boolean)
+  public String toString()
+##
+public final class net.corda.testing.driver.JmxPolicy extends java.lang.Object
+  public <init>()
+  public <init>(boolean, net.corda.testing.driver.PortAllocation)
+  public final boolean component1()
+  @org.jetbrains.annotations.Nullable public final net.corda.testing.driver.PortAllocation component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.JmxPolicy copy(boolean, net.corda.testing.driver.PortAllocation)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.Nullable public final net.corda.testing.driver.PortAllocation getJmxHttpServerPortAllocation()
+  public final boolean getStartJmxHttpServer()
+  public int hashCode()
+  public String toString()
+##
+@net.corda.core.DoNotImplement public abstract class net.corda.testing.driver.NodeHandle extends java.lang.Object implements java.lang.AutoCloseable
+  public void close()
+  @org.jetbrains.annotations.NotNull public abstract net.corda.node.services.config.NodeConfiguration getConfiguration()
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.node.NodeInfo getNodeInfo()
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.messaging.CordaRPCOps getRpc()
+  public abstract boolean getUseHTTPS()
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.utilities.NetworkHostAndPort getWebAddress()
+  @org.jetbrains.annotations.NotNull public final net.corda.client.rpc.CordaRPCClient rpcClientToNode()
+  @org.jetbrains.annotations.NotNull public final net.corda.client.rpc.CordaRPCClient rpcClientToNode(net.corda.nodeapi.internal.config.SSLConfiguration)
+  public abstract void stop()
+##
+public static final class net.corda.testing.driver.NodeHandle$InProcess extends net.corda.testing.driver.NodeHandle
+  public <init>(net.corda.core.node.NodeInfo, net.corda.core.messaging.CordaRPCOps, net.corda.node.services.config.NodeConfiguration, net.corda.core.utilities.NetworkHostAndPort, boolean, net.corda.node.internal.StartedNode, Thread, kotlin.jvm.functions.Function0)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.node.NodeInfo component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.messaging.CordaRPCOps component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.config.NodeConfiguration component3()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.utilities.NetworkHostAndPort component4()
+  public final boolean component5()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.internal.StartedNode component6()
+  @org.jetbrains.annotations.NotNull public final Thread component7()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.NodeHandle$InProcess copy(net.corda.core.node.NodeInfo, net.corda.core.messaging.CordaRPCOps, net.corda.node.services.config.NodeConfiguration, net.corda.core.utilities.NetworkHostAndPort, boolean, net.corda.node.internal.StartedNode, Thread, kotlin.jvm.functions.Function0)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public net.corda.node.services.config.NodeConfiguration getConfiguration()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.internal.StartedNode getNode()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.NodeInfo getNodeInfo()
+  @org.jetbrains.annotations.NotNull public final Thread getNodeThread()
+  @org.jetbrains.annotations.NotNull public net.corda.core.messaging.CordaRPCOps getRpc()
+  public boolean getUseHTTPS()
+  @org.jetbrains.annotations.NotNull public net.corda.core.utilities.NetworkHostAndPort getWebAddress()
+  public int hashCode()
+  public void stop()
+  public String toString()
+##
+public static final class net.corda.testing.driver.NodeHandle$OutOfProcess extends net.corda.testing.driver.NodeHandle
+  public <init>(net.corda.core.node.NodeInfo, net.corda.core.messaging.CordaRPCOps, net.corda.node.services.config.NodeConfiguration, net.corda.core.utilities.NetworkHostAndPort, boolean, Integer, Process, kotlin.jvm.functions.Function0)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.node.NodeInfo component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.messaging.CordaRPCOps component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.config.NodeConfiguration component3()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.utilities.NetworkHostAndPort component4()
+  public final boolean component5()
+  @org.jetbrains.annotations.Nullable public final Integer component6()
+  @org.jetbrains.annotations.NotNull public final Process component7()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.NodeHandle$OutOfProcess copy(net.corda.core.node.NodeInfo, net.corda.core.messaging.CordaRPCOps, net.corda.node.services.config.NodeConfiguration, net.corda.core.utilities.NetworkHostAndPort, boolean, Integer, Process, kotlin.jvm.functions.Function0)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public net.corda.node.services.config.NodeConfiguration getConfiguration()
+  @org.jetbrains.annotations.Nullable public final Integer getDebugPort()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.NodeInfo getNodeInfo()
+  @org.jetbrains.annotations.NotNull public final Process getProcess()
+  @org.jetbrains.annotations.NotNull public net.corda.core.messaging.CordaRPCOps getRpc()
+  public boolean getUseHTTPS()
+  @org.jetbrains.annotations.NotNull public net.corda.core.utilities.NetworkHostAndPort getWebAddress()
+  public int hashCode()
+  public void stop()
+  public String toString()
+##
+public final class net.corda.testing.driver.NodeParameters extends java.lang.Object
+  public <init>()
+  public <init>(net.corda.core.identity.CordaX500Name, List, net.corda.node.services.config.VerifierType, Map, Boolean, String)
+  @org.jetbrains.annotations.Nullable public final net.corda.core.identity.CordaX500Name component1()
+  @org.jetbrains.annotations.NotNull public final List component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.config.VerifierType component3()
+  @org.jetbrains.annotations.NotNull public final Map component4()
+  @org.jetbrains.annotations.Nullable public final Boolean component5()
+  @org.jetbrains.annotations.NotNull public final String component6()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.NodeParameters copy(net.corda.core.identity.CordaX500Name, List, net.corda.node.services.config.VerifierType, Map, Boolean, String)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final Map getCustomOverrides()
+  @org.jetbrains.annotations.NotNull public final String getMaximumHeapSize()
+  @org.jetbrains.annotations.Nullable public final net.corda.core.identity.CordaX500Name getProvidedName()
+  @org.jetbrains.annotations.NotNull public final List getRpcUsers()
+  @org.jetbrains.annotations.Nullable public final Boolean getStartInSameProcess()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.config.VerifierType getVerifierType()
+  public int hashCode()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.NodeParameters setCustomerOverrides(Map)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.NodeParameters setMaximumHeapSize(String)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.NodeParameters setProvidedName(net.corda.core.identity.CordaX500Name)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.NodeParameters setRpcUsers(List)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.NodeParameters setStartInSameProcess(Boolean)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.NodeParameters setVerifierType(net.corda.node.services.config.VerifierType)
+  public String toString()
+##
+public final class net.corda.testing.driver.NotaryHandle extends java.lang.Object
+  public <init>(net.corda.core.identity.Party, boolean, net.corda.core.concurrent.CordaFuture)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.Party component1()
+  public final boolean component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.concurrent.CordaFuture component3()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.NotaryHandle copy(net.corda.core.identity.Party, boolean, net.corda.core.concurrent.CordaFuture)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.Party getIdentity()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.concurrent.CordaFuture getNodeHandles()
+  public final boolean getValidating()
+  public int hashCode()
+  public String toString()
+##
+@net.corda.core.DoNotImplement public abstract class net.corda.testing.driver.PortAllocation extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public final net.corda.core.utilities.NetworkHostAndPort nextHostAndPort()
+  public abstract int nextPort()
+##
+public static final class net.corda.testing.driver.PortAllocation$Incremental extends net.corda.testing.driver.PortAllocation
+  public <init>(int)
+  @org.jetbrains.annotations.NotNull public final concurrent.atomic.AtomicInteger getPortCounter()
+  public int nextPort()
+##
+public static final class net.corda.testing.driver.PortAllocation$RandomFree extends net.corda.testing.driver.PortAllocation
+  public int nextPort()
+  public static final net.corda.testing.driver.PortAllocation$RandomFree INSTANCE
+##
+public final class net.corda.testing.driver.WebserverHandle extends java.lang.Object
+  public <init>(net.corda.core.utilities.NetworkHostAndPort, Process)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.utilities.NetworkHostAndPort component1()
+  @org.jetbrains.annotations.NotNull public final Process component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.driver.WebserverHandle copy(net.corda.core.utilities.NetworkHostAndPort, Process)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.utilities.NetworkHostAndPort getListenAddress()
+  @org.jetbrains.annotations.NotNull public final Process getProcess()
+  public int hashCode()
+  public String toString()
+##
+@net.corda.core.DoNotImplement public abstract class net.corda.testing.node.ClusterSpec extends java.lang.Object
+  public <init>()
+  public abstract int getClusterSize()
+##
+public static final class net.corda.testing.node.ClusterSpec$Raft extends net.corda.testing.node.ClusterSpec
+  public <init>(int)
+  public final int component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.ClusterSpec$Raft copy(int)
+  public boolean equals(Object)
+  public int getClusterSize()
+  public int hashCode()
+  public String toString()
+##
+@javax.annotation.concurrent.ThreadSafe public final class net.corda.testing.node.InMemoryMessagingNetwork extends net.corda.core.serialization.SingletonSerializeAsToken
+  public <init>(boolean, net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy, org.apache.activemq.artemis.utils.ReusableLatch)
+  @org.jetbrains.annotations.NotNull public synchronized final List getEndpoints()
+  @org.jetbrains.annotations.NotNull public final rx.Observable getReceivedMessages()
+  @org.jetbrains.annotations.NotNull public final rx.Observable getSentMessages()
+  @org.jetbrains.annotations.Nullable public final net.corda.testing.node.InMemoryMessagingNetwork$MessageTransfer pumpSend(boolean)
+  public final void stop()
+  public static final net.corda.testing.node.InMemoryMessagingNetwork$Companion Companion
+##
+public static final class net.corda.testing.node.InMemoryMessagingNetwork$Companion extends java.lang.Object
+##
+public static final class net.corda.testing.node.InMemoryMessagingNetwork$InMemoryMessage extends java.lang.Object implements net.corda.node.services.messaging.Message
+  public <init>(net.corda.node.services.messaging.TopicSession, byte[], UUID, java.time.Instant)
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.messaging.TopicSession component1()
+  @org.jetbrains.annotations.NotNull public final byte[] component2()
+  @org.jetbrains.annotations.NotNull public final UUID component3()
+  @org.jetbrains.annotations.NotNull public final java.time.Instant component4()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.InMemoryMessagingNetwork$InMemoryMessage copy(net.corda.node.services.messaging.TopicSession, byte[], UUID, java.time.Instant)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public byte[] getData()
+  @org.jetbrains.annotations.NotNull public java.time.Instant getDebugTimestamp()
+  @org.jetbrains.annotations.NotNull public net.corda.node.services.messaging.TopicSession getTopicSession()
+  @org.jetbrains.annotations.NotNull public UUID getUniqueMessageId()
+  public int hashCode()
+  @org.jetbrains.annotations.NotNull public String toString()
+##
 public static interface net.corda.testing.node.InMemoryMessagingNetwork$LatencyCalculator
   @org.jetbrains.annotations.NotNull public abstract java.time.Duration between(net.corda.core.messaging.SingleMessageRecipient, net.corda.core.messaging.SingleMessageRecipient)
 ##
+@net.corda.core.serialization.CordaSerializable public static final class net.corda.testing.node.InMemoryMessagingNetwork$MessageTransfer extends java.lang.Object
+  public <init>(net.corda.testing.node.InMemoryMessagingNetwork$PeerHandle, net.corda.node.services.messaging.Message, net.corda.core.messaging.MessageRecipients)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.InMemoryMessagingNetwork$PeerHandle component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.messaging.Message component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.messaging.MessageRecipients component3()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.InMemoryMessagingNetwork$MessageTransfer copy(net.corda.testing.node.InMemoryMessagingNetwork$PeerHandle, net.corda.node.services.messaging.Message, net.corda.core.messaging.MessageRecipients)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.messaging.Message getMessage()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.messaging.MessageRecipients getRecipients()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.InMemoryMessagingNetwork$PeerHandle getSender()
+  public int hashCode()
+  @org.jetbrains.annotations.NotNull public String toString()
+##
+@net.corda.core.serialization.CordaSerializable public static final class net.corda.testing.node.InMemoryMessagingNetwork$PeerHandle extends java.lang.Object implements net.corda.core.messaging.SingleMessageRecipient
+  public <init>(int, net.corda.core.identity.CordaX500Name)
+  public final int component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.CordaX500Name component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.InMemoryMessagingNetwork$PeerHandle copy(int, net.corda.core.identity.CordaX500Name)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.CordaX500Name getDescription()
+  public final int getId()
+  public int hashCode()
+  @org.jetbrains.annotations.NotNull public String toString()
+##
+@net.corda.core.serialization.CordaSerializable public static final class net.corda.testing.node.InMemoryMessagingNetwork$ServiceHandle extends java.lang.Object implements net.corda.core.messaging.MessageRecipientGroup
+  public <init>(net.corda.core.identity.Party)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.Party component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.InMemoryMessagingNetwork$ServiceHandle copy(net.corda.core.identity.Party)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.Party getParty()
+  public int hashCode()
+  @org.jetbrains.annotations.NotNull public String toString()
+##
+@net.corda.core.DoNotImplement public abstract static class net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy extends java.lang.Object
+  public abstract Object pickNext(net.corda.testing.node.InMemoryMessagingNetwork$ServiceHandle, List)
+##
+public static final class net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy$Random extends net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy
+  public <init>()
+  public <init>(SplittableRandom)
+  @org.jetbrains.annotations.NotNull public final SplittableRandom getRandom()
+  public Object pickNext(net.corda.testing.node.InMemoryMessagingNetwork$ServiceHandle, List)
+##
+public static final class net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy$RoundRobin extends net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy
+  public <init>()
+  public Object pickNext(net.corda.testing.node.InMemoryMessagingNetwork$ServiceHandle, List)
+##
+@net.corda.core.DoNotImplement public static interface net.corda.testing.node.InMemoryMessagingNetwork$TestMessagingService extends net.corda.node.services.messaging.MessagingService
+  @org.jetbrains.annotations.Nullable public abstract net.corda.testing.node.InMemoryMessagingNetwork$MessageTransfer pumpReceive(boolean)
+  public abstract void stop()
+##
+public static final class net.corda.testing.node.InMemoryMessagingNetwork$pumpSend$$inlined$schedule$1 extends java.util.TimerTask
+  public <init>(net.corda.testing.node.InMemoryMessagingNetwork, net.corda.testing.node.InMemoryMessagingNetwork$MessageTransfer, net.corda.core.internal.concurrent.OpenFuture)
+  public void run()
+##
+public class net.corda.testing.node.MessagingServiceSpy extends java.lang.Object implements net.corda.node.services.messaging.MessagingService
+  public <init>(net.corda.node.services.messaging.MessagingService)
+  @org.jetbrains.annotations.NotNull public net.corda.node.services.messaging.MessageHandlerRegistration addMessageHandler(String, long, kotlin.jvm.functions.Function2)
+  @org.jetbrains.annotations.NotNull public net.corda.node.services.messaging.MessageHandlerRegistration addMessageHandler(net.corda.node.services.messaging.TopicSession, kotlin.jvm.functions.Function2)
+  public void cancelRedelivery(long)
+  @org.jetbrains.annotations.NotNull public net.corda.node.services.messaging.Message createMessage(net.corda.node.services.messaging.TopicSession, byte[], UUID)
+  @org.jetbrains.annotations.NotNull public net.corda.core.messaging.MessageRecipients getAddressOfParty(net.corda.core.node.services.PartyInfo)
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.messaging.MessagingService getMessagingService()
+  @org.jetbrains.annotations.NotNull public net.corda.core.messaging.SingleMessageRecipient getMyAddress()
+  public void removeMessageHandler(net.corda.node.services.messaging.MessageHandlerRegistration)
+  public void send(List, kotlin.jvm.functions.Function0)
+  public void send(net.corda.node.services.messaging.Message, net.corda.core.messaging.MessageRecipients, Long, Object, kotlin.jvm.functions.Function0)
+##
+public final class net.corda.testing.node.MockKeyManagementService extends net.corda.core.serialization.SingletonSerializeAsToken implements net.corda.core.node.services.KeyManagementService
+  @org.jetbrains.annotations.NotNull public Iterable filterMyKeys(Iterable)
+  @org.jetbrains.annotations.NotNull public java.security.PublicKey freshKey()
+  @org.jetbrains.annotations.NotNull public net.corda.core.identity.PartyAndCertificate freshKeyAndCert(net.corda.core.identity.PartyAndCertificate, boolean)
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.api.IdentityServiceInternal getIdentityService()
+  @org.jetbrains.annotations.NotNull public Set getKeys()
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.TransactionSignature sign(net.corda.core.crypto.SignableData, java.security.PublicKey)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.DigitalSignature$WithKey sign(byte[], java.security.PublicKey)
+##
+public class net.corda.testing.node.MockNetwork extends java.lang.Object
+  public <init>(List)
+  public <init>(List, net.corda.testing.node.MockNetworkParameters)
+  public <init>(List, net.corda.testing.node.MockNetworkParameters, boolean, boolean, net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy, kotlin.jvm.functions.Function1, boolean, List)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetwork$MockNode addressToNode(net.corda.core.messaging.MessageRecipients)
+  @org.jetbrains.annotations.NotNull public final java.nio.file.Path baseDirectory(int)
+  @org.jetbrains.annotations.NotNull public final net.corda.node.internal.StartedNode createNode(net.corda.testing.node.MockNodeParameters)
+  @org.jetbrains.annotations.NotNull public final net.corda.node.internal.StartedNode createNode(net.corda.testing.node.MockNodeParameters, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public final net.corda.node.internal.StartedNode createPartyNode()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.internal.StartedNode createPartyNode(net.corda.core.identity.CordaX500Name)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetwork$MockNode createUnstartedNode(net.corda.testing.node.MockNodeParameters)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetwork$MockNode createUnstartedNode(net.corda.testing.node.MockNodeParameters, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.Party getDefaultNotaryIdentity()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.PartyAndCertificate getDefaultNotaryIdentityAndCert()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.internal.StartedNode getDefaultNotaryNode()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.InMemoryMessagingNetwork getMessagingNetwork()
+  public final int getNextNodeId()
+  @org.jetbrains.annotations.NotNull public final List getNodes()
+  @org.jetbrains.annotations.NotNull public final List getNotaryNodes()
+  public final void runNetwork()
+  public final void runNetwork(int)
+  public final void startNodes()
+  public final void stopNodes()
+  public final void waitQuiescent()
+##
+public static class net.corda.testing.node.MockNetwork$MockNode extends net.corda.node.internal.AbstractNode
+  public <init>(net.corda.testing.node.MockNodeArgs)
+  protected int acceptableLiveFiberCountOnStop()
+  protected void checkNetworkMapIsInitialized()
+  public final void disableDBCloseOnStop()
+  @org.jetbrains.annotations.NotNull protected java.security.KeyPair generateKeyPair()
+  public final int getAcceptableLiveFiberCountOnStop()
+  @org.jetbrains.annotations.NotNull public final java.math.BigInteger getCounter()
+  public final int getId()
+  @org.jetbrains.annotations.NotNull protected org.slf4j.Logger getLog()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetwork getMockNet()
+  @org.jetbrains.annotations.NotNull protected rx.internal.schedulers.CachedThreadScheduler getRxIoScheduler()
+  @org.jetbrains.annotations.NotNull public List getSerializationWhitelists()
+  @org.jetbrains.annotations.NotNull protected net.corda.node.utilities.AffinityExecutor getServerThread()
+  @org.jetbrains.annotations.Nullable public net.corda.node.internal.StartedNode getStarted()
+  @org.jetbrains.annotations.NotNull public final List getTestSerializationWhitelists()
+  protected Object initialiseDatabasePersistence(net.corda.node.services.api.SchemaService, net.corda.core.node.services.IdentityService, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull protected net.corda.node.services.transactions.BFTSMaRt$Cluster makeBFTCluster(java.security.PublicKey, net.corda.node.services.config.BFTSMaRtConfiguration)
+  @org.jetbrains.annotations.NotNull protected net.corda.core.node.services.KeyManagementService makeKeyManagementService(net.corda.node.services.api.IdentityServiceInternal, Set)
+  @org.jetbrains.annotations.NotNull protected net.corda.node.services.messaging.MessagingService makeMessagingService(net.corda.nodeapi.internal.persistence.CordaPersistence, net.corda.core.node.NodeInfo)
+  @org.jetbrains.annotations.NotNull protected net.corda.node.services.transactions.InMemoryTransactionVerifierService makeTransactionVerifierService()
+  public final void manuallyCloseDB()
+  @org.jetbrains.annotations.NotNull protected List myAddresses()
+  public final void setAcceptableLiveFiberCountOnStop(int)
+  public final void setCounter(java.math.BigInteger)
+  public final void setMessagingServiceSpy(net.corda.testing.node.MessagingServiceSpy)
+  @org.jetbrains.annotations.NotNull public net.corda.node.internal.StartedNode start()
+  protected void startMessagingService(net.corda.core.messaging.RPCOps)
+  public void startShell(net.corda.core.messaging.CordaRPCOps)
+  public static final net.corda.testing.node.MockNetwork$MockNode$Companion Companion
+##
+public static final class net.corda.testing.node.MockNetwork$MockNode$Companion extends java.lang.Object
+##
+public static final class net.corda.testing.node.MockNetwork$MockNode$makeBFTCluster$1 extends java.lang.Object implements net.corda.node.services.transactions.BFTSMaRt$Cluster
+  public void waitUntilAllReplicasHaveInitialized()
+##
+public static final class net.corda.testing.node.MockNetwork$NotarySpec extends java.lang.Object
+  public <init>(net.corda.core.identity.CordaX500Name)
+  public <init>(net.corda.core.identity.CordaX500Name, boolean)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.CordaX500Name component1()
+  public final boolean component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetwork$NotarySpec copy(net.corda.core.identity.CordaX500Name, boolean)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.CordaX500Name getName()
+  public final boolean getValidating()
+  public int hashCode()
+  public String toString()
+##
+public static final class net.corda.testing.node.MockNetwork$sharedServerThread$1 extends net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor
+  public boolean awaitTermination(long, concurrent.TimeUnit)
+  public void shutdown()
+##
+public final class net.corda.testing.node.MockNetworkParameters extends java.lang.Object
+  public <init>()
+  public <init>(boolean, boolean, net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy, kotlin.jvm.functions.Function1, boolean, List)
+  public final boolean component1()
+  public final boolean component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy component3()
+  @org.jetbrains.annotations.NotNull public final kotlin.jvm.functions.Function1 component4()
+  public final boolean component5()
+  @org.jetbrains.annotations.NotNull public final List component6()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetworkParameters copy(boolean, boolean, net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy, kotlin.jvm.functions.Function1, boolean, List)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final kotlin.jvm.functions.Function1 getDefaultFactory()
+  public final boolean getInitialiseSerialization()
+  public final boolean getNetworkSendManuallyPumped()
+  @org.jetbrains.annotations.NotNull public final List getNotarySpecs()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy getServicePeerAllocationStrategy()
+  public final boolean getThreadPerNode()
+  public int hashCode()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetworkParameters setDefaultFactory(kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetworkParameters setInitialiseSerialization(boolean)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetworkParameters setNetworkSendManuallyPumped(boolean)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetworkParameters setNotarySpecs(List)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetworkParameters setServicePeerAllocationStrategy(net.corda.testing.node.InMemoryMessagingNetwork$ServicePeerAllocationStrategy)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetworkParameters setThreadPerNode(boolean)
+  public String toString()
+##
+public final class net.corda.testing.node.MockNodeArgs extends java.lang.Object
+  public <init>(net.corda.node.services.config.NodeConfiguration, net.corda.testing.node.MockNetwork, int, java.math.BigInteger, net.corda.node.VersionInfo)
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.config.NodeConfiguration component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetwork component2()
+  public final int component3()
+  @org.jetbrains.annotations.NotNull public final java.math.BigInteger component4()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.VersionInfo component5()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNodeArgs copy(net.corda.node.services.config.NodeConfiguration, net.corda.testing.node.MockNetwork, int, java.math.BigInteger, net.corda.node.VersionInfo)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.config.NodeConfiguration getConfig()
+  @org.jetbrains.annotations.NotNull public final java.math.BigInteger getEntropyRoot()
+  public final int getId()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNetwork getNetwork()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.VersionInfo getVersion()
+  public int hashCode()
+  public String toString()
+##
+public final class net.corda.testing.node.MockNodeKt extends java.lang.Object
+  @org.jetbrains.annotations.Nullable public static final net.corda.testing.node.InMemoryMessagingNetwork$MessageTransfer pumpReceive(net.corda.node.internal.StartedNode, boolean)
+  public static final void setMessagingServiceSpy(net.corda.node.internal.StartedNode, net.corda.testing.node.MessagingServiceSpy)
+##
+@net.corda.core.DoNotImplement public abstract static class net.corda.testing.node.MockNodeKt$mockNodeConfiguration$AbstractNodeConfiguration extends java.lang.Object implements net.corda.node.services.config.NodeConfiguration
+  public <init>()
+  public long getAttachmentCacheBound()
+  public long getAttachmentContentCacheSizeBytes()
+  @org.jetbrains.annotations.NotNull public java.nio.file.Path getCertificatesDirectory()
+  public boolean getDetectPublicIp()
+  @org.jetbrains.annotations.NotNull public java.nio.file.Path getNodeKeystore()
+  @org.jetbrains.annotations.NotNull public java.nio.file.Path getSslKeystore()
+  public long getTransactionCacheSizeBytes()
+  @org.jetbrains.annotations.NotNull public java.nio.file.Path getTrustStoreFile()
+  public boolean getUseTestClock()
+  @org.jetbrains.annotations.NotNull public net.corda.nodeapi.internal.crypto.X509KeyStore loadNodeKeyStore(boolean)
+  @org.jetbrains.annotations.NotNull public net.corda.nodeapi.internal.crypto.X509KeyStore loadSslKeyStore(boolean)
+  @org.jetbrains.annotations.NotNull public net.corda.nodeapi.internal.crypto.X509KeyStore loadTrustStore(boolean)
+##
+public final class net.corda.testing.node.MockNodeParameters extends java.lang.Object
+  public <init>()
+  public <init>(Integer, net.corda.core.identity.CordaX500Name, java.math.BigInteger, kotlin.jvm.functions.Function1, net.corda.node.VersionInfo)
+  @org.jetbrains.annotations.Nullable public final Integer component1()
+  @org.jetbrains.annotations.Nullable public final net.corda.core.identity.CordaX500Name component2()
+  @org.jetbrains.annotations.NotNull public final java.math.BigInteger component3()
+  @org.jetbrains.annotations.NotNull public final kotlin.jvm.functions.Function1 component4()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.VersionInfo component5()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNodeParameters copy(Integer, net.corda.core.identity.CordaX500Name, java.math.BigInteger, kotlin.jvm.functions.Function1, net.corda.node.VersionInfo)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final kotlin.jvm.functions.Function1 getConfigOverrides()
+  @org.jetbrains.annotations.NotNull public final java.math.BigInteger getEntropyRoot()
+  @org.jetbrains.annotations.Nullable public final Integer getForcedID()
+  @org.jetbrains.annotations.Nullable public final net.corda.core.identity.CordaX500Name getLegalName()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.VersionInfo getVersion()
+  public int hashCode()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNodeParameters setConfigOverrides(kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNodeParameters setEntropyRoot(java.math.BigInteger)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNodeParameters setForcedID(Integer)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockNodeParameters setLegalName(net.corda.core.identity.CordaX500Name)
+  public String toString()
+##
+public class net.corda.testing.node.MockServices extends java.lang.Object implements net.corda.core.node.StateLoader, net.corda.core.node.ServiceHub
+  public <init>(List, net.corda.core.identity.CordaX500Name)
+  public <init>(List, net.corda.node.services.api.IdentityServiceInternal, net.corda.core.identity.CordaX500Name)
+  public <init>(net.corda.core.identity.CordaX500Name)
+  public <init>(net.corda.node.services.api.IdentityServiceInternal, net.corda.core.identity.CordaX500Name)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction addSignature(net.corda.core.transactions.SignedTransaction)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction addSignature(net.corda.core.transactions.SignedTransaction, java.security.PublicKey)
+  @org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializeAsToken cordaService(Class)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.TransactionSignature createSignature(net.corda.core.transactions.FilteredTransaction)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.TransactionSignature createSignature(net.corda.core.transactions.FilteredTransaction, java.security.PublicKey)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.TransactionSignature createSignature(net.corda.core.transactions.SignedTransaction)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.TransactionSignature createSignature(net.corda.core.transactions.SignedTransaction, java.security.PublicKey)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.services.MockAttachmentStorage getAttachments()
+  @org.jetbrains.annotations.NotNull public java.time.Clock getClock()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.ContractUpgradeService getContractUpgradeService()
+  @org.jetbrains.annotations.NotNull public net.corda.core.cordapp.CordappProvider getCordappProvider()
+  @org.jetbrains.annotations.NotNull public final com.google.common.collect.MutableClassToInstanceMap getCordappServices()
+  @org.jetbrains.annotations.NotNull public net.corda.node.services.api.IdentityServiceInternal getIdentityService()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.KeyManagementService getKeyManagementService()
+  @org.jetbrains.annotations.NotNull public static final net.corda.node.VersionInfo getMOCK_VERSION_INFO()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.services.MockCordappProvider getMockCordappProvider()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.NodeInfo getMyInfo()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.NetworkMapCache getNetworkMapCache()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.TransactionVerifierService getTransactionVerifierService()
+  @org.jetbrains.annotations.NotNull public net.corda.node.services.api.WritableTransactionStorage getValidatedTransactions()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.VaultService getVaultService()
+  @org.jetbrains.annotations.NotNull public java.sql.Connection jdbcSession()
+  @org.jetbrains.annotations.NotNull public net.corda.core.contracts.TransactionState loadState(net.corda.core.contracts.StateRef)
+  @org.jetbrains.annotations.NotNull public Set loadStates(Set)
+  @kotlin.jvm.JvmStatic @org.jetbrains.annotations.NotNull public static final Properties makeTestDataSourceProperties(String)
+  public void recordTransactions(Iterable)
+  public void recordTransactions(net.corda.core.node.StatesToRecord, Iterable)
+  public void recordTransactions(boolean, Iterable)
+  @org.jetbrains.annotations.NotNull public Void registerUnloadHandler(kotlin.jvm.functions.Function0)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction signInitialTransaction(net.corda.core.transactions.TransactionBuilder)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction signInitialTransaction(net.corda.core.transactions.TransactionBuilder, Iterable)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction signInitialTransaction(net.corda.core.transactions.TransactionBuilder, java.security.PublicKey)
+  @org.jetbrains.annotations.NotNull public net.corda.core.contracts.StateAndRef toStateAndRef(net.corda.core.contracts.StateRef)
+  public static final net.corda.testing.node.MockServices$Companion Companion
+##
+public static final class net.corda.testing.node.MockServices$Companion extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public final net.corda.node.VersionInfo getMOCK_VERSION_INFO()
+  @kotlin.jvm.JvmStatic @org.jetbrains.annotations.NotNull public final Properties makeTestDataSourceProperties(String)
+##
+public static final class net.corda.testing.node.MockServices$Companion$makeTestDatabaseAndMockServices$mockService$1$1 extends net.corda.testing.node.MockServices
+  @org.jetbrains.annotations.NotNull public net.corda.node.services.api.VaultServiceInternal getVaultService()
+  @org.jetbrains.annotations.NotNull public java.sql.Connection jdbcSession()
+  public void recordTransactions(net.corda.core.node.StatesToRecord, Iterable)
+##
+public final class net.corda.testing.node.MockServicesKt extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.serialization.SerializeAsToken createMockCordaService(net.corda.testing.node.MockServices, kotlin.jvm.functions.Function1)
+##
+public static final class net.corda.testing.node.MockServicesKt$createMockCordaService$MockAppServiceHubImpl extends java.lang.Object implements net.corda.core.node.AppServiceHub, net.corda.core.node.ServiceHub
+  public <init>(net.corda.testing.node.MockServices, net.corda.testing.node.MockServices, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction addSignature(net.corda.core.transactions.SignedTransaction)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction addSignature(net.corda.core.transactions.SignedTransaction, java.security.PublicKey)
+  @org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializeAsToken cordaService(Class)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.TransactionSignature createSignature(net.corda.core.transactions.FilteredTransaction)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.TransactionSignature createSignature(net.corda.core.transactions.FilteredTransaction, java.security.PublicKey)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.TransactionSignature createSignature(net.corda.core.transactions.SignedTransaction)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.TransactionSignature createSignature(net.corda.core.transactions.SignedTransaction, java.security.PublicKey)
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.AttachmentStorage getAttachments()
+  @org.jetbrains.annotations.NotNull public java.time.Clock getClock()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.ContractUpgradeService getContractUpgradeService()
+  @org.jetbrains.annotations.NotNull public net.corda.core.cordapp.CordappProvider getCordappProvider()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.IdentityService getIdentityService()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.KeyManagementService getKeyManagementService()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.NodeInfo getMyInfo()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.NetworkMapCache getNetworkMapCache()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.MockServices getServiceHub()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.serialization.SerializeAsToken getServiceInstance()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.TransactionVerifierService getTransactionVerifierService()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.TransactionStorage getValidatedTransactions()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.VaultService getVaultService()
+  @org.jetbrains.annotations.NotNull public java.sql.Connection jdbcSession()
+  @org.jetbrains.annotations.NotNull public net.corda.core.contracts.TransactionState loadState(net.corda.core.contracts.StateRef)
+  @org.jetbrains.annotations.NotNull public Set loadStates(Set)
+  public void recordTransactions(Iterable)
+  public void recordTransactions(net.corda.core.node.StatesToRecord, Iterable)
+  public void recordTransactions(boolean, Iterable)
+  public void registerUnloadHandler(kotlin.jvm.functions.Function0)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction signInitialTransaction(net.corda.core.transactions.TransactionBuilder)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction signInitialTransaction(net.corda.core.transactions.TransactionBuilder, Iterable)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.SignedTransaction signInitialTransaction(net.corda.core.transactions.TransactionBuilder, java.security.PublicKey)
+  @org.jetbrains.annotations.NotNull public net.corda.core.messaging.FlowHandle startFlow(net.corda.core.flows.FlowLogic)
+  @org.jetbrains.annotations.NotNull public net.corda.core.messaging.FlowProgressHandle startTrackedFlow(net.corda.core.flows.FlowLogic)
+  @org.jetbrains.annotations.NotNull public net.corda.core.contracts.StateAndRef toStateAndRef(net.corda.core.contracts.StateRef)
+##
+public class net.corda.testing.node.MockTransactionStorage extends net.corda.core.serialization.SingletonSerializeAsToken implements net.corda.node.services.api.WritableTransactionStorage
+  public <init>()
+  public boolean addTransaction(net.corda.core.transactions.SignedTransaction)
+  @org.jetbrains.annotations.Nullable public net.corda.core.transactions.SignedTransaction getTransaction(net.corda.core.crypto.SecureHash)
+  @org.jetbrains.annotations.NotNull public rx.Observable getUpdates()
+  @org.jetbrains.annotations.NotNull public net.corda.core.contracts.TransactionState loadState(net.corda.core.contracts.StateRef)
+  @org.jetbrains.annotations.NotNull public Set loadStates(Set)
+  @org.jetbrains.annotations.NotNull public net.corda.core.messaging.DataFeed track()
+##
+public final class net.corda.testing.node.NodeTestUtils extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public static final net.corda.testing.dsl.LedgerDSL ledger(net.corda.core.node.ServiceHub, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public static final net.corda.testing.dsl.LedgerDSL ledger(net.corda.core.node.ServiceHub, net.corda.core.identity.Party, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.context.InvocationContext newContext(net.corda.node.services.api.StartedNodeServices)
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.internal.FlowStateMachine startFlow(net.corda.node.services.api.StartedNodeServices, net.corda.core.flows.FlowLogic)
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.context.Actor testActor(net.corda.core.identity.CordaX500Name)
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.context.InvocationContext testContext(net.corda.core.identity.CordaX500Name)
+  @org.jetbrains.annotations.NotNull public static final net.corda.testing.dsl.LedgerDSL transaction(net.corda.core.node.ServiceHub, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public static final net.corda.testing.dsl.LedgerDSL transaction(net.corda.core.node.ServiceHub, net.corda.core.identity.Party, kotlin.jvm.functions.Function1)
+##
+public final class net.corda.testing.node.NotarySpec extends java.lang.Object
+  public <init>(net.corda.core.identity.CordaX500Name, boolean, List, net.corda.node.services.config.VerifierType, net.corda.testing.node.ClusterSpec)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.CordaX500Name component1()
+  public final boolean component2()
+  @org.jetbrains.annotations.NotNull public final List component3()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.config.VerifierType component4()
+  @org.jetbrains.annotations.Nullable public final net.corda.testing.node.ClusterSpec component5()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.NotarySpec copy(net.corda.core.identity.CordaX500Name, boolean, List, net.corda.node.services.config.VerifierType, net.corda.testing.node.ClusterSpec)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.Nullable public final net.corda.testing.node.ClusterSpec getCluster()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.CordaX500Name getName()
+  @org.jetbrains.annotations.NotNull public final List getRpcUsers()
+  public final boolean getValidating()
+  @org.jetbrains.annotations.NotNull public final net.corda.node.services.config.VerifierType getVerifierType()
+  public int hashCode()
+  public String toString()
+##
+@javax.annotation.concurrent.ThreadSafe public final class net.corda.testing.node.TestClock extends net.corda.node.internal.MutableClock
+  public <init>(java.time.Clock)
+  public synchronized final void advanceBy(java.time.Duration)
+  public synchronized final void setTo(java.time.Instant)
+##
+public final class net.corda.testing.node.User extends java.lang.Object
+  public <init>(String, String, Set)
+  @org.jetbrains.annotations.NotNull public final String component1()
+  @org.jetbrains.annotations.NotNull public final String component2()
+  @org.jetbrains.annotations.NotNull public final Set component3()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.node.User copy(String, String, Set)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final String getPassword()
+  @org.jetbrains.annotations.NotNull public final Set getPermissions()
+  @org.jetbrains.annotations.NotNull public final String getUsername()
+  public int hashCode()
+  public String toString()
+##
 public final class net.corda.client.rpc.CordaRPCClient extends java.lang.Object
   public <init>(net.corda.core.utilities.NetworkHostAndPort)
   public <init>(net.corda.core.utilities.NetworkHostAndPort, net.corda.client.rpc.CordaRPCClientConfiguration)
+  public <init>(net.corda.core.utilities.NetworkHostAndPort, net.corda.client.rpc.CordaRPCClientConfiguration, net.corda.nodeapi.internal.config.SSLConfiguration)
   @org.jetbrains.annotations.NotNull public final net.corda.client.rpc.CordaRPCConnection start(String, String)
   @org.jetbrains.annotations.NotNull public final net.corda.client.rpc.CordaRPCConnection start(String, String, net.corda.core.context.Trace, net.corda.core.context.Actor)
   public final Object use(String, String, kotlin.jvm.functions.Function1)
@@ -3572,3 +4242,463 @@ public @interface net.corda.client.rpc.RPCSinceVersion
 public final class net.corda.client.rpc.UtilsKt extends java.lang.Object
   public static final void notUsed(rx.Observable)
 ##
+public final class net.corda.testing.contracts.DummyContract extends java.lang.Object implements net.corda.core.contracts.Contract
+  public <init>()
+  public <init>(Object)
+  @org.jetbrains.annotations.Nullable public final Object component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.contracts.DummyContract copy(Object)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.Nullable public final Object getBlank()
+  @org.jetbrains.annotations.NotNull public final String getPROGRAM_ID()
+  public int hashCode()
+  @kotlin.jvm.JvmStatic @org.jetbrains.annotations.NotNull public static final net.corda.core.transactions.TransactionBuilder move(List, net.corda.core.identity.AbstractParty)
+  @kotlin.jvm.JvmStatic @org.jetbrains.annotations.NotNull public static final net.corda.core.transactions.TransactionBuilder move(net.corda.core.contracts.StateAndRef, net.corda.core.identity.AbstractParty)
+  public String toString()
+  public void verify(net.corda.core.transactions.LedgerTransaction)
+  public static final net.corda.testing.contracts.DummyContract$Companion Companion
+  @org.jetbrains.annotations.NotNull public static final String PROGRAM_ID = "net.corda.testing.contracts.DummyContract"
+##
+public static interface net.corda.testing.contracts.DummyContract$Commands extends net.corda.core.contracts.CommandData
+##
+public static final class net.corda.testing.contracts.DummyContract$Commands$Create extends net.corda.core.contracts.TypeOnlyCommandData implements net.corda.testing.contracts.DummyContract$Commands
+  public <init>()
+##
+public static final class net.corda.testing.contracts.DummyContract$Commands$Move extends net.corda.core.contracts.TypeOnlyCommandData implements net.corda.testing.contracts.DummyContract$Commands
+  public <init>()
+##
+public static final class net.corda.testing.contracts.DummyContract$Companion extends java.lang.Object
+  @kotlin.jvm.JvmStatic @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.TransactionBuilder move(List, net.corda.core.identity.AbstractParty)
+  @kotlin.jvm.JvmStatic @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.TransactionBuilder move(net.corda.core.contracts.StateAndRef, net.corda.core.identity.AbstractParty)
+##
+public static final class net.corda.testing.contracts.DummyContract$MultiOwnerState extends java.lang.Object implements net.corda.testing.contracts.DummyContract$State
+  public <init>(int, List)
+  public final int component1()
+  @org.jetbrains.annotations.NotNull public final List component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.contracts.DummyContract$MultiOwnerState copy(int, List)
+  public boolean equals(Object)
+  public int getMagicNumber()
+  @org.jetbrains.annotations.NotNull public final List getOwners()
+  @org.jetbrains.annotations.NotNull public List getParticipants()
+  public int hashCode()
+  public String toString()
+##
+public static final class net.corda.testing.contracts.DummyContract$SingleOwnerState extends java.lang.Object implements net.corda.testing.contracts.DummyContract$State, net.corda.core.contracts.OwnableState
+  public <init>(int, net.corda.core.identity.AbstractParty)
+  public final int component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.AbstractParty component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.contracts.DummyContract$SingleOwnerState copy(int, net.corda.core.identity.AbstractParty)
+  public boolean equals(Object)
+  public int getMagicNumber()
+  @org.jetbrains.annotations.NotNull public net.corda.core.identity.AbstractParty getOwner()
+  @org.jetbrains.annotations.NotNull public List getParticipants()
+  public int hashCode()
+  public String toString()
+  @org.jetbrains.annotations.NotNull public net.corda.core.contracts.CommandAndState withNewOwner(net.corda.core.identity.AbstractParty)
+##
+@net.corda.core.DoNotImplement public static interface net.corda.testing.contracts.DummyContract$State extends net.corda.core.contracts.ContractState
+  public abstract int getMagicNumber()
+##
+public final class net.corda.testing.contracts.DummyContractV2 extends java.lang.Object implements net.corda.core.contracts.UpgradedContract
+  public <init>()
+  @org.jetbrains.annotations.NotNull public String getLegacyContract()
+  @org.jetbrains.annotations.NotNull public net.corda.testing.contracts.DummyContractV2$State upgrade(net.corda.testing.contracts.DummyContract$State)
+  public void verify(net.corda.core.transactions.LedgerTransaction)
+  public static final net.corda.testing.contracts.DummyContractV2$Companion Companion
+  @org.jetbrains.annotations.NotNull public static final String PROGRAM_ID = "net.corda.testing.contracts.DummyContractV2"
+##
+public static interface net.corda.testing.contracts.DummyContractV2$Commands extends net.corda.core.contracts.CommandData
+##
+public static final class net.corda.testing.contracts.DummyContractV2$Commands$Create extends net.corda.core.contracts.TypeOnlyCommandData implements net.corda.testing.contracts.DummyContractV2$Commands
+  public <init>()
+##
+public static final class net.corda.testing.contracts.DummyContractV2$Commands$Move extends net.corda.core.contracts.TypeOnlyCommandData implements net.corda.testing.contracts.DummyContractV2$Commands
+  public <init>()
+##
+public static final class net.corda.testing.contracts.DummyContractV2$Companion extends java.lang.Object
+##
+public static final class net.corda.testing.contracts.DummyContractV2$State extends java.lang.Object implements net.corda.core.contracts.ContractState
+  public <init>(int, List)
+  public final int component1()
+  @org.jetbrains.annotations.NotNull public final List component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.contracts.DummyContractV2$State copy(int, List)
+  public boolean equals(Object)
+  public final int getMagicNumber()
+  @org.jetbrains.annotations.NotNull public final List getOwners()
+  @org.jetbrains.annotations.NotNull public List getParticipants()
+  public int hashCode()
+  public String toString()
+##
+public final class net.corda.testing.contracts.DummyState extends java.lang.Object implements net.corda.core.contracts.ContractState
+  public <init>()
+  public <init>(int)
+  public final int component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.contracts.DummyState copy(int)
+  public boolean equals(Object)
+  public final int getMagicNumber()
+  @org.jetbrains.annotations.NotNull public List getParticipants()
+  public int hashCode()
+  public String toString()
+##
+public final class net.corda.testing.core.DummyCommandData extends net.corda.core.contracts.TypeOnlyCommandData
+  public static final net.corda.testing.core.DummyCommandData INSTANCE
+##
+public final class net.corda.testing.core.Expect extends java.lang.Object
+  public <init>(Class, kotlin.jvm.functions.Function1, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public final Class component1()
+  @org.jetbrains.annotations.NotNull public final kotlin.jvm.functions.Function1 component2()
+  @org.jetbrains.annotations.NotNull public final kotlin.jvm.functions.Function1 component3()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.core.Expect copy(Class, kotlin.jvm.functions.Function1, kotlin.jvm.functions.Function1)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public final Class getClazz()
+  @org.jetbrains.annotations.NotNull public final kotlin.jvm.functions.Function1 getExpectClosure()
+  @org.jetbrains.annotations.NotNull public final kotlin.jvm.functions.Function1 getMatch()
+  public int hashCode()
+  public String toString()
+##
+@net.corda.core.DoNotImplement public abstract class net.corda.testing.core.ExpectCompose extends java.lang.Object
+##
+public static final class net.corda.testing.core.ExpectCompose$Parallel extends net.corda.testing.core.ExpectCompose
+  public <init>(List)
+  @org.jetbrains.annotations.NotNull public final List getParallel()
+##
+public static final class net.corda.testing.core.ExpectCompose$Sequential extends net.corda.testing.core.ExpectCompose
+  public <init>(List)
+  @org.jetbrains.annotations.NotNull public final List getSequence()
+##
+public static final class net.corda.testing.core.ExpectCompose$Single extends net.corda.testing.core.ExpectCompose
+  public <init>(net.corda.testing.core.Expect)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.core.Expect getExpect()
+##
+public static final class net.corda.testing.core.ExpectComposeState$Companion extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.core.ExpectComposeState fromExpectCompose(net.corda.testing.core.ExpectCompose)
+##
+public static final class net.corda.testing.core.ExpectComposeState$Finished extends net.corda.testing.core.ExpectComposeState
+  public <init>()
+  @org.jetbrains.annotations.NotNull public List getExpectedEvents()
+  @org.jetbrains.annotations.Nullable public Void nextState(Object)
+##
+public static final class net.corda.testing.core.ExpectComposeState$Parallel extends net.corda.testing.core.ExpectComposeState
+  public <init>(net.corda.testing.core.ExpectCompose$Parallel, List)
+  @org.jetbrains.annotations.NotNull public List getExpectedEvents()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.core.ExpectCompose$Parallel getParallel()
+  @org.jetbrains.annotations.NotNull public final List getStates()
+  @org.jetbrains.annotations.Nullable public kotlin.Pair nextState(Object)
+##
+public static final class net.corda.testing.core.ExpectComposeState$Sequential extends net.corda.testing.core.ExpectComposeState
+  public <init>(net.corda.testing.core.ExpectCompose$Sequential, int, net.corda.testing.core.ExpectComposeState)
+  @org.jetbrains.annotations.NotNull public List getExpectedEvents()
+  public final int getIndex()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.core.ExpectCompose$Sequential getSequential()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.core.ExpectComposeState getState()
+  @org.jetbrains.annotations.Nullable public kotlin.Pair nextState(Object)
+##
+public static final class net.corda.testing.core.ExpectComposeState$Single extends net.corda.testing.core.ExpectComposeState
+  public <init>(net.corda.testing.core.ExpectCompose$Single)
+  @org.jetbrains.annotations.NotNull public List getExpectedEvents()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.core.ExpectCompose$Single getSingle()
+  @org.jetbrains.annotations.Nullable public kotlin.Pair nextState(Object)
+##
+public final class net.corda.testing.core.ExpectKt extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public static final net.corda.testing.core.ExpectCompose expect(Class, kotlin.jvm.functions.Function1, kotlin.jvm.functions.Function1)
+  public static final void expectEvents(Iterable, boolean, kotlin.jvm.functions.Function0)
+  public static final void expectEvents(rx.Observable, boolean, kotlin.jvm.functions.Function0)
+  public static final void genericExpectEvents(Object, boolean, kotlin.jvm.functions.Function2, kotlin.jvm.functions.Function0)
+  @org.jetbrains.annotations.NotNull public static final net.corda.testing.core.ExpectCompose parallel(List)
+  @org.jetbrains.annotations.NotNull public static final net.corda.testing.core.ExpectCompose replicate(int, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public static final net.corda.testing.core.ExpectCompose sequence(List)
+##
+public static final class net.corda.testing.core.ExpectKt$expectEvents$1$lock$1 extends java.lang.Object
+##
+@net.corda.core.DoNotImplement public interface net.corda.testing.core.GlobalSerializationEnvironment extends net.corda.core.serialization.internal.SerializationEnvironment
+  public abstract void unset()
+##
+public final class net.corda.testing.core.SerializationEnvironmentRule extends java.lang.Object implements org.junit.rules.TestRule
+  public <init>()
+  public <init>(boolean)
+  @org.jetbrains.annotations.NotNull public org.junit.runners.model.Statement apply(org.junit.runners.model.Statement, org.junit.runner.Description)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.serialization.SerializationContext getCheckpointContext()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.serialization.SerializationFactory getSerializationFactory()
+  public static final net.corda.testing.core.SerializationEnvironmentRule$Companion Companion
+##
+public static final class net.corda.testing.core.SerializationEnvironmentRule$Companion extends java.lang.Object
+  public final Object run(String, kotlin.jvm.functions.Function1)
+##
+public static final class net.corda.testing.core.SerializationEnvironmentRule$apply$1 extends org.junit.runners.model.Statement
+  public void evaluate()
+##
+public final class net.corda.testing.core.SerializationTestHelpersKt extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public static final net.corda.testing.core.GlobalSerializationEnvironment setGlobalSerialization(boolean)
+##
+public static final class net.corda.testing.core.SerializationTestHelpersKt$createTestSerializationEnv$1 extends net.corda.core.serialization.internal.SerializationEnvironmentImpl
+  @org.jetbrains.annotations.NotNull public String toString()
+##
+public static final class net.corda.testing.core.SerializationTestHelpersKt$setGlobalSerialization$1 extends java.lang.Object implements net.corda.testing.core.GlobalSerializationEnvironment, net.corda.core.serialization.internal.SerializationEnvironment
+  @org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializationContext getCheckpointContext()
+  @org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializationContext getP2pContext()
+  @org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializationContext getRpcClientContext()
+  @org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializationContext getRpcServerContext()
+  @org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializationFactory getSerializationFactory()
+  @org.jetbrains.annotations.NotNull public net.corda.core.serialization.SerializationContext getStorageContext()
+  public void unset()
+##
+public final class net.corda.testing.core.TestConstants extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public static final net.corda.nodeapi.internal.crypto.CertificateAndKeyPair getDEV_INTERMEDIATE_CA()
+  @org.jetbrains.annotations.NotNull public static final net.corda.nodeapi.internal.crypto.CertificateAndKeyPair getDEV_ROOT_CA()
+  @kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name ALICE_NAME
+  @kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name BOB_NAME
+  @kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name BOC_NAME
+  @kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name CHARLIE_NAME
+  @kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name DUMMY_BANK_A_NAME
+  @kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name DUMMY_BANK_B_NAME
+  @kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name DUMMY_BANK_C_NAME
+  @kotlin.jvm.JvmField @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.CordaX500Name DUMMY_NOTARY_NAME
+  public static final int MAX_MESSAGE_SIZE = 10485760
+  @kotlin.jvm.JvmField public static final java.time.Instant TEST_TX_TIME
+##
+public final class net.corda.testing.core.TestIdentity extends java.lang.Object
+  public <init>(net.corda.core.identity.CordaX500Name)
+  public <init>(net.corda.core.identity.CordaX500Name, long)
+  public <init>(net.corda.core.identity.CordaX500Name, java.security.KeyPair)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.PartyAndCertificate getIdentity()
+  @org.jetbrains.annotations.NotNull public final java.security.KeyPair getKeyPair()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.CordaX500Name getName()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.identity.Party getParty()
+  @org.jetbrains.annotations.NotNull public final java.security.PublicKey getPublicKey()
+  public static final net.corda.testing.core.TestIdentity$Companion Companion
+##
+public static final class net.corda.testing.core.TestIdentity$Companion extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.core.TestIdentity fresh(String)
+##
+public final class net.corda.testing.core.TestUtils extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.Party chooseIdentity(net.corda.core.node.NodeInfo)
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.PartyAndCertificate chooseIdentityAndCert(net.corda.core.node.NodeInfo)
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.utilities.NetworkHostAndPort freeLocalHostAndPort()
+  public static final int freePort()
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.contracts.StateRef generateStateRef()
+  @org.jetbrains.annotations.NotNull public static final List getFreeLocalPorts(String, int)
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.PartyAndCertificate getTestPartyAndCertificate(net.corda.core.identity.CordaX500Name, java.security.PublicKey)
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.PartyAndCertificate getTestPartyAndCertificate(net.corda.core.identity.Party)
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.Party singleIdentity(net.corda.core.node.NodeInfo)
+  @org.jetbrains.annotations.NotNull public static final net.corda.core.identity.PartyAndCertificate singleIdentityAndCert(net.corda.core.node.NodeInfo)
+##
+public final class net.corda.testing.dsl.AttachmentResolutionException extends net.corda.core.flows.FlowException
+  public <init>(net.corda.core.crypto.SecureHash)
+##
+public final class net.corda.testing.dsl.DoubleSpentInputs extends net.corda.core.flows.FlowException
+  public <init>(List)
+##
+public final class net.corda.testing.dsl.DuplicateOutputLabel extends net.corda.core.flows.FlowException
+  public <init>(String)
+##
+@net.corda.core.DoNotImplement public abstract class net.corda.testing.dsl.EnforceVerifyOrFail extends java.lang.Object
+##
+public static final class net.corda.testing.dsl.EnforceVerifyOrFail$Token extends net.corda.testing.dsl.EnforceVerifyOrFail
+  public static final net.corda.testing.dsl.EnforceVerifyOrFail$Token INSTANCE
+##
+public final class net.corda.testing.dsl.LedgerDSL extends java.lang.Object implements net.corda.testing.dsl.LedgerDSLInterpreter
+  public <init>(net.corda.testing.dsl.LedgerDSLInterpreter, net.corda.core.identity.Party)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.WireTransaction _transaction(String, net.corda.core.transactions.TransactionBuilder, kotlin.jvm.functions.Function1)
+  public void _tweak(kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.WireTransaction _unverifiedTransaction(String, net.corda.core.transactions.TransactionBuilder, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.SecureHash attachment(java.io.InputStream)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail fails()
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail fails with(String)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail failsWith(String)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.dsl.LedgerDSLInterpreter getInterpreter()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.contracts.ContractState retrieveOutput(Class, String)
+  @org.jetbrains.annotations.NotNull public net.corda.core.contracts.StateAndRef retrieveOutputStateAndRef(Class, String)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.WireTransaction transaction(String, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.WireTransaction transaction(String, net.corda.core.transactions.TransactionBuilder, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.WireTransaction transaction(kotlin.jvm.functions.Function1)
+  public final void tweak(kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.WireTransaction unverifiedTransaction(String, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.WireTransaction unverifiedTransaction(String, net.corda.core.transactions.TransactionBuilder, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.WireTransaction unverifiedTransaction(kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail verifies()
+##
+@net.corda.core.DoNotImplement public interface net.corda.testing.dsl.LedgerDSLInterpreter extends net.corda.testing.dsl.OutputStateLookup, net.corda.testing.dsl.Verifies
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.transactions.WireTransaction _transaction(String, net.corda.core.transactions.TransactionBuilder, kotlin.jvm.functions.Function1)
+  public abstract void _tweak(kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.transactions.WireTransaction _unverifiedTransaction(String, net.corda.core.transactions.TransactionBuilder, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.crypto.SecureHash attachment(java.io.InputStream)
+##
+@net.corda.core.DoNotImplement public interface net.corda.testing.dsl.OutputStateLookup
+  @org.jetbrains.annotations.NotNull public abstract net.corda.core.contracts.StateAndRef retrieveOutputStateAndRef(Class, String)
+##
+public final class net.corda.testing.dsl.TestLedgerDSLInterpreter extends java.lang.Object implements net.corda.testing.dsl.LedgerDSLInterpreter
+  public <init>(net.corda.core.node.ServiceHub)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.WireTransaction _transaction(String, net.corda.core.transactions.TransactionBuilder, kotlin.jvm.functions.Function1)
+  public void _tweak(kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public net.corda.core.transactions.WireTransaction _unverifiedTransaction(String, net.corda.core.transactions.TransactionBuilder, kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.SecureHash attachment(java.io.InputStream)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.node.ServiceHub component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.dsl.TestLedgerDSLInterpreter copy(net.corda.core.node.ServiceHub, HashMap, HashMap, HashMap)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail fails()
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail fails with(String)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail failsWith(String)
+  @org.jetbrains.annotations.NotNull public final net.corda.core.node.ServiceHub getServices()
+  @org.jetbrains.annotations.NotNull public final List getTransactionsToVerify()
+  @org.jetbrains.annotations.NotNull public final List getTransactionsUnverified()
+  @org.jetbrains.annotations.NotNull public final List getWireTransactions()
+  public int hashCode()
+  @org.jetbrains.annotations.Nullable public final String outputToLabel(net.corda.core.contracts.ContractState)
+  @org.jetbrains.annotations.NotNull public net.corda.core.contracts.StateAndRef retrieveOutputStateAndRef(Class, String)
+  public String toString()
+  @org.jetbrains.annotations.Nullable public final String transactionName(net.corda.core.crypto.SecureHash)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail verifies()
+  public static final net.corda.testing.dsl.TestLedgerDSLInterpreter$Companion Companion
+##
+public static final class net.corda.testing.dsl.TestLedgerDSLInterpreter$Companion extends java.lang.Object
+##
+public static final class net.corda.testing.dsl.TestLedgerDSLInterpreter$TypeMismatch extends java.lang.Exception
+  public <init>(Class, Class)
+##
+public static final class net.corda.testing.dsl.TestLedgerDSLInterpreter$VerifiesFailed extends java.lang.Exception
+  public <init>(String, Throwable)
+##
+public static final class net.corda.testing.dsl.TestLedgerDSLInterpreter$WireTransactionWithLocation extends java.lang.Object
+  public <init>(String, net.corda.core.transactions.WireTransaction, String)
+  @org.jetbrains.annotations.Nullable public final String component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.WireTransaction component2()
+  @org.jetbrains.annotations.Nullable public final String component3()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.dsl.TestLedgerDSLInterpreter$WireTransactionWithLocation copy(String, net.corda.core.transactions.WireTransaction, String)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.Nullable public final String getLabel()
+  @org.jetbrains.annotations.Nullable public final String getLocation()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.WireTransaction getTransaction()
+  public int hashCode()
+  public String toString()
+##
+public final class net.corda.testing.dsl.TestTransactionDSLInterpreter extends java.lang.Object implements net.corda.testing.dsl.TransactionDSLInterpreter, net.corda.testing.dsl.OutputStateLookup
+  public <init>(net.corda.testing.dsl.TestLedgerDSLInterpreter, net.corda.core.transactions.TransactionBuilder)
+  public void _attachment(String)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail _tweak(kotlin.jvm.functions.Function1)
+  public void attachment(net.corda.core.crypto.SecureHash)
+  public void command(List, net.corda.core.contracts.CommandData)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.dsl.TestLedgerDSLInterpreter component1()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.TransactionBuilder component2()
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.dsl.TestTransactionDSLInterpreter copy(net.corda.testing.dsl.TestLedgerDSLInterpreter, net.corda.core.transactions.TransactionBuilder, HashMap)
+  public boolean equals(Object)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail fails()
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail fails with(String)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail failsWith(String)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.TestLedgerDSLInterpreter getLedgerInterpreter()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.node.ServicesForResolution getServices()
+  @org.jetbrains.annotations.NotNull public final net.corda.core.transactions.TransactionBuilder getTransactionBuilder()
+  public int hashCode()
+  public void input(net.corda.core.contracts.StateRef)
+  public void output(String, String, net.corda.core.identity.Party, Integer, net.corda.core.contracts.AttachmentConstraint, net.corda.core.contracts.ContractState)
+  @org.jetbrains.annotations.NotNull public net.corda.core.contracts.StateAndRef retrieveOutputStateAndRef(Class, String)
+  public void timeWindow(net.corda.core.contracts.TimeWindow)
+  public String toString()
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail verifies()
+##
+public static final class net.corda.testing.dsl.TestTransactionDSLInterpreter$services$1 extends java.lang.Object implements net.corda.core.node.ServicesForResolution
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.AttachmentStorage getAttachments()
+  @org.jetbrains.annotations.NotNull public net.corda.core.cordapp.CordappProvider getCordappProvider()
+  @org.jetbrains.annotations.NotNull public net.corda.core.node.services.IdentityService getIdentityService()
+  @org.jetbrains.annotations.NotNull public net.corda.core.contracts.TransactionState loadState(net.corda.core.contracts.StateRef)
+  @org.jetbrains.annotations.NotNull public Set loadStates(Set)
+##
+public final class net.corda.testing.dsl.TransactionDSL extends java.lang.Object implements net.corda.testing.dsl.TransactionDSLInterpreter
+  public <init>(net.corda.testing.dsl.TransactionDSLInterpreter, net.corda.core.identity.Party)
+  public void _attachment(String)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail _tweak(kotlin.jvm.functions.Function1)
+  public final void attachment(String)
+  public void attachment(net.corda.core.crypto.SecureHash)
+  public final void command(java.security.PublicKey, net.corda.core.contracts.CommandData)
+  public void command(List, net.corda.core.contracts.CommandData)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail fails()
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail fails with(String)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail failsWith(String)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.LedgerDSLInterpreter getLedgerInterpreter()
+  public final void input(String)
+  public final void input(String, net.corda.core.contracts.ContractState)
+  public void input(net.corda.core.contracts.StateRef)
+  public final void output(String, int, net.corda.core.contracts.ContractState)
+  public final void output(String, String, int, net.corda.core.contracts.ContractState)
+  public final void output(String, String, net.corda.core.contracts.ContractState)
+  public void output(String, String, net.corda.core.identity.Party, Integer, net.corda.core.contracts.AttachmentConstraint, net.corda.core.contracts.ContractState)
+  public final void output(String, String, net.corda.core.identity.Party, net.corda.core.contracts.ContractState)
+  public final void output(String, net.corda.core.contracts.ContractState)
+  public final void output(String, net.corda.core.identity.Party, net.corda.core.contracts.ContractState)
+  @org.jetbrains.annotations.NotNull public net.corda.core.contracts.StateAndRef retrieveOutputStateAndRef(Class, String)
+  public final void timeWindow(java.time.Instant)
+  public final void timeWindow(java.time.Instant, java.time.Duration)
+  public void timeWindow(net.corda.core.contracts.TimeWindow)
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.dsl.EnforceVerifyOrFail tweak(kotlin.jvm.functions.Function1)
+  @org.jetbrains.annotations.NotNull public net.corda.testing.dsl.EnforceVerifyOrFail verifies()
+##
+@net.corda.core.DoNotImplement public interface net.corda.testing.dsl.TransactionDSLInterpreter extends net.corda.testing.dsl.OutputStateLookup, net.corda.testing.dsl.Verifies
+  public abstract void _attachment(String)
+  @org.jetbrains.annotations.NotNull public abstract net.corda.testing.dsl.EnforceVerifyOrFail _tweak(kotlin.jvm.functions.Function1)
+  public abstract void attachment(net.corda.core.crypto.SecureHash)
+  public abstract void command(List, net.corda.core.contracts.CommandData)
+  @org.jetbrains.annotations.NotNull public abstract net.corda.testing.dsl.LedgerDSLInterpreter getLedgerInterpreter()
+  public abstract void input(net.corda.core.contracts.StateRef)
+  public abstract void output(String, String, net.corda.core.identity.Party, Integer, net.corda.core.contracts.AttachmentConstraint, net.corda.core.contracts.ContractState)
+  public abstract void timeWindow(net.corda.core.contracts.TimeWindow)
+##
+@net.corda.core.DoNotImplement public interface net.corda.testing.dsl.Verifies
+  @org.jetbrains.annotations.NotNull public abstract net.corda.testing.dsl.EnforceVerifyOrFail fails()
+  @org.jetbrains.annotations.NotNull public abstract net.corda.testing.dsl.EnforceVerifyOrFail fails with(String)
+  @org.jetbrains.annotations.NotNull public abstract net.corda.testing.dsl.EnforceVerifyOrFail failsWith(String)
+  @org.jetbrains.annotations.NotNull public abstract net.corda.testing.dsl.EnforceVerifyOrFail verifies()
+##
+public final class net.corda.testing.http.HttpApi extends java.lang.Object
+  public <init>(java.net.URL, com.fasterxml.jackson.databind.ObjectMapper)
+  @org.jetbrains.annotations.NotNull public final com.fasterxml.jackson.databind.ObjectMapper getMapper()
+  @org.jetbrains.annotations.NotNull public final java.net.URL getRoot()
+  public final void postJson(String, Object)
+  public final void postPlain(String, String)
+  public final void putJson(String, Object)
+  public static final net.corda.testing.http.HttpApi$Companion Companion
+##
+public static final class net.corda.testing.http.HttpApi$Companion extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public final net.corda.testing.http.HttpApi fromHostAndPort(net.corda.core.utilities.NetworkHostAndPort, String, String, com.fasterxml.jackson.databind.ObjectMapper)
+##
+public final class net.corda.testing.http.HttpUtils extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public final com.fasterxml.jackson.databind.ObjectMapper getDefaultMapper()
+  public final void postJson(java.net.URL, String)
+  public final void postPlain(java.net.URL, String)
+  public final void putJson(java.net.URL, String)
+  public static final net.corda.testing.http.HttpUtils INSTANCE
+##
+public final class net.corda.testing.services.FlowStackSnapshotFactoryImpl extends java.lang.Object implements net.corda.node.services.statemachine.FlowStackSnapshotFactory
+  public <init>()
+  @co.paralleluniverse.fibers.Suspendable @org.jetbrains.annotations.NotNull public net.corda.core.flows.FlowStackSnapshot getFlowStackSnapshot(Class)
+  public void persistAsJsonFile(Class, java.nio.file.Path, net.corda.core.flows.StateMachineRunId)
+##
+public static final class net.corda.testing.services.FlowStackSnapshotFactoryImpl$ThreadLocalIndex$Companion extends java.lang.Object
+  @org.jetbrains.annotations.NotNull public final ThreadLocal getCurrentIndex()
+##
+public static final class net.corda.testing.services.FlowStackSnapshotFactoryImpl$ThreadLocalIndex$Companion$currentIndex$1 extends java.lang.ThreadLocal
+  @org.jetbrains.annotations.NotNull protected Integer initialValue()
+##
+public final class net.corda.testing.services.FlowStackSnapshotKt extends java.lang.Object
+##
+public final class net.corda.testing.services.MockAttachmentStorage extends net.corda.core.serialization.SingletonSerializeAsToken implements net.corda.core.node.services.AttachmentStorage
+  public <init>()
+  @org.jetbrains.annotations.NotNull public final kotlin.Pair getAttachmentIdAndBytes(java.io.InputStream)
+  @org.jetbrains.annotations.NotNull public final HashMap getFiles()
+  public boolean hasAttachment(net.corda.core.crypto.SecureHash)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.SecureHash importAttachment(java.io.InputStream)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.SecureHash importAttachment(java.io.InputStream, String, String)
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.SecureHash importOrGetAttachment(java.io.InputStream)
+  @org.jetbrains.annotations.Nullable public net.corda.core.contracts.Attachment openAttachment(net.corda.core.crypto.SecureHash)
+  @org.jetbrains.annotations.NotNull public List queryAttachments(net.corda.core.node.services.vault.AttachmentQueryCriteria, net.corda.core.node.services.vault.AttachmentSort)
+  public static final net.corda.testing.services.MockAttachmentStorage$Companion Companion
+##
+public static final class net.corda.testing.services.MockAttachmentStorage$Companion extends java.lang.Object
+  public final byte[] getBytes(java.io.InputStream)
+##
+public static final class net.corda.testing.services.MockAttachmentStorage$openAttachment$1 extends net.corda.core.internal.AbstractAttachment
+  @org.jetbrains.annotations.NotNull public net.corda.core.crypto.SecureHash getId()
+##
+public final class net.corda.testing.services.MockCordappProvider extends net.corda.node.internal.cordapp.CordappProviderImpl
+  public <init>(net.corda.node.internal.cordapp.CordappLoader, net.corda.core.node.services.AttachmentStorage)
+  public final void addMockCordapp(String, net.corda.testing.services.MockAttachmentStorage)
+  @org.jetbrains.annotations.Nullable public net.corda.core.crypto.SecureHash getContractAttachmentID(String)
+  @org.jetbrains.annotations.NotNull public final List getCordappRegistry()
+##